Skip to content

ci(release): full coin x platform release matrix (release.yml)#75

Merged
frstrtr merged 2 commits into
masterfrom
ci-steward/release-matrix
Jun 11, 2026
Merged

ci(release): full coin x platform release matrix (release.yml)#75
frstrtr merged 2 commits into
masterfrom
ci-steward/release-matrix

Conversation

@frstrtr

@frstrtr frstrtr commented Jun 10, 2026

Copy link
Copy Markdown
Owner

Implements the V36 ship packaging matrix per integrator dispatch 2026-06-10.

What

New .github/workflows/release.yml: 5 coins (btc, ltc[+doge merged-mining aux], dgb, dash, bch) x 3 platforms (Linux x86_64, macOS arm64, Windows x86_64), per-coin archives + single SHA256SUMS, matching the v0.1.x-alpha asset shape.

Design

  • Per-coin gating: every cell gates on entrypoint presence (src/c2pool/main_<coin>.cpp + src/impl/<coin>, same corrected gate as coin-matrix.yml / PR ci(coin-matrix): fix BTC entrypoint gate (src/c2pool/main_<coin>.cpp) #66) and all matrices are fail-fast: false — a red btc never blocks ltc/dash/doge/dgb/bch packaging (the 3-of-4-ships decouple). On current master all cells no-op until each coin's main_.cpp split lands; they then activate automatically with no YAML change.
  • Triggers: v* tags + workflow_dispatch (full-matrix dry run from any ref). Intentionally NOT on pull_request — PR-time coverage stays in build.yml/coin-matrix.yml; this is 15 cells.
  • checksums job: if: always(), downloads whatever packages were produced, emits one SHA256SUMS; on tags creates a DRAFT release. CI never publishes — operator publishes manually.
  • Build/package steps are lifted verbatim from the proven build.yml (Linux conan/GCC13, macOS brew, Windows MSVC+conan+secp256k1) and coin-matrix.yml incantations, parameterized by coin.

Known follow-ups (flagged, not in this PR)

  • macOS universal (arm64+x86_64 lipo): needs x86_64 deps on the ARM runner (dual Conan profile cross-build). v1 ships the proven brew arm64 path; universal iteration lands on this workflow before tag time.
  • start.sh/start.bat invoke the legacy c2pool binary name; per-coin launcher args are a packaging follow-up.

Validation

  • YAML parses (PyYAML).
  • Full-matrix dry run via workflow_dispatch to be triggered once this lands on a ref where workflow_dispatch is registered (GitHub only exposes dispatch for workflows present on the default branch; until merge, cells can be exercised by pushing a dry tag like v0.0.0-dryrun if desired).

Merge is gated on operator push-approval — do not merge.

One workflow packages all five coin binaries (btc, ltc[+doge aux], dgb,
dash, bch) on Linux x86_64, macOS arm64 and Windows x86_64 at tag time,
emitting per-coin archives plus a single SHA256SUMS, matching the
v0.1.x-alpha release asset shape.

Each cell gates on entrypoint presence (src/c2pool/main_<coin>.cpp +
src/impl/<coin>, same gate as coin-matrix.yml) and all matrices are
fail-fast:false, so a red coin (e.g. btc pending the web_server retype)
never blocks the other coins from packaging.

Tags + workflow_dispatch only — PR-time coverage stays in
coin-matrix.yml. On tags the checksums job creates a DRAFT release;
publishing remains a manual operator action.

macOS universal (arm64+x86_64 lipo) is a flagged follow-up on this
workflow; v1 ships the proven brew arm64 path.
@frstrtr frstrtr force-pushed the ci-steward/release-matrix branch from c083e80 to f798abb Compare June 11, 2026 04:29
Operator decision 2026-06-11: ship universal macOS binaries instead of
arm64-only. Build each arch natively on its own runner (macos-14 -> arm64,
macos-13 -> x86_64) — no cross-compile, no dual Conan profile. A new
macos-universal job lipo-merges the per-arch binary and every bundled
dylib into a single universal package. Per-arch packages are intermediate
artifacts (intermediate-macos-*); only the universal pkg-macos-* ships and
feeds SHA256SUMS.
@frstrtr frstrtr merged commit 9469286 into master Jun 11, 2026
17 checks passed
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