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 APIactions/workflows/<WORKFLOW_FILE>/dispatcheswith 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