如何在GitHub Action中设置Cron Job实现每月第一个周四定时执行
解决方案
- 首先调整GitHub Action的定时触发规则:因为每月第一个周四一定落在当月1-7日范围内,所以先把schedule的cron表达式修改为
0 2 1-7 * *,仅在每月前7天的凌晨2点触发工作流,相比每日触发更节省资源。 - 新增日期校验步骤:在执行实际业务逻辑前,先判断当前日期是否为周四,不符合条件则直接终止工作流,不执行后续操作。
完整配置如下:
name: daily-cron-job on: schedule: # 每月1-7号凌晨2点触发(默认UTC时区,如需对应北京时间可调整小时字段,比如北京时间2点对应UTC前一天18点,可改为'0 18 31,1-6 * *'适配) - cron: '0 2 1-7 * *' jobs: cron: runs-on: ubuntu-latest steps: - name: 校验是否为当月第一个周四 id: check-date run: | # 周几数值为1-7,对应周一到周日,周四为4 if [ $(date +%u) -ne 4 ]; then echo "今天不是周四,终止任务" exit 1 fi - name: populate-previous-month # 仅上一步校验通过才执行当前步骤 if: success() run: | curl --request POST \ --url 'https://example.com' \ --header 'Authorization: Bearer ${{ secrets.ACTION_KEY }}'
注意:如果需要适配非UTC的自定义时区,除了调整cron参数外,也可以在日期校验步骤中先切换时区再进行判断,避免出现时间偏差。
内容的提问来源于stack exchange,提问作者K20GH
相关产品推荐
相关产品推荐

