fix(ci): stop superseded Docs Deployment runs from showing as cancelled - #42488
fix(ci): stop superseded Docs Deployment runs from showing as cancelled#42488rusackas wants to merge 2 commits into
Conversation
Bursty pushes to master can trigger several overlapping Docs Deployment attempts. The docs-deploy-asf-site concurrency group correctly serializes the actual builds (needed to avoid racing on the final push to superset-site), but every superseded attempt gets force-killed with a `cancelled` conclusion, which reads as a red/failing check on that commit even though nothing is actually broken. Add a check-freshness job that runs outside the concurrency group and compares its own commit against master's live tip. Superseded runs now skip cleanly instead of entering (and being cancelled out of) the serialized build-deploy job, so only genuine push races still rely on cancel-in-progress as a backstop.
|
Bito Automatic Review Skipped - Files Excluded |
sadpandajoe
left a comment
There was a problem hiding this comment.
One question about manual dispatch semantics.
|
The behavior change is intentional. The new .github/workflows/superset-docs-deploy.yml |
Manual dispatches are a deliberate one-off action to deploy a specific ref, not a race with other triggers, so the check-freshness comparison against master's tip shouldn't apply to them. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
✅ Deploy Preview for superset-docs-preview ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
SUMMARY
Master gets frequent, sometimes bursty pushes (dependency bumps, doc PRs, etc.), and each one that triggers
Python-Integrationalso fires aDocs Deploymentattempt. Thedocs-deploy-asf-siteconcurrency group correctly serializes the actual builds — this was added in #40030 because the deploy action pushes toapache/superset-sitewithout rebasing, so concurrent runs race on the final push. Butcancel-in-progress: trueforce-kills every superseded attempt with acancelledconclusion, and GitHub's commit list renders that as a red/failing check on that commit — even though nothing is actually broken and a later run does go on to deploy successfully.Under bursty conditions this can chain for an extended stretch: I observed one master commit rack up 12 cancelled
Docs Deploymentattempts in a row over about 80 minutes before one finally got through, painting a run of otherwise-green commits red the whole time.This PR splits the workflow so the "am I still relevant?" check happens before anything enters the serialized group:
check-freshnessjob runs for every trigger, outside the concurrency group, and just compares its own commit against master's live tip viagh api.build-deploynow also requiresneeds.check-freshness.outputs.is-current == 'true'. Superseded runs skip cleanly here (askippedconclusion, which doesn't redden the commit) instead of ever entering the concurrency group.docs-deploy-asf-siteconcurrency group (withcancel-in-progress: true) moves ontobuild-deployitself and stays as a backstop for the genuine push-race case, but should now rarely have more than one real contender to cancel.No change to deploy behavior or destination — docs still deploy from whichever run is building master's current tip.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
N/A (CI workflow change, no UI)
TESTING INSTRUCTIONS
pre-commit run --files .github/workflows/superset-docs-deploy.ymlpasses (including thezizmorGHA security audit).python3 -c "import yaml; yaml.safe_load(...)".workflow_run/concurrency semantics locally; recommend watching the next fewDocs Deploymentruns on master after merge to confirm superseded attempts now showskippedinstead ofcancelled, and that a deploy still lands onapache/superset-site(asf-sitebranch).ADDITIONAL INFORMATION