LoginSignup
1
0

Github Actionsで平日定期実行しているワークフローを祝日は停止するようにする

Posted at

GitHub Actionsのスケジュール実行を活用して、平日に定期実行させることはありませんか?
例えば下記のように設定すると、平日13:30に実行されます。

on:
  schedule:
    - cron: '30 04 * * 1-5' # 平日13:30 (JST)

ただし、上記スケジュールの場合、祝日は考慮されていないので、祝日に動かしたくない場合は祝日前に手動でワークフローを無効化する必要があります。

連休前に手動で無効化することで、もうすぐ祝日だなーと感じられることもあり、手動で無効化することを受け入れていたのですが、さすがに面倒になってきたので、このたび祝日には実行されないstepを挟み、手動運用をなくすことにしました。

祝日判定step

今回作成した祝日判定stepは下記の通りです。
調べたところ、様々な言語のライブラリに祝日判定はあるようなので、好きな言語のライブラリを利用すると良いと思います。
下記ではnodeを利用しました。actions/github-scriptで手軽にnodeが実行できるので便利です。
バージョンなどは執筆時点(2024/05/06)の最新版です。

      - uses: actions/setup-node@v4.0.2
        with:
          node-version: 20
      - run: npm install @holiday-jp/holiday_jp
      - uses: actions/github-script@v7.0.1
        with:
          script: |
            const holidayJp = require('@holiday-jp/holiday_jp');
            const today = new Date();
            console.log(today);
            if (holidayJp.isHoliday(today)) {
              throw new Error('祝日はSKIP');
            }

上記コードではstep内で例外を発生させてワークフローを異常終了させています。
もし異常終了ではなく、準正常のように扱いたいのであれば、stepsコンテキストなどを活用することで後続stepをSKIPさせることができると思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0