Closed4
Github actionsでJob単位でのpathsフィルターを実現するpaths-filter@3 の挙動で気をつけること
という、jobsのそれぞれのjob毎に、pathsの変更検知フィルターを適用できるアクションがある。
この挙動を確認するために色々やったのでメモとして残す。
動作検証は下記で実行した
actionsの設定はこんな感じで
# tre
.
├── .github
│ └── workflows
│ └── paths_changes_woking.yml
├── folder-1
│ └── docs.md
├── folder-2
│ └── docs.md
└── folder-3
└── docs.md
こう。検証用なのでざっくりとする
個人的にハマったこととしては、公式のexampleではシンプルな設定を記載している。
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
src:
- 'src/**'
# run only if some file in 'src' folder was changed
- if: steps.changes.outputs.src == 'true'
run: ...
自分が検証したときは2点問題が発生した
-
if: steps.changes....
で制御すると、Unrecongnized named-value: 'step'
のエラーが出る - dorny/paths-filter@v3にて、outputsの定義を書かないと、変更を検知しても後続のジョブが動作しない
1の問題に関しては、if: steps.changes....
ではなく、needsを使って、if: needs.changes....
という形にすれば対応可能
2の問題に関しては、下記のようにちゃんとoutputsを定義して上げる必要がある
jobs:
changes:
+ outputs:
+ folder1: ${{ steps.changes.outputs.folder1 }}
+ folder2: ${{ steps.changes.outputs.folder2 }}
+ folder3: ${{ steps.changes.outputs.folder3 }}
runs-on: ubuntu-latest
steps:
これがないと差分があっても、後続ジョブのif時に値が正しく渡されない(当たり前だが)
このスクラップは4ヶ月前にクローズされました