github workflowでスケジュール設定する方法
このブログではアフィリエイト・アドセンス広告を利用しています
当ブログでは、アドセンス・アフィリエイト広告を掲載しています。
消費者庁が発表しているルールに沿って記事を作成していますが、問題のある表現を見つけた際にはご連絡ください。
設定しておけば、決まったスケジュールで繰り返し自動運転してくれるタスクスケジューラー「cron」ですが、いつも書き方を忘れてしまうのでメモしておきます。
目次(読みたいところへジャンプ!)
cronとは
cronとは、Linuxのタスクスケジューラーです。
決まった日時に指定した間隔で、プログラムを実行してくれます。
GitHub Actionsでできること
githubにもCI/CDツール「GitHub Actions」があります。
CI/CDツールのおかげで、テスト→ビルド→デプロイが自動化されるようになりました。
Github Actionsでは、実行したい処理と実行条件を定義したものを「workflow」と名付けています。workflowファイルはyaml言語で記述します(拡張子はyamlまたはyml)。
.githubフォルダ内にymlファイルを置いておくことで、コーディングの自動化が進みます。
まだ「フロントエンドエンジニアです」とは人様に言えない初心者レベルな私の場合ですが、現時点では次の3つのymlファイルを保存しています。
- deploy.yml:デプロイ自動実行のためのファイル
- fotmat.yml:プッシュ時にフォーマットチェックを行うためのファイル(VS Code拡張機能が自動生成)
- lint.yml:プッシュ時に構文チェックをするためのファイル(VS Code拡張機能が自動生成)
この3つの設定ファイルのおかげで、プッシュしたブランチのコードにエラーがないか、構文は正しいか自動でチェックしてくれます。
実際の画像はこちら。Lintエラーが発生しています。
「Details」をクリックすると、どこでエラーが発生しているのか確認できます。エラーファイルのパス・行・文字位置・エラー内容が一覧で表示されます。
今回のエラー内容は、宣言しているのに使われていない変数があるとの指摘だったので、スルーしようと思います(次回で対応するということで)
githubでcron指定する手順
deploy.ymlファイルでデプロイ自動実行とスケジュールを設定しています。cronの指定方法はLinuxと同じ書き方になります。
githubのスケジュール設定手順
- .github>workflowsフォルダ内にdeploy.ymlファイルを作成する
- deploy.ymlにスケジュール設定をする
deploy.ymlの設定内容
name | ワークフローの名前を付ける 付けた名前がgithub Actionsに表示されるのでわかりやすい名前がよい(※①) |
run-name | 省略可(指定したことがなくて使い方よくわからない) |
on | トリガーイベントの指定(schedule, push, pullなど) schedule(※②) workflow_dispatchを指定すると手動実行ボタンが表示される(※③) |
jobs | 実行内容や実行環境を指定 |
※①:github ActionsタブのAll workflowsにnameで指定した名前で表示されます。
「Deploy」というnameにしたため、Deployが並んでいます。
※②スケジュールの指定方法
設定値は左から、分・時・日・月・曜日の5つ。
分 | 0 ~ 59 |
時 | 0 ~ 23 |
日 | 1 ~ 31 |
月 | 1 ~ 12 or JAN~DEC |
曜日 | 0 ~ 6 or SUN~SAT |
UTC時刻のため、日本時間にするには-9時間を指定します。曜日や日付も9時間の時差を考慮して指定しましょう。
<設定例1>毎日17:03に実行する
on:
schedule:
- cron: '3 8 * * *'
<設定例2>毎週水曜日9:10, 18:10に実行する
on:
schedule:
- cron: '10 0,9 * * 3'
<設定例3>隔月10日3:15に実行する
on:
schedule:
- cron: '15 18 9 */2 *'
AWSで使える月末を指定できるワイルドカード「L」をGithub Actionsでは使用できないため、月末月初にスケジュールするのは今の私にはちょっと難易度高いです。そのようなスケジュールを組む予定もないので、またの機会に。
※③workflow_dispatchを指定しておくと、「Run workflow」ボタンが表示され、手動でも実行できるようになります。
最新情報はgithubヘルプを参照しておくのが安心です。
レンタルサーバーのエックスサーバーでもcron指定できます!
エックスサーバーならレンタルサーバーでも簡単にcronでのスケジュール設定ができます。
サーバーパネルのアカウント>cron設定で行います。
手動で決まったことを繰り返しているなら、cronを使ってみてください。
細かなところも操作性が簡単なので、たくさんのレンタルサーバーを渡り歩いてきましたが、エックスサーバーがいちばんのお気に入りです。