【GitHub Actions】git diff の差分を高速に取得する方法
概要
GitHub Actions の CI/CD で git diff の差分を取得したいことがある。差分を取得するためにactions/checkout
のfetch-depth
を 0 に設定する方法が広く知られているが、これは全履歴を取得するため、リポジトリが大きい場合は時間がかかる。そこで、高速に差分を取得する方法を紹介する。
方法
結論としてactions/checkout
を 2 回実行する。diff を取りたい branch もしくは commit sha を指定してactions/checkout
を実行する。
| on:
pull_request:
jobs:
spell-check:
name: Faster git diff
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.base.sha }}
# diffをとるために2回repoをチェックアウトする
- uses: actions/checkout@v4
- name: Get diff
run: git diff --name-only --diff-filter=AM ${{ github.event.pull_request.base.sha }} HEAD
|
参考