No scheduled runs created in a private Free repository: which read-only diagnostics distinguish trigger rejection from delay? #210401
Replies: 2 comments 2 replies
|
No user-visible surface records that a schedule event was generated or accepted. Schedule events don’t fire repo webhooks, they don’t appear in the Events API, and personal accounts have no audit log that records them. If no run object exists, no run ID, log or check-run exists either. So “never accepted” and “dropped/delayed” can’t be told apart directly. You can only eliminate the other causes. Read-only checks that eliminate the other causes Workflow validation. Open the workflow file in the web UI (blob/main/.github/workflows/.yml). A parse or validation error shows as a banner with a line number. Also check the Actions sidebar and GET /repos/{owner}/{repo}/actions/workflows/{id}: if the file failed to parse, name falls back to the file path instead of your name: value. Running actionlint locally is a good extra check. Note that a validation error on a schedule-only workflow produces no “workflow file issue” run, because that failed-run record is created for push-triggered workflows. The most valuable isolation test: push or dispatch in the same repo Add a trivial on: push workflow with the same marker job. If it runs, then Actions enablement, runner provisioning, minutes and account state are all healthy, and the fault is confined to the scheduler path. If it doesn’t run either, the problem is account or repo level, and the cron is a red herring. A second test needs no private details at all: a throwaway public repo with the same minimal schedule workflow. If that fires and the private repo doesn’t, the problem is specific to the private repo or its configuration. If neither fires, it points at the account, or at the scheduler for new schedules. Public repos use no paid minutes. The manual dispatch error It is the single most informative clue you can still recover, and one repeat is low-risk. Run it with GH_DEBUG=api gh workflow run --ref main, or use gh api -i / curl -i, and save the status code, the response body and the x-github-request-id header. Typical causes are a 422 (no workflow_dispatch trigger on that ref), a 403 (permissions or token scope) or a 404 (wrong workflow identifier). If the failure was a CLI-side error rather than an HTTP error, that also tells you something, and the request ID is what GitHub staff need to trace a request. Diagnostic route if it still can’t be distinguished This can’t be resolved from the repo side. The supported route is the GitHub Support contact form (support.github.com/contact), which Free accounts can use, under the Actions category. That lets you share identifiers privately instead of in public. Include: the workflow ID, the repo ID or node ID, and the account name Posting only the non-identifying results (as you’ve done here) in the Community thread is still useful for pattern-matching with similar reports, but it can’t replace the ticket. One caveat: even with everything healthy, GitHub documents that scheduled events can be delayed or dropped under load, and that is not distinguishable from a never-accepted event after the fact. Repeated absence across several different slots, with the push test passing, is the strongest evidence you can bring to Support. |
|
I'd separate the problem into two stages: whether GitHub creates the scheduled workflow run, and whether a created run waits in the runner queue. Check the workflow's registered state using: gh api repos/OWNER/REPO/actions/workflows \
--jq '.workflows[] | {name, path, state}'Also verify that the workflow file exists on the default branch and that the cron expression is valid. Next, inspect the workflow run history and compare the expected UTC schedule with the actual run-creation and start times. If no run is created, investigate the schedule configuration and workflow registration. If a run exists but starts late, investigate queueing and runner availability instead. Scheduled workflows can be delayed, so the cron expression alone doesn't guarantee execution at an exact minute. If this solves your issue, please mark this reply as the answer so other developers facing the same scheduling problem can find the solution! |
Uh oh!
There was an error while loading. Please reload this page.
🏷️ Discussion Type
Question
💬 Feature/Topic Area
Schedule & Cron Jobs
Discussion Details
I am investigating a scheduled GitHub Actions workflow in a private, personally owned repository on GitHub Free. I would appreciate a supported diagnostic route before scheduling another bounded test. Repository identities, source and application details are intentionally omitted.
What was verified during the test:
Important limitation: one manual workflow_dispatch diagnostic request returned a CLI operation error, but its original HTTP response detail was not retained. No run appeared afterwards. I cannot claim that manual dispatch works, identify its error code, or use it to isolate this as a scheduler-only fault. I have not repeated that request.
I have read the documented default-branch requirements and possible schedule delays/dropped events:
https://docs.github.com/en/actions/how-tos/troubleshoot-workflows
I also found the similar symptom in https://github.com/orgs/community/discussions/210399, but that report says manual runs work; that is not established in my case.
Which read-only checks or supported status/error surfaces can distinguish an event that was never accepted, an account/repository restriction, workflow validation failure and a delayed/dropped schedule when there is no run ID or log? If these cannot be distinguished from the repository side, what is the appropriate diagnostic route for a Free personal account without publishing private repository details or enabling paid usage?
I am not asking for a guaranteed cron delivery time or treating the symptom as proof of a platform-wide incident. Thank you.
All reactions