Find out when a scheduled GitHub Actions workflow stops running.
GitHub turns off scheduled workflows in public repos after 60 days without activity, and delays or drops runs under load. Nothing fails, so nothing tells you. This action reports each run to Lateping: if a run doesn't report on schedule, or reports a failure, you get an alert.
-
Create a check at app.lateping.com with the same cron expression as your workflow, timezone
UTC. -
Save its ping URL as a repository secret named
LATEPING_URL:gh secret set LATEPING_URL --body "https://lateping.com/p/<check-id>"
-
Add the action as the last step of the job:
on: schedule: - cron: "17 2 * * *" jobs: backup: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: ./scripts/backup.sh - uses: lateping/ping@v1 if: always() with: url: ${{ secrets.LATEPING_URL }} status: ${{ job.status }}
if: always() makes the step run even when an earlier step failed. A successful job sends a
success ping; a failed or cancelled job sends /fail, which alerts within a minute. If the
workflow never runs at all, no ping arrives and the check alerts after its grace period.
Add a start ping as the first step. Lateping records how long each run took (run analytics are on Pro and above).
- uses: lateping/ping@v1
with:
url: ${{ secrets.LATEPING_URL }}
status: startTo report one command rather than the whole job, pass its exit code. 0 is a success; anything
else is a failure, and the alert shows the code.
- id: backup
run: ./scripts/backup.sh; echo "code=$?" >> "$GITHUB_OUTPUT"
- uses: lateping/ping@v1
with:
url: ${{ secrets.LATEPING_URL }}
status: ${{ steps.backup.outputs.code }}| Input | Default | |
|---|---|---|
url |
required | The check's ping URL. Keep it in a secret. |
status |
success |
start, success, ${{ job.status }} (success, failure, cancelled), or an exit code 0 to 255. |
fail-on-error |
false |
Fail this step if the ping can't be sent. Off by default, so monitoring never breaks your job. |
The step outputs signal: start, success or fail.
One curl call: POST to the ping URL, /start, /fail or /<exit code>, with a 10 second timeout and three
retries. No dependencies, no data beyond the request itself, and the URL is never printed to the
log. Guide: GitHub Actions scheduled workflow not running.
MIT. See LICENSE.