notebook

都内でWEB系エンジニアやってます。

GitHub Actionsでスケジューリング

いつの間にかGitHub Actionsで(待望の!!!)スケジュールトリガーが設定できるようになったみたいです

GitHub Actions Changelog | GitHub Developer Guide

developer.github.com

Creating and cancelling a workflow | GitHub Developer Guide

developer.github.com

やってみます

f:id:swfz:20190721002057p:plain

scheduleという項目が選択できるようになっています

選んで設定するだけです

f:id:swfz:20190721002039p:plain

とりあえず適当なシェル実行するだけのアクションをつなげて待ってみます

  • .github/main.workflow
workflow "batch workflow" {
  on = "schedule(15,20 * * * *)"
  resolves = ["new-action"]
}

action "new-action" {
  uses = "actions/bin/sh@master"
  args = ["cat /github/workflow/event.json"]
}

しばらく待つと実行されました

f:id:swfz:20190721002016p:plain

  • 実行ログ
.....
.....
.....
.....
Already have image (with digest): gcr.io/github-actions-images/action-runner:latest
Running 'cat /github/workflow/event.json'...
{"schedule":"15,20 * * * *"}Successfully ran 'cat /github/workflow/event.json'
### SUCCEEDED new-action 13:21:13Z (31.381s)

event.jsonの中身は{"schedule":"15,20 * * * *"}だけでした

対象ブランチについて

以前GitHub Actionsを試したときはブランチのフィルターは設定ではなく公式のアクションactions/bin/filterを作成して行う感じだったのでschedule workflowではどうなるのかなーと思いブランチを作ってpushしてみました

結果発火したのはmasterのみだったのでschedule workflowのアクションについてはmasterのソースでしか実行できない感じになるのかなと思われます

CircleCIではYAMLに書けばmaster以外のブランチのソースでもスケジュールトリガーを設定できるので使うかどうかは別として柔軟にコントロールできます

そもそも定期的に実行したいタスクで複数のブランチまたいで実行したいケースはあまりないと思うのでそんなに不便ではないと思いますが留意しておく必要はあるかなと思いました

おわり

スケジューリングができるようになったので幅が広がりますね

簡単なバッチだったりに重宝するかと思います

IssueやPullRequestを定期チェックして自動でなにかするみたいな処理を入れたい気持ちになっています

個人的には待ち望んでいた機能なので嬉しいです

早くOrganizationのリポジトリにも降りてきてほしい!!