Skip to content

chore: release pipeline cleanup + GitHub Actions release workflow#6

Merged
xsoheilalizadeh merged 7 commits intomainfrom
chore/release-pipeline-cleanup
Apr 30, 2026
Merged

chore: release pipeline cleanup + GitHub Actions release workflow#6
xsoheilalizadeh merged 7 commits intomainfrom
chore/release-pipeline-cleanup

Conversation

@xsoheilalizadeh
Copy link
Copy Markdown
Contributor

@xsoheilalizadeh xsoheilalizadeh commented Apr 28, 2026

Removes the redundant local release scripts. The GitHub Actions workflow (.github/workflows/release.yml) is now the single release path — no local tooling required.

Changes

  • scripts/release.sh (411 lines) — deleted
  • scripts/bump-version.sh (45 lines) — deleted
  • scripts/test-release.sh (378 lines) — deleted; tested only the now-deleted scripts end-to-end
  • docs/RELEASING.md — rewritten to one path: edit Cargo.toml, commit, tag, push
  • o8v/tests/unit_release_pipeline.rs — updated two tests that used include_str! on the deleted scripts; they now read from the workflow file instead

Required GitHub Secrets

One-time setup in repo Settings → Secrets → Actions:

Secret What it is
MACOS_CERTIFICATE Base64 of your Developer ID Application .p12
MACOS_CERTIFICATE_PWD Password for the .p12
APPLE_API_KEY Base64 of the .p8 notarization API key
APPLE_KEY_ID The 10-char API key ID (from App Store Connect)
APPLE_ISSUER_ID The issuer UUID (from App Store Connect)

…enerate notes

- Removed wrangler from prereq check and the R2 upload block. Binaries
  are served from GitHub Releases only (signed + notarized + checksummed).
- Replaced `git add -A` with `git add Cargo.toml Cargo.lock` so the
  release commit only carries the version bump.
- Switched gh release create from --notes "Release vX.Y.Z" to
  --generate-notes for auto-categorized release notes from PR titles.
…all.sh

- scripts/test-release.sh: removed Test 5 (Changelog update) — the
  CHANGELOG.md sed step was deleted from release.sh in 5e5e2fd and
  the test was exercising nonexistent behavior. Updated header comment
  to reflect current test inventory.
- o8v/tests/unit_release_pipeline.rs: removed changelog_sed_preserves_unreleased_and_adds_version
  for the same reason.
- scripts/install.sh: added _8V_BASE_URL support (validate_base_url
  function + honored in get_version and download_binary) so the
  test-install.sh E2E test is no longer a silent lie. The env var
  is only accepted when set to https:// or http://localhost/127.0.0.1.
  All existing install E2E tests now exercise real install.sh code paths.
…ommitted binary

- .gitignore: removed .wrangler/ entry (wrangler was dropped in f68dedf,
  nothing in the repo uses it).
- .gitignore: added o8v/tests/fixtures/build-go/buildtest so the compiled
  Go artifact produced by `go build` during test runs is not accidentally
  committed again.
- git rm: removed the 2.4MB compiled buildtest binary that was committed;
  the Go build tests (e2e_build.rs, e2e_go.rs) build the binary at runtime
  via `go build`, confirmed passing after removal.
Tag push vX.Y.Z → CI builds all 4 binaries, signs + notarizes macOS,
generates checksums.txt, creates GitHub release with --generate-notes.

Platform matrix:
  - macos-latest  → darwin-arm64 (aarch64) + darwin-x64 (x86_64), native
  - ubuntu-latest → linux-x64 (musl) + linux-arm64 (musl) via cargo-zigbuild

Required GitHub Secrets (must be added before first use; see RELEASING.md):
  MACOS_CERTIFICATE     — base64-encoded Developer ID .p12 certificate
  MACOS_CERTIFICATE_PWD — password for the .p12
  APPLE_API_KEY         — base64-encoded App Store Connect .p8 API key
  APPLE_KEY_ID          — key ID (10-char string, e.g. ABCDE12345)
  APPLE_ISSUER_ID       — issuer UUID from App Store Connect

The workflow does NOT bump versions or commit — that remains the
local scripts/release.sh job. The workflow assumes the vX.Y.Z tag
was pushed manually after the version-bump commit landed on main.
Documents both paths: local scripts/release.sh and tag-triggered
.github/workflows/release.yml. Includes local prerequisites, required
GitHub Secrets (with how to encode them), versioning policy (semver),
and how release notes are generated from PR titles.
@xsoheilalizadeh xsoheilalizadeh added chore Refactor, cleanup, or infrastructure area/ci CI workflows and toolchain setup labels Apr 28, 2026
The GitHub Actions workflow (.github/workflows/release.yml) is the
only release path. The local scripts duplicated the workflow's logic
and drifted (R2/wrangler removal landed in working tree months ago,
never in commits, ran today's release with stale logic).

Versioning is now: edit Cargo.toml, commit, tag, push. The workflow
takes over.
@xsoheilalizadeh xsoheilalizadeh merged commit 0cc9a36 into main Apr 30, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci CI workflows and toolchain setup chore Refactor, cleanup, or infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant