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させることができると思います。