Migration Guide
Migrate from GitHub Actions Cron
No 15-minute drift. No CI minutes. Proper failure alerting.
Step by step
Find your scheduled workflows
Look for workflow files with "on: schedule:" triggers in your .github/workflows/ directory.
# .github/workflows/cleanup.yml
on:
schedule:
- cron: "0 * * * *"
jobs:
cleanup:
steps:
- run: curl -X POST https://myapp.com/api/cleanupIdentify the HTTP endpoint
For workflows that call an HTTP endpoint (via curl or actions/http-client), note the URL, method, and headers.
Expose application logic as HTTP endpoints
If your workflow runs application code directly, wrap it in an HTTP route on your deployed app.
// Express
app.post('/api/cleanup', authenticate, async (req, res) => {
await cleanupOldRecords();
res.json({ cleaned: true });
});Create JustRun jobs
Create a JustRun job for each workflow: same cron expression, HTTP endpoint URL, and any required auth headers. Use the CLI: npx @justrun/cli create.
Disable the GitHub Actions workflow
In each workflow file, remove the "schedule" trigger or add an "if: false" condition to disable it. Keep the workflow for manual/event-triggered runs if needed.
# Disable schedule trigger, keep manual trigger
on:
workflow_dispatch: {} # keep this for manual runs
# schedule: disabledSet up escalation policies
Configure multi-phase alerts in JustRun — notify Slack immediately, page PagerDuty after 5 minutes.
Common questions
How bad is GitHub Actions schedule drift?
During peak load, GitHub Actions schedule triggers can be delayed 15–60+ minutes. JustRun triggers within seconds of the scheduled time.
Can I still use GitHub Actions for CI/CD?
Yes — and you should. GitHub Actions is excellent for CI/CD. Just move the schedule triggers to JustRun, which is purpose-built for reliable scheduling.
What about workflows that need repo access?
Create an HTTP endpoint in your app that performs the action. For things that genuinely need repo access (commit, push), keep using GitHub Actions with a manual trigger or webhook.