GitHub Actionsがdependabotで発火した場合のみ挙動を変えたい
DependabotのPRを元に発火するGitHub Actionsはread-onlyなGITHUB_TOKEN
のみを扱うことができるため、step内で
Secretsを参照している場合はfailしてしまいます。
【Github actions】DependabotのPull RequestでSecretsが参照できずワークフローがFailになった場合の対処 - Simple minds think alike
failしていると煩わしいので、dependabotで発火した場合はそもそもジョブを実行しないようにするか pull_request_target
、workflow_run
を使うようにすると良さそうです。
今回はdependabotで発火した場合は、ジョブを実行しないようにするワークフローを例として残しておきます。
name: example on: push: jobs: verify-actor: runs-on: ubuntu-latest outputs: actor: ${{ steps.echo.outputs.actor }} steps: - name: echo actor id: echo run: | echo "::set-output name=actor::${{ github.actor }}" trigger_deploy: runs-on: ubuntu-latest needs: [verify-actor] if: needs.verify-actor.outputs.actor != 'dependabot[bot]' steps: - uses: actions/checkout@v2 - name: something run: | echo "hey"
一つのジョブ内で条件分岐をしようとすると、全てのstepにifを入れないといけません。
そのため、最初に条件分岐をするためだけのジョブを作り、後続のジョブの if
で needs
の outputs
を参照することで
条件文の記述を1回にしています。
stepの出力を後続stepから参照する場合は、echo "::set-output name=key::value
形式で参照できるようにしておく必要がありますが、
jobの出力を後続jobから参照する場合は、jobのoutputs
と needs
を使う必要があります。(ややこしい)
参考
【Github actions】DependabotのPull RequestでSecretsが参照できずワークフローがFailになった場合の対処 - Simple minds think alike