Skip to content

ci/build-one: accept arbitrary commit input; publish to nightly-bisect-* tag#93

Merged
widgetii merged 1 commit into
masterfrom
ci/build-one-accepts-commit
May 23, 2026
Merged

ci/build-one: accept arbitrary commit input; publish to nightly-bisect-* tag#93
widgetii merged 1 commit into
masterfrom
ci/build-one-accepts-commit

Conversation

@widgetii

Copy link
Copy Markdown
Member

Summary

PR-Bld-C of three in the mirror of OpenIPC/firmware's nightly redesign. Mirrors OpenIPC/firmware#2116. Tiny CI-only change: build-one.yml gains an optional commit workflow_dispatch input, enabling git bisect run to drive sub-nightly granularity rebuilds.

What changes

  • New optional input commit: (SHA). When set, checkout pulls that ref.
  • New resolve job computes the upload tag once and threads it via job outputs:
    • With commit: nightly-bisect-<short> (deterministic per commit, prerelease)
    • Without commit: nightly-bisect-<short>-<UTC ts> (so repeated one-offs of the same HEAD don't collide).
  • Upload becomes prerelease with a structured body (sha=/short=/platform=/one_off=true).
  • Retry budget bumped to match PR-Bld-A (30 60 120 300 600 1200).
  • BUILD_ID / BUILD_SHA / BUILD_PLATFORM env at the build step (forward-compat with Phase 3 of the mirror plan).
  • Drops dead workflow-level env: TAG_NAME: latest.

Tag namespace separation

nightly-bisect-* is deliberately distinct from nightly-YYYYMMDD-<short> (the dated nightlies produced by master.yml after #91):

  • enrich_manifest.py (PR-Bld-B, ci/nightly: manifest aggregator + 90-build retention sweep #92) filters strictly on ^nightly-[0-9]{8}-[0-9a-f]{7}$, so nightly-bisect-* releases never enter manifest.{json,flat}.
  • cleanup.yml (PR-Bld-B) uses the same regex, so the 90-build retention sweep leaves them alone. One-off bisect builds persist until you delete them manually.

Use it

# Single platform, single commit:
gh workflow run build-one.yml -f platform=gk7205v200_fpv_caddx-fly -f commit=<sha>

Test plan

  • CI passes (YAML parse).
  • After merge, dispatch with platform=<x> -f commit=<sha> → builds that ref, publishes to nightly-bisect-<short> (deterministic).
  • Dispatch with platform=<x> and no commit → builds HEAD, publishes to nightly-bisect-<short>-<ts>.
  • After PR-Bld-A + PR-Bld-B both merge: verify dated nightly index on gh-pages is unchanged (no nightly-bisect-* entries in manifest.flat).

See also

🤖 Generated with Claude Code

…t-* tag

PR-Bld-C in the mirror of OpenIPC/firmware's nightly redesign.
Mirrors OpenIPC/firmware#2116. Adds an optional `commit` workflow_-
dispatch input to `build-one.yml` so:

  - `gh workflow run build-one.yml -f platform=X -f commit=<sha>`
    builds the given SHA from `git bisect run`.
  - Output goes to `nightly-bisect-<short>` (prerelease) tag, distinct
    from the dated `nightly-YYYYMMDD-<short>` namespace produced by
    PR-Bld-A's master.yml. The manifest aggregator's regex only
    indexes `^nightly-[0-9]{8}-[0-9a-f]{7}$`, so one-off bisect
    rebuilds never enter manifest.{json,flat}.
  - Without `commit`, falls back to building HEAD and tags as
    `nightly-bisect-<short>-<UTC ts>` so repeated dispatches of the
    same HEAD don't collide.

Also:
  - Retry budget around `bash builder.sh` matching master.yml +
    OpenIPC/firmware#2129's hardening.
  - BUILD_ID / BUILD_SHA / BUILD_PLATFORM env at the Build firmware
    step level (forward-compat with Phase 3 of the mirror plan).
  - Drops dead `env: TAG_NAME: latest` at workflow level.
  - Release body carries sha/short/platform/one_off=true for the
    aggregator's downstream consumers to easily distinguish bisect
    builds from dated nightlies.

See ~/.claude/plans/mirror-nightly-redesign-to-builder.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@widgetii widgetii merged commit c427c73 into master May 23, 2026
@widgetii widgetii deleted the ci/build-one-accepts-commit branch May 23, 2026 20:05
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