Skip to content

ci: de-conflict release.yml from RC tags + document RC pre-release channel (MCP-1012)#582

Open
Dumbris wants to merge 1 commit into
mainfrom
ci/rc-deconflict-mcp-1012
Open

ci: de-conflict release.yml from RC tags + document RC pre-release channel (MCP-1012)#582
Dumbris wants to merge 1 commit into
mainfrom
ci/rc-deconflict-mcp-1012

Conversation

@Dumbris
Copy link
Copy Markdown
Member

@Dumbris Dumbris commented Jun 3, 2026

Summary

RC (release-candidate) builds: an RC tag like v0.37.0-rc.1 matches release.yml's on: push: tags: ["v*"] trigger, so today it fires both release.yml and prerelease.yml. This PR de-conflicts the two workflows so a v*-rc.* tag runs only prerelease.yml and is published as a GitHub pre-release — never to Homebrew, the Linux repos, the MCP registry, docs, or marketing, and never offered on stable update channels.

Implements MCP-1012 (steps 1, 2, 5). Step 4 (throwaway tag-push verification) is deferred to a post-merge step — see below.

Changes

release.yml — gate stable-only jobs on !contains(github.ref_name, '-')

Job Before After
generate-notes startsWith(...,'v') + && !contains(github.ref_name, '-')
build startsWith(...,'v') + && !contains(...)
sign-windows startsWith(...,'v') + && !contains(...)
release (no if: — relied on needs:) explicit startsWith(...) && !contains(...)
deploy-docs ... && github.repository == ... + && !contains(...)
trigger-marketing-update ... && github.repository == ... + && !contains(...)
mcp-registry startsWith(...,'v') + && !contains(...) (beyond the issue's list — must not publish an RC to the official registry)

Already guarded (unchanged): update-homebrew, publish-linux-repos. build-docker is disabled (false &&). provenance cascade-skips via needs: [release].

prerelease.yml — confirmed full parity (step 2)

Build matrix is identical (linux/windows/darwin × amd64/arm64). macOS is signed and notarized; DMG + PKG + tar.gz; Linux .deb/.rpm; Windows .zip + installer .exe; GitHub release created with prerelease: true. Trigger is tags: ["v*-rc.*", "v*-next.*"] (+ next branch), so stable v* tags don't match it — clean two-way separation.

One deliberate difference (documented, not silently changed): release.yml Authenticode-signs Windows via a dedicated SignPath sign-windows job; prerelease.yml omits it (SignPath adds ~1h/arch), so RC Windows installers are unsigned (SmartScreen prompt). Flagged in docs for the Release owner if signed Windows RCs are later required.

Docs (ENG-9)

  • docs/prerelease-builds.md: new Release Candidate (RC) Builds section (semver -rc.N scheme, GH pre-release channel, full matrix + Windows-signing note, stable-channel opt-in), corrected GitHub Workflows section.
  • CLAUDE.md: refreshed prerelease note (kept under the 40,000-char CI gate — now 39,960).

Provenance

  • Stable-channel exclusion confirmed in code: internal/tray/tray.go:1084 (MCPPROXY_ALLOW_PRERELEASE_UPDATES, uses releases/latest) and native/macos/MCPProxy/MCPProxy/Services/UpdateService.swift:41 (releases/latest + semver downgrade guard).

Verification

  • release.yml + prerelease.yml parse as valid YAML; actionlint reports zero new findings on the changed lines (only pre-existing shellcheck/edition-property notices in untouched run: blocks).
  • Deferred (post-merge): push a throwaway v0.0.0-rc.1 to confirm only prerelease.yml runs, the release is marked pre-release, releases/latest is unchanged, and no brew/linux/docs/registry jobs ran — then delete the test tag/release. This is most meaningful after this PR lands (a tag against current main would still show the bug). Recommend the Release owner / human run it post-merge, or I can execute it in a follow-up once merged.

Not for merge by an agent

Opening only — the human merges at the pre-merge gate after CI is green and reviewers accept.

Related MCP-1012

…nnel

An RC tag like `v0.37.0-rc.1` matches release.yml's `tags: ["v*"]` trigger,
so it currently fires BOTH release.yml and prerelease.yml. Gate every
release.yml job that builds or publishes a stable artifact on
`!contains(github.ref_name, '-')` so RC/prerelease tags run prerelease.yml
exclusively:

- generate-notes, build, sign-windows: add the guard
- release: add an explicit `if:` (previously relied only on `needs:`)
- deploy-docs, trigger-marketing-update: add the guard
- mcp-registry: add the guard (never publish an RC to the official registry)

update-homebrew and publish-linux-repos already carry the guard. build-docker
is disabled (`false &&`); provenance cascade-skips via `needs: [release]`.

Docs: add a Release Candidate (RC) section to docs/prerelease-builds.md
(semver `-rc.N` scheme, GH pre-release channel, full build matrix with the
Windows-SignPath gap called out, stable-channel opt-in via
MCPPROXY_ALLOW_PRERELEASE_UPDATES), correct the GitHub Workflows section, and
refresh the CLAUDE.md prerelease note (under the 40k gate).

Related MCP-1012
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying mcpproxy-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: dfe0eaa
Status: ✅  Deploy successful!
Preview URL: https://8c804804.mcpproxy-docs.pages.dev
Branch Preview URL: https://ci-rc-deconflict-mcp-1012.mcpproxy-docs.pages.dev

View logs

@codecov-commenter
Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 3, 2026

📦 Build Artifacts

Workflow Run: View Run
Branch: ci/rc-deconflict-mcp-1012

Available Artifacts

  • archive-darwin-amd64 (28 MB)
  • archive-darwin-arm64 (25 MB)
  • archive-linux-amd64 (16 MB)
  • archive-linux-arm64 (14 MB)
  • archive-windows-amd64 (28 MB)
  • archive-windows-arm64 (24 MB)
  • frontend-dist-pr (0 MB)
  • installer-dmg-darwin-amd64 (21 MB)
  • installer-dmg-darwin-arm64 (19 MB)

How to Download

Option 1: GitHub Web UI (easiest)

  1. Go to the workflow run page linked above
  2. Scroll to the bottom "Artifacts" section
  3. Click on the artifact you want to download

Option 2: GitHub CLI

gh run download 26907156570 --repo smart-mcp-proxy/mcpproxy-go

Note: Artifacts expire in 14 days.

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.

2 participants