GitHub Actions の schedule で定期実行しているワークフローが、ある日から止まっていました。
cronの実行ユーザの仕様確認や実際の動作確認をしてみたのでそれをまとめます
そもそも何があったのか??
GitHub Actionsにて周次で動かしているバッチがあり、
それがある時期から毎回失敗していました
特に失敗通知等ないので、数週間経ってからメンバーが気づいて調査を開始しました
エラーの内容を確認
エラーの内容を保存し忘れたのですが、
雰囲気的には下記のようなメッセージだったと思います
Please verify your email address to run GitHub Actions workflows.
メアドの検証が通ってないからっぽく、
ワークフローの実行ユーザを見ると退職された方のアカウントになっており、
アカウントに紐づく社用のメールアドレスもおそらく削除されていたと思います
また、下記ドキュメントをみると、Organizationから削除されたユーザはスケジュール実行できなくなるという記載もあり、
退職に伴いOrganizationからも削除していたのでこちらも関係ありそうです
スケジュール実行のactorを変更するには?
おおよその理由がわかったのでactorを変更したのですが、どうしたらいいのでしょうか??
特定のリポジトリ イベントによって、ワークフローに関連付けられている actor が変更されます。
どのイベントかはあまり公開されてませんが、
- ワークフローファイルのcron式をコミットする
- スケジュール実行を再有効化する
などが特定のリポジトリイベントに該当し、
それを行なったユーザがスケジュール実行のactorになるみたいです
実際に試してみる
ドキュメントに記載のあった2つのイベントについて検証してみました
ワークフローファイルのcron式をコミットする
結果を表にまとめました
| # | 検証した状況 | commit したユーザ※ | PRをマージしたユーザ | 実行ユーザ(結果) |
|---|---|---|---|---|
| 1 | ユーザ Aだけで cron 式を変更した | ユーザ A | ユーザ A | ユーザ A |
| 2 | commit は共有アカウント、マージは作業者 | ユーザ A | ユーザ B | ユーザ B(マージしたユーザが実行ユーザになる) |
※ commit=デフォルトではないブランチへのcommitを指します
PRを挟むと最終コミットがPRをマージしたユーザになる点が注意点です
スケジュール実行を再有効化する
ユーザAでスケジュール実行しているワークフローを無効化して、
ユーザBで再有効化してみたところ、ユーザBで実行されるようになりました!
ワークフローの無効化/有効化はリポジトリに対してWrite以上の権限が必要になります
最後に
GitHubのスケジュール実行は動いてなくても特に通知があるわけではないので気づくのが難しいです
もし「昔からずっと動いてる定期実行ワークフロー」が手元にあるなら、実行ユーザが誰になっているか確認してみてください!