如何在GitHub Actions中按澳标时间周四10:30执行Cron任务?
针对你的Cron定时任务与Workflow配置的解答
1. Cron时间的时区修正
GitHub Actions的定时任务默认使用UTC时间,而非澳大利亚本地时间。你需要把目标时间转换为UTC后再配置Cron规则:
- 澳东标准时间(AEST,非夏令时):比UTC早10小时,周四10:30对应UTC当天00:30,Cron表达式为
30 0 * * 4 - 澳东夏令时(AEDT):比UTC早11小时,周四10:30对应UTC周三23:30,Cron表达式为
30 23 * * 3
如果要兼容夏令时,直接同时配置两个规则即可,GitHub会自动匹配时间触发。
2. Workflow文件位置的注意点
.github/workflows/schedule.yml这个路径是合规的,但有个关键限制:GitHub的schedule定时任务只会读取仓库默认分支(通常是main/master)下的Workflow配置。你当前把文件放在cypress-schedule-test-ci-100分支,若该分支不是默认分支,定时任务不会自动触发。解决办法是将该文件合并到默认分支,或在默认分支中创建相同的Workflow文件。
3. 现有配置的优化建议
你当前配置里install和tests两个Job重复执行了依赖安装,完全没必要,既耗时又浪费资源。可以合并为单个Job,并通过缓存依赖提升效率:
name: Cypress E2E Tests on: schedule: # 兼容澳东夏令时/非夏令时的定时规则 - cron: "30 0 * * 4" - cron: "30 23 * * 3" env: CYPRESS_BOOKING_PASSWORD: ${{ secrets.CYPRESS_BOOKING_PASSWORD }} CYPRESS_BOOKING_FREE_USER_PASSWORD: ${{ secrets.CYPRESS_BOOKING_FREE_USER_PASSWORD }} jobs: tests: runs-on: ubuntu-22.04 steps: - name: 拉取代码 uses: actions/checkout@v4 # 建议使用最新版本,稳定性更好 - name: 缓存npm依赖 uses: actions/cache@v3 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - name: 安装依赖 uses: cypress-io/github-action@v6 # 采用最新版Cypress Action,功能更全面 with: runTests: false - name: 运行E2E测试 run: npm run cy:run -- --env grepTags="@MainUITests+-@Failing",ENV="qaserver" --browser chrome - name: 上传失败截图 uses: actions/upload-artifact@v4 if: failure() with: name: cypress-screenshots path: cypress/screenshots - name: 上传测试视频(无论成败) uses: actions/upload-artifact@v4 if: always() with: name: cypress-videos path: cypress/videos
内容的提问来源于stack exchange,提问作者soccerway
相关产品推荐
相关产品推荐

