Run a GitHub Actions workflow every 30 seconds
GitHub Actions has no exact expression for “Every 30 seconds”. Here is why, a workaround, and the platforms that can do it. GitHub Actions takes POSIX cron in on.schedule and runs it on the default branch, in UTC unless the entry sets a time zone.
Why GitHub Actions can’t do this exactly
Defined on Quartz as */30 * * * * ? · “Every 30 seconds”
second: GitHub Actions has no seconds field, so it cannot run at seconds other than 0.
WorkaroundRun every minute and repeat inside the job with sleep, or use a scheduler that has seconds (Spring, Quartz, a systemd timer).
GitHub Actions gotchas
FAQ
What is the GitHub Actions cron expression for “Every 30 seconds”?
There is none that matches exactly. GitHub Actions has no seconds field, so it cannot run at seconds other than 0.
Which time zone does a GitHub Actions schedule use?
In UTC by default. Add timezone: with an IANA name, such as Asia/Tokyo, next to cron: in the schedule entry.
Can GitHub Actions run every minute?
No. The documented minimum is every 5 minutes. For tighter intervals, trigger the workflow from outside with workflow_dispatch or repository_dispatch.
Does GitHub Actions support @hourly or @daily?
No. GitHub does not support @yearly, @monthly, @weekly, @daily, @hourly or @reboot. Use the five fields.