ci/nightly: SHA-gate cron, publish dated nightly-* releases, BUILD_ID env#91
Merged
Merged
Conversation
… env
Mirror the OpenIPC/firmware nightly redesign (PRs #2111-#2129) to
builder. This commit is PR-Bld-A: the build.yml-side changes only.
Subsequent PRs add the manifest aggregator + retention sweep
(PR-Bld-B) and the build-one.yml commit input (PR-Bld-C).
Changes:
1. **Preflight SHA gate**. New `preflight` job reads `sha=` from the
rolling `nightly` release body. On schedule events it short-
circuits the matrix when HEAD matches the previously-published
SHA; PRs and workflow_dispatch always build. Mirrors firmware's
#2111.
2. **Three release tags per build**:
- `nightly-YYYYMMDD-<short>` (prerelease, content-addressable,
the unit of history — 90-day retention via PR-Bld-B's
cleanup.yml).
- `nightly` (rolling channel pointer; body carries sha/short/
built_at).
- `latest` (legacy alias, kept one cycle so existing sysupgrade
clients hitting the old hardcoded URL don't break).
3. **`BUILD_ID` / `BUILD_SHA` / `BUILD_PLATFORM` env** exported at
the job level from preflight outputs. firmware's rootfs_script.sh
(which builder.sh reuses via its clone of firmware) picks BUILD_ID
+ BUILD_SHA into /etc/os-release automatically. BUILD_PLATFORM is
set to the matrix entry (e.g. `gk7205v200_fpv_caddx-fly`) and is
forward-compatible with Phase 3 of the mirror plan (the firmware-
side rootfs_script.sh update that emits BUILD_PLATFORM as an
os-release field).
4. **Retry budget** around `bash builder.sh`. Matches firmware's
`30 60 120 300 600 1200` ladder, covering toolchain/CDN flakes
(#2115 + #2129 in firmware).
5. **Telegram caption** leads with `Build: <build_id>`; obsolete
`Tag: ${TAG_NAME}` line gone; workflow-level `env: TAG_NAME=
latest` removed.
No on-device firmware changes; builder cameras keep their existing
sysupgrade legacy URL until Phase 2 of the mirror (sysupgrade variant
routing) lands in OpenIPC/firmware.
See ~/.claude/plans/mirror-nightly-redesign-to-builder.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 23, 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
PR-Bld-A of three in the mirror of OpenIPC/firmware's nightly redesign (firmware-side PRs OpenIPC/firmware#2111-#2129). Touches only
master.yml; no on-device firmware changes.preflightjob readssha=from the rollingnightlyrelease body. Schedule events skip the matrix when HEAD matches; PRs andworkflow_dispatchalways build. Mirrors ci/nightly: SHA-gate cron, publish dated nightly-* releases, BUILD_ID in os-release firmware#2111.nightly-YYYYMMDD-<short>(prerelease, content-addressable, unit of history — 90-day retention via PR-Bld-B).nightly(rolling channel pointer, body carriessha/short/built_at).latest(legacy alias, kept one cycle so existing sysupgrade clients hitting the old hardcoded URL don't break).BUILD_ID/BUILD_SHA/BUILD_PLATFORMenv at the job level. firmware'srootfs_script.sh(reused bybuilder.shvia its clone of firmware) picksBUILD_ID/BUILD_SHAinto/etc/os-releaseautomatically.BUILD_PLATFORMis set to the matrix entry (e.g.gk7205v200_fpv_caddx-fly) and is forward-compatible with Phase 3 of the mirror (model-aware platform key).bash builder.sh—30 60 120 300 600 1200ladder, matches the firmware-side hardening that addressed transient toolchain/CDN flakes.Build: <build_id>. Workflow-levelenv: TAG_NAME: latestremoved.Subsequent PRs
manifest.yml,cleanup.yml,.github/scripts/enrich_manifest.py. Publishesmanifest.{json,flat}to agh-pagesbranch (one-time setup; mirrors firmware's athttps://openipc.github.io/builder/manifest.{json,flat}).build-one.ymllearns acommitinput + bisect tag namespace, mirroring ci/build-one: accept arbitrary commit input; publish to nightly-bisect-* tag firmware#2116.Test plan
workflow_dispatchproduces a datednightly-YYYYMMDD-<short>release with bothsha=andbuilt_at=in the body, and updates the rollingnightlyand legacylatest.Preflightjob appears, ~10s.Build: nightly-….See also
~/.claude/plans/mirror-nightly-redesign-to-builder.md(in the maintainer's local plan dir).🤖 Generated with Claude Code