Read this in other languages: English, 日本語.
これは git diff
を取得するための GitHub Actions です。
Table of Contents
on: pull_request
name: CI
jobs:
eslint:
name: ESLint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 3
- uses: technote-space/get-diff-action@v1
id: git-diff
with:
PREFIX_FILTER: |
src
__tests__
SUFFIX_FILTER: .ts
- name: Install Package dependencies
run: yarn install
if: steps.git-diff.outputs.diff
- name: Check code style
# 差分があるソースコードだけチェック
run: yarn eslint ${{ steps.git-diff.outputs.diff }}
if: steps.git-diff.outputs.diff
以下のソースコードに差分がない場合、この Workflow はコードのスタイルチェックをスキップします。
src/**/*.ts
__tests__/**/*.ts
-
git diff
を取得git diff "${FROM}"${DOT}"${TO}" '--diff-filter=${DIFF_FILTER}' --name-only
例:(default)
FROM: 'origin/${GITHUB_BASE_REF}' TO: '${GITHUB_REF#refs/}' DOT: '...' DIFF_FILTER: 'AM'
=>
git diff "origin/${GITHUB_BASE_REF}"..."${GITHUB_REF#refs/}" '--diff-filter=AM' --name-only
=>
.github/workflows/ci.yml __tests__/utils/command.test.ts package.json src/main.ts src/utils/command.ts yarn.lock
-
PREFIX_FILTER
やSUFFIX_FILTER
オプションによるフィルタ例:
SUFFIX_FILTER: .ts PREFIX_FILTER: src/
=>
src/main.ts src/utils/command.ts
-
ABSOLUTE
オプションがtrue(default)の場合に絶対パスに変換例:(default)
/home/runner/work/my-repo-name/my-repo-name/src/main.ts /home/runner/work/my-repo-name/my-repo-name/src/utils/command.ts
-
SEPARATOR
オプションの値で結合例:
SEPARATOR: ' '
=>
/home/runner/work/my-repo-name/my-repo-name/src/main.ts /home/runner/work/my-repo-name/my-repo-name/src/utils/command.ts
差分のあるファイルの結果
もし SET_ENV_NAME
が設定されている場合、その名前で環境変数が設定されます。
default: SET_ENV_NAME=GIT_DIFF
差分のあるファイル数
もし SET_ENV_NAME_COUNT
が設定されている場合、その名前で環境変数が設定されます。
default: SET_ENV_NAME_COUNT=
追加された行数
もし SET_ENV_NAME_INSERTIONS
が設定されている場合、その名前で環境変数が設定されます。
default: SET_ENV_NAME_INSERTIONS=
削除された行数
もし SET_ENV_NAME_DELETIONS
が設定されている場合、その名前で環境変数が設定されます。
default: SET_ENV_NAME_DELETIONS=
追加された行数と削除された行数の和
もし SET_ENV_NAME_LINES
が設定されている場合、その名前で環境変数が設定されます。
default: SET_ENV_NAME_LINES=
eventName | action |
---|---|
pull_request | opened, reopened, rerequested, synchronize |
もしこれ以外のイベントで呼ばれた場合、結果は空になります。