Forked RepositoryからのPull Requestに対してCIが実行されないときの対処法

はじめに

個人開発しているChrome拡張のTabTabTabに最近コントリビューションしてもらえることが複数あった。GitHubのルールセットを使ってブランチの保護、マージ前のチェックリストや制限をちゃんと運用していこうと思って今さらながら設定をした。

しかし、Forked RepositoryからのPull Requestに対してワークフローが実行されない。実行されないのでマージもできない。公式のドキュメントもちゃんと読んで、Approval for running fork pull request workflows from contributorsの設定もちゃんとしたが動かない。ドキュメントには承認して実行のボタンが表示されると書いてあるが、何も表示されない。

そんなこんなでやっとワークフローを実行できたので記録を残しておく。

原因と対処法

原因はつまらないことだが、ワークフローの実行トリガーをpushだけにしていたせいだった。

on: push

考えてみれば当たり前なのだが、Forked RepositoryからのPull Requestは自分のRepository(Upstream Repository)へのプッシュではないのでこのワークフローは実行されない。今まではこれで運用していたし、それが当たり前だと思っていたので気づくのが遅れてしまった。

トリガーにpull_requestを追加して以下のように設定することで、ドキュメントの通りの挙動になった。

on:
  push:
    branches:
      - main
      - develop
  pull_request:

この設定で新しくPull Requestを出してもらうと、Approve and run workflowsのボタンが確かに表示され、これを押すとワークフローもちゃんと実行された。

Approve and run workflows

おわり

自分のようなポンコツはあまり世の中にいないのか、検索しても今回の対処法は見つけられなかった。この記事が自分と同じポンコツに届けば幸いである。

参考

関連記事