Skip missing upstream branches in scheduled build#382
Merged
Conversation
When a branch listed in branches.yaml doesn't exist on the upstream repository (e.g. geth/bal-devnet-7 before it lands), process_commits already detects it and skips writing a commit hash. The Docker Hub existence check and config-generation loop still iterated over those entries though, ended up querying for a malformed "<tag>-" image, found it "missing", and queued a build that immediately failed at actions/checkout. Every hourly cron then produced a red run and a Discord ping despite there being nothing actionable. Skip empty-hash configs in both loops. For the build-generation loop, emit a ::warning:: and a job-summary table so the missing branches are visible on the run page without failing the workflow. Self-healing: the moment the branch lands, the API returns a SHA and the next run builds it normally.
🤖 qu0b-reviewerThe PR is clean — the two guards (Docker Hub check loop and config-generation loop) correctly skip configs whose upstream ref Looks good. 🦋 Reviewed @ |
barnabasbusa
approved these changes
May 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The hourly Scheduled workflow has been failing on every run because
branches.yamllists branches that don't (yet) exist on the upstream repo — most recentlygeth/bal-devnet-7. Each failure also pings Discord, so the signal-to-noise on real breakages is poor.Root cause
process_commitsin.github/workflows/scheduled.ymlalready detects a missing upstream ref via the GitHub API and logs:…but the downstream loops still iterate over every config in
config.yaml. For the missing entry:COMMIT_HASHcomes back empty.ethpandaops/geth:bal-devnet-7-(trailing dash).actions/checkoutwithA branch or tag with the name 'bal-devnet-7' could not be found.Confirmed against the latest run (
gh run 26026938948).Fix
Two narrow changes inside the
checkjob:continuewhenCOMMIT_HASHis empty/null. Avoids wasted Docker Hub queries against malformed tags.::warning::annotation and a row appended to$GITHUB_STEP_SUMMARY(under a## Skipped builds (upstream ref missing)heading written once).The workflow stays green, the Discord notification step (
if: cancelled() || failure()) no longer fires for missing-branch noise, and every skipped branch is plainly visible on the run page.Self-healing
No state is persisted. The moment the branch is pushed upstream, the GitHub API returns a SHA on the next hourly cron →
COMMIT_HASHis non-empty → the skip branch isn't taken → Docker Hub reports the proper<tag>-<sha>image missing → the build runs and pushes normally. No manual intervention needed when the branch reappears.Test plan
gh workflow run scheduled.ymlafter merge.geth/bal-devnet-7is still missing upstream.::warning::annotation appears on the run page for the missing entry.Skipped builds (upstream ref missing)table listing the geth row (and any others).geth/master) still builds normally if its image is missing on Docker Hub.