GitHub Actionsの`synchronize`とは


はじめに

  • GitHub Enterprise Serverを使っているため、ソースURLはすべてGitHub Enterprise Serverのものとなっています。必要に応じてGitHub.comに切り替えてください。
  • 記事の結論は末尾「結論」を参照ください。

執筆の動機

GitHubでPRを発行したときにもワークフローが実行されたらなぁと思ったので調べてみました。

GitHub公式>アクティビティの種類もしくは設定を伴う複数のイベントを使用する例」によると、確かにPRを発行したときにワークフローを実行することができるようです。

そこで気になったのは、「PRを発行したソースブランチに対し追加コミットをした場合、その追加コミットをトリガーとしてワークフローを実行できるか」です。

GitHub公式>pull_requestに関するアクティビティタイプ」を参照すると、以下のようなことが書かれています。

デフォルトでは、ワークフローが実行されるのはpull_request のアクティビティタイプが opened、synchronize、または reopened の場合だけです。 他のアクティビティタイプについてもワークフローをトリガーするには、types キーワードを使用してください。

デフォルトでは、opened synchronize reopenedの場合はワークフローが実行されるとのことですが、それらが何を意味するのか知っておく必要があります。

基本的には用語の意味でなんとなくわかりますが、やはりソースを見ておきたいところです。
なかなか見つからなかったのですがようやく見つけたので共有します。

GitHub公式>Type」にて以下の記述がありました。

synchronize: Pull Requestが追跡しているブランチがPull Requestのソースブランチと同期されたときにトリガーされます。これは、ソースブランチが更新されたときに生じます。

ちなみに、opened reopenedについて詳しい説明は見つかりませんでしたが、openedはPRをオープンしたとき、reopenedはPRを(いったんクローズしてから)再度オープンしたときのことだと思われます。

結論

つまり、pull_requestイベントを用いると、デフォルト設定では、以下の時にワークフローが実行されます。

  • PRを発行したとき
  • 発行したPRのソースブランチに対するプッシュをしたとき
  • いったんクローズされたPRが再度オープンされたとき

また、以下もわかりました。

  • synchronizeは、「Pull Requestが追跡しているブランチがPull Requestのソースブランチと同期されたとき」を表す