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のスケジュール設定手順

    1. .github>workflowsフォルダ内にdeploy.ymlファイルを作成する
    2. 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が並んでいます。

    github actionsの実行一覧

    ※②スケジュールの指定方法
    設定値は左から、分・時・日・月・曜日の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ヘルプを参照しておくのが安心です。

    >>>GitHub Actions のワークフロー構文

    レンタルサーバーのエックスサーバーでもcron指定できます!

    エックスサーバーならレンタルサーバーでも簡単にcronでのスケジュール設定ができます。

    サーバーパネルのアカウント>cron設定で行います。

    手動で決まったことを繰り返しているなら、cronを使ってみてください。

    細かなところも操作性が簡単なので、たくさんのレンタルサーバーを渡り歩いてきましたが、エックスサーバーがいちばんのお気に入りです。

    同じカテゴリの関連記事リスト