3rd agent #11
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Dependabot が作成した PR のベース ブランチを deps へ振り替える。 | |
| # | |
| # <なぜ必要か> | |
| # Dependabot のセキュリティ アップデートは、既定ブランチ(develop)にしか | |
| # PR を出さない。dependabot.yml の target-branch はバージョン更新にしか | |
| # 効かないため、受けブランチへ向けるにはこの方法しかない。 | |
| # | |
| # <なぜ pull_request_target か> | |
| # Dependabot が起こしたイベントでは GITHUB_TOKEN が既定で read-only になり、 | |
| # base の書き換えができない。pull_request_target は read-write にできる。 | |
| # | |
| # <安全性> | |
| # pull_request_target は「ベース ブランチ側の定義」を書き込み権限付きで動かす。 | |
| # ここで PR のコードを checkout して実行すると、PR に任意のコードを書ける相手へ | |
| # 権限を渡すことになる(pwn request)。 | |
| # 本ワークフローは checkout を行わず、gh コマンドだけを実行する。 | |
| # 権限も pull-requests: write の 1 つだけに絞る。 | |
| name: Retarget Dependabot PRs to deps | |
| on: | |
| pull_request_target: | |
| types: [opened] | |
| permissions: | |
| pull-requests: write | |
| jobs: | |
| retarget: | |
| # develop 宛の Dependabot の PR だけを対象にする。 | |
| # base の判定を入れているのは、既に deps 宛のものを再度書き換えないため。 | |
| if: >- | |
| github.actor == 'dependabot[bot]' && | |
| github.event.pull_request.base.ref == 'develop' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Change base branch to deps | |
| # 値は env 経由で渡す。run: に ${{ }} を直接書くと、 | |
| # 値の内容がシェルのコマンドとして解釈される余地が残る。 | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| PR_NUMBER: ${{ github.event.pull_request.number }} | |
| REPO: ${{ github.repository }} | |
| run: gh pr edit "$PR_NUMBER" --repo "$REPO" --base deps |