01 / Promise
Name the outcome
The scheduled workflow produces the deploy, artifact, report, backup restore proof, or release outcome someone relies on.
GitHub Actions workflow monitoring
Operating spine
GitHub owns the CI run. Luota owns the operational promise that should be true after the CI wrapper finishes.
01 / Promise
The scheduled workflow produces the deploy, artifact, report, backup restore proof, or release outcome someone relies on.
02 / Signal
Send the Luota signal after the final meaningful step, with run id, commit SHA, artifact id, environment, and smoke result.
03 / Drill
Skip the final signal or fail the smoke/artifact step so Luota opens a workflow-outcome incident instead of trusting green CI.
04 / Incident
The incident should show GitHub run id, job, SHA, missing outcome, retry safety, owner, and runbook.
05 / Handoff
Route the owner back to the CI run, artifact, deploy, or restore path with durable operational evidence.
Example signal
Put Luota at the end of the workflow, not the beginning. A signal after the last meaningful step turns a green CI run into operational evidence.
name: nightly-report
on:
schedule:
- cron: "10 4 * * *"
jobs:
report:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: ./scripts/build-report.sh
- name: Tell Luota the customer report was produced
run: |
curl -fsS "$LUOTA_API_BASE/v1/ingest/workspaces/$LUOTA_WORKSPACE_ID/heartbeat" \
-H "Authorization: Bearer $LUOTA_WORKSPACE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"monitorId": "'"$LUOTA_MONITOR_ID"'",
"payload": {
"workflow": "nightly-report",
"run_id": "'"$GITHUB_RUN_ID"'",
"sha": "'"$GITHUB_SHA"'"
}
}'
The scheduled workflow starts, a shell step exits successfully, and GitHub marks the job green. The report never reaches storage, the deploy smoke is skipped, or the backup restore check never ran.
Attach GitHub run id, workflow name, job name, commit SHA, environment, artifact id, smoke result, and the operator-safe retry note. The incident should explain the missed outcome, not just link to a CI run.
Create one heartbeat monitor for simple scheduled workflows, or a run lifecycle monitor when start, finish, duration, and failure summary matter.
Add Luota workspace token, workspace id, and monitor id as GitHub Actions secrets.
Send the Luota signal after the real success condition: artifact uploaded, deploy smoke passed, report delivered, or restore drill completed.
Keep GitHub job logs, branch protection, artifact retention, and deploy checks. Luota adds the missing operational promise: did the workflow create the outcome someone relies on?
Need a concrete migration or monitoring pattern? Start with the docs, then adapt the payload to the evidence your operator needs.
Open integration docs