Skip to content

ci/nightly: SHA-gate cron, publish dated nightly-* releases, BUILD_ID env#91

Merged
widgetii merged 1 commit into
masterfrom
ci/nightly-preflight-and-dated-releases
May 23, 2026
Merged

ci/nightly: SHA-gate cron, publish dated nightly-* releases, BUILD_ID env#91
widgetii merged 1 commit into
masterfrom
ci/nightly-preflight-and-dated-releases

Conversation

@widgetii
Copy link
Copy Markdown
Member

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.

  • Preflight SHA gate — new preflight job reads sha= from the rolling nightly release body. Schedule events skip the matrix when HEAD matches; PRs and workflow_dispatch always build. Mirrors ci/nightly: SHA-gate cron, publish dated nightly-* releases, BUILD_ID in os-release firmware#2111.
  • Three release tags per build:
    • nightly-YYYYMMDD-<short> (prerelease, content-addressable, unit of history — 90-day retention via PR-Bld-B).
    • 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).
  • BUILD_ID / BUILD_SHA / BUILD_PLATFORM env at the job level. firmware's rootfs_script.sh (reused by builder.sh 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 (model-aware platform key).
  • Retry budget around bash builder.sh30 60 120 300 600 1200 ladder, matches the firmware-side hardening that addressed transient toolchain/CDN flakes.
  • Telegram caption leads with Build: <build_id>. Workflow-level env: TAG_NAME: latest removed.

Subsequent PRs

Test plan

  • CI on this PR passes the YAML parse.
  • After merge, manual workflow_dispatch produces a dated nightly-YYYYMMDD-<short> release with both sha= and built_at= in the body, and updates the rolling nightly and legacy latest.
  • Next scheduled cron with no new commits takes the skip branch — only Preflight job appears, ~10s.
  • Telegram caption on the next published build leads with Build: nightly-….

See also

🤖 Generated with Claude Code

… 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant