Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

Why our unattended publishing slot kept firing late

说明与用途

问题:GitHub Actions 定时任务因共享队列和高负载而延迟 55–65 分钟。解决方案:使用外部 HTTP 调度器触发 workflow_dispatch,将触发器移出 GitHub 的共享队列,从而降低漂移,但需要验证令牌并监控外部调度器。

问题

GitHub Actions scheduled jobs drifted 55–65 minutes late or failed to run, causing unattended publishing pipelines to miss their intended times.

结果

The external scheduler approach reduces drift by moving the trigger outside GitHub’s shared queue, but introduces its own potential failures and requires monitoring of the dispatch call.

工作流

  • 1. Keep existing schedule: cron block as a fallback. 2. Create a curl command to POST to GitHub API actions/workflows/<WORKFLOW_FILE>/dispatches with required headers and branch ref. 3. Register the same request with a free external scheduler (e.g., cron-job.org) to run at the desired time. 4. Add a monitoring step to check the HTTP status of the dispatch call and alert on failures. 5. Verify the workflow runs on time; if external scheduler fails, the GitHub cron fallback still triggers the job (though late).

证据

Scheduled events can be delayed during periods of high loads of GitHub Actions workflow runs. High load times include the start of every hour. If the load is sufficiently high enough, some queued jobs may be dropped.

来源

In GitHub's own community forum, a GitHub staff member acknowledged that scheduled-job drift has been getting worse, with the drop rate up more than 30% over two months.

来源

The fix — use an event that isn't on that queue. schedule shares a queue with every other repo's scheduled jobs. workflow_dispatch runs on a different path with no such drift.

来源

  • 记录日期: 2026-09-06T18:52:33.056Z