GitHub Actionsで定期実行をしたいなと思っていたので調べてみたのですが単体では実現できなそうでした
ただ任意のタイミングでトリガーを発火させることはrepository_dispatchイベントを使えば可能なようです
Triggering a RepositoryDispatch webhook | GitHub Developer Guide developer.github.com
ドキュメントを見ると
curlでAPI叩けばOK!ってはなしですね
ということで試してみます
tokenの発行
https://github.com/settings/tokens
Settings > Developer settings > Personal access tokens
からAPI用のtokenを発行します
Actionの定義
とりあえずなにか動作させるだけなので簡単な設定をしてみます
- .github/main.workflow
workflow "repository-dispatch" { on = "repository_dispatch" resolves = ["shell"] } action "shell" { uses = "actions/bin/sh@master" args = ["cat /github/workflow/event.json"] }
repository_dispatchイベントをトリガーにしてshell
のアクションを実行します
shell
アクションではただ/github/workflow/event.json
をcatするだけです
API叩く
documentにしたがってAPIを叩いてみます
curl -XPOST -u "swfz:token" -H "Accept: application/vnd.github.everest-preview+json" -H "Content-Type: application/json" https://api.github.com/repos/swfz/gh-action-sample/dispatches --data '{"event_type": "custom.preview"}'
動きました
Running 'cat /github/workflow/event.json'... { "action":"custom.preview", "branch":"master", ...... ...... ...... }
event_type
のキーで渡した値がaction
の内容に渡ってくるみたいですね
キーの対応などまでは調べてないのですがここである程度自由度を保てそうな感じですね
おわり
任意のタイミングでActionを動かすことができるようになりました
既存のトリガーで実現できないものがある場合は今回の方法でトリガーが自由に設定できそうですね
やりようによっては定期実行とかも可能ですね
結局curlコマンドをGASなりサーバなりどこかにセットしないといけない。。。ということで今の所GitHubActionsで定期実行をやるメリットはなさそうに思えますが。。。w