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_targetworkflow_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を入れないといけません。 そのため、最初に条件分岐をするためだけのジョブを作り、後続のジョブの ifneedsoutputs を参照することで 条件文の記述を1回にしています。

stepの出力を後続stepから参照する場合は、echo "::set-output name=key::value 形式で参照できるようにしておく必要がありますが、 jobの出力を後続jobから参照する場合は、jobのoutputsneeds を使う必要があります。(ややこしい)

参考

【Github actions】DependabotのPull RequestでSecretsが参照できずワークフローがFailになった場合の対処 - Simple minds think alike

GitHub Actions でモノレポ上の変更があったプロジェクトだけテストを走らせる

GitHub ActionsでJobのOutputの値を後続Jobで参照する - notebook