ci: 🚀 build and attach .mcpb extension on tagged release #122

Merged
goern merged 0 commits from refs/pull/122/head into main 2026-05-07 20:52:40 +00:00
goern commented 2026-05-07 20:27:55 +00:00 (Migrated from codeberg.org)

Summary

Wires the Claude Desktop Extension (.mcpb) into the release workflow so each tagged release publishes per-platform .mcpb artifacts alongside the existing tar.gz binaries.

For each {linux, darwin} × {amd64, arm64}:

  1. Locate the goreleaser-built binary in dist/.
  2. Inject the release tag into extension/manifest.json (jq substitution — no more hardcoded 2.20.0).
  3. Pack with npx @anthropic-ai/mcpb pack.
  4. Upload to the Codeberg release-asset endpoint.

Closes #121.

⚠️ Depends on #118

This PR must not be merged before #118. The release step references extension/manifest.json and the extension/ scaffolding introduced in #118; without that PR merged first, this workflow will fail at the manifest copy step.

Suggested merge order:

  1. Land #118.
  2. Rebase this branch on the resulting main.
  3. Land this PR.
  4. Cut the next release tag — the release page should now show forgejo-mcp_<version>_<os>_<arch>.mcpb per platform.

Test plan

  • #118 merged into main.
  • Rebased this branch on main and re-pushed.
  • Cut a test tag (e.g. v2.20.1-test) and confirmed the workflow attaches four .mcpb files to the release.
  • Downloaded the darwin-arm64 .mcpb, opened it in Claude Desktop, and verified the extension installs and tools surface in chat.
  • Downloaded the linux-amd64 .mcpb and ran npx @anthropic-ai/mcpb info <file> to confirm metadata + binary presence.
  • Confirmed the manifest's version inside the packed .mcpb matches the release tag (no hardcoded 2.20.0).

Notes

  • Node 22 (current Active LTS) used; bumped from a 20 default since Node 20 reached end-of-life in April 2026.
  • The find glob for goreleaser's dist/ layout handles both the _v1 amd64 variant directory and the plain arm64 directory. If goreleaser configuration changes the variant scheme, the matcher will need updating.
  • Asset upload uses secrets.RELEASE_TOKEN (already used by the goreleaser step). No new secret required.
  • A trap restores the original manifest on exit so the workflow's working tree stays clean if any subsequent step is added later.
## Summary Wires the Claude Desktop Extension (`.mcpb`) into the release workflow so each tagged release publishes per-platform `.mcpb` artifacts alongside the existing `tar.gz` binaries. For each `{linux, darwin} × {amd64, arm64}`: 1. Locate the goreleaser-built binary in `dist/`. 2. Inject the release tag into `extension/manifest.json` (`jq` substitution — no more hardcoded `2.20.0`). 3. Pack with `npx @anthropic-ai/mcpb pack`. 4. Upload to the Codeberg release-asset endpoint. Closes #121. ## ⚠️ Depends on #118 This PR **must not be merged before #118**. The release step references `extension/manifest.json` and the `extension/` scaffolding introduced in #118; without that PR merged first, this workflow will fail at the manifest copy step. Suggested merge order: 1. Land #118. 2. Rebase this branch on the resulting `main`. 3. Land this PR. 4. Cut the next release tag — the release page should now show `forgejo-mcp_<version>_<os>_<arch>.mcpb` per platform. ## Test plan - [ ] #118 merged into `main`. - [ ] Rebased this branch on `main` and re-pushed. - [ ] Cut a test tag (e.g. `v2.20.1-test`) and confirmed the workflow attaches four `.mcpb` files to the release. - [ ] Downloaded the `darwin-arm64` `.mcpb`, opened it in Claude Desktop, and verified the extension installs and tools surface in chat. - [ ] Downloaded the `linux-amd64` `.mcpb` and ran `npx @anthropic-ai/mcpb info <file>` to confirm metadata + binary presence. - [ ] Confirmed the manifest's `version` inside the packed `.mcpb` matches the release tag (no hardcoded `2.20.0`). ## Notes - Node 22 (current Active LTS) used; bumped from a 20 default since Node 20 reached end-of-life in April 2026. - The `find` glob for goreleaser's `dist/` layout handles both the `_v1` amd64 variant directory and the plain arm64 directory. If goreleaser configuration changes the variant scheme, the matcher will need updating. - Asset upload uses `secrets.RELEASE_TOKEN` (already used by the goreleaser step). No new secret required. - A `trap` restores the original manifest on exit so the workflow's working tree stays clean if any subsequent step is added later.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
agentic-forges/forgejo-mcp!122
No description provided.