Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Oct 22, 2025

Fixes #176

Overview

This PR adds genmcp-server binary builds to the release automation workflows. Previously, only the CLI binaries (genmcp) were built and uploaded to releases. Now both CLI and server binaries are built for all supported platforms.

Changes

Makefile

  • Added new build-server-platform target for building genmcp-server binaries for specific platform combinations (GOOS/GOARCH)
  • Mirrors the structure of the existing build-cli-platform target
  • Properly handles Windows .exe extension

GitHub Workflows

Updated all three release workflows to build and upload server binaries:

  • create-release.yaml - Pre-releases now include server binaries
  • publish-release.yaml - Final releases now include server binaries
  • nightly-release.yaml - Nightly releases now include server binaries

Each workflow now builds both CLI and server binaries for all 6 platform combinations:

  • linux-amd64, linux-arm64
  • darwin-amd64, darwin-arm64
  • windows-amd64, windows-arm64

Other Changes

  • Updated .gitignore to ignore platform-specific binary artifacts

Release Artifacts

After this change, each release will include 12 zip files:

  • genmcp-{platform}-{arch}.zip - CLI binaries (6 total)
  • genmcp-server-{platform}-{arch}.zip - Server binaries (6 total, NEW)

This enables the CLI to download and use the appropriate server binary for any platform, supporting the requirements in #174.

@coderabbitai
Copy link

coderabbitai bot commented Oct 22, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

The pull request extends release automation to build and package genmcp-server binaries alongside CLI binaries for all supported platforms. It introduces a new Makefile target for server builds, updates three release workflow files to execute parallel server builds, and expands configuration files to track server artifacts.

Changes

Cohort / File(s) Summary
Release workflow updates
.github/workflows/create-release.yaml, .github/workflows/nightly-release.yaml, .github/workflows/publish-release.yaml
Renamed existing "Build genmcp" step to "Build genmcp CLI"; added new "Build genmcp-server" step that builds server binaries per platform (GOOS/GOARCH), determines platform-specific output names (.exe on Windows), and creates ZIP archives; updated asset upload logic to handle multiple generated ZIPs.
Build configuration
Makefile
Added build-server-platform target that mirrors build-cli-platform functionality for server binary: validates GOOS/GOARCH, computes platform-specific OUTPUT_NAME with .exe suffix for Windows, and builds SERVER_BINARY_NAME via SERVER_CMD.
Artifact tracking
.gitignore
Expanded ignore patterns to exclude built server binaries: added genmcp-* and genmcp-server-* alongside existing literal entries.
Release notes
CHANGELOG.md
Added entry documenting that release automation now builds and uploads genmcp-server binaries for all platforms alongside CLI binaries.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

The changes follow a consistent, repetitive pattern across workflow files (renaming existing step, adding analogous server build step). Logic is straightforward—building an additional binary and including it in release artifacts. No complex interdependencies or conditional logic; mostly additive changes with clear parallelism to existing CLI build patterns.

Suggested reviewers

  • Cali0707

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Linked Issues Check ⚠️ Warning The PR fully addresses issue #176 by implementing build steps in the Makefile and GitHub workflows to produce server binaries for all supported platforms (linux-amd64, linux-arm64, darwin-amd64, darwin-arm64, windows-amd64, windows-arm64) as part of release automation. However, the PR does not implement the coding requirements from issue #174, which require removing embedded server binaries from the CLI, downloading binaries from GitHub releases, caching downloads, mapping version-platform pairs, and validating binaries with cosign. While this PR provides a prerequisite for #174 by making binaries available in releases, it does not satisfy the actual implementation requirements listed in that issue. The PR should either focus solely on implementing #176 (which it successfully does) and remove the claim of fixing #174, or it should include the implementation of the download, caching, and validation logic required by #174. If #174 is intended as a follow-up task dependent on this PR, the PR description should be clarified to reflect this dependency relationship rather than claiming both issues are fixed.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The pull request title "Build server binaries as part of release automation" accurately and concisely describes the primary change in the changeset. The title directly reflects the core objective of adding server binary builds to the release workflows for multiple platforms. The title is clear, specific, and avoids vague or generic language, making it easy for reviewers scanning history to understand the main purpose of the changes.
Out of Scope Changes Check ✅ Passed All changes in the PR are directly scoped to the primary objective of building and releasing server binaries. The Makefile additions introduce the build-server-platform target, the workflow files add build and upload steps for server binaries, .gitignore is updated to ignore the new binary artifacts, and CHANGELOG.md documents the change. No unrelated modifications or changes outside the scope of release automation enhancements are present in the PR.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

Comment @coderabbitai help to get the list of available commands and usage tips.

@aliok
Copy link
Collaborator

aliok commented Oct 22, 2025

@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Oct 22, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

- Add build-server-platform make target for building server binaries per platform
- Update create-release.yaml to build and upload server binaries
- Update publish-release.yaml to build and upload server binaries
- Update nightly-release.yaml to build and upload server binaries
- Update .gitignore to ignore platform-specific binaries
- Update CHANGELOG.md with release automation changes

Co-authored-by: aliok <[email protected]>
Copilot AI changed the title [WIP] Add server binaries to release automation Build server binaries as part of release automation Oct 22, 2025
Copilot AI requested a review from aliok October 22, 2025 10:45
Copilot finished work on behalf of aliok October 22, 2025 10:45
@aliok
Copy link
Collaborator

aliok commented Oct 22, 2025

@coderabbitai review

@coderabbitai
Copy link

coderabbitai bot commented Oct 22, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c10cf64 and d3ce9c7.

📒 Files selected for processing (6)
  • .github/workflows/create-release.yaml (2 hunks)
  • .github/workflows/nightly-release.yaml (2 hunks)
  • .github/workflows/publish-release.yaml (2 hunks)
  • .gitignore (1 hunks)
  • CHANGELOG.md (1 hunks)
  • Makefile (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/CHANGELOG.md

⚙️ CodeRabbit configuration file

**/CHANGELOG.md: Verify that changelog entries:

  • Follow Keep a Changelog format (Added, Changed, Fixed, Removed, etc.)
  • Are user-focused (describe impact, not implementation details)
  • Include PR references (#XXX)
  • Breaking changes are marked with BREAKING prefix
  • Are in the correct section under the unreleased/current version

Files:

  • CHANGELOG.md
🧠 Learnings (1)
📚 Learning: 2025-10-07T17:29:19.445Z
Learnt from: Cali0707
PR: genmcp/gen-mcp#155
File: hack/jsonschemagen/go.mod:3-8
Timestamp: 2025-10-07T17:29:19.445Z
Learning: The gen-mcp project targets Go 1.24+ and does not require backward compatibility with Go 1.21.

Applied to files:

  • CHANGELOG.md
🔇 Additional comments (5)
.gitignore (1)

25-25: LGTM — Patterns properly cover platform-specific binaries.

The wildcard patterns correctly ignore all platform-variant binaries generated by the release workflows without duplicating existing rules.

Also applies to: 29-29

Makefile (1)

63-77: Verify dependency pattern differs intentionally from build-cli-platform.

The target mirrors build-cli-platform well, but lacks the build-server-binaries dependency that build-cli-platform includes. This appears intentional for platform-specific builds in release workflows, but please confirm this is not an oversight. The release workflows invoke build-server-platform directly without relying on build-server-binaries.

.github/workflows/nightly-release.yaml (1)

155-182: LGTM — Server build step properly integrated.

The new server build step follows the CLI build pattern consistently, correctly excludes VERSION_TAG from the server build, and the upload logic properly handles multiple zip artifacts. The Windows .exe handling is correct.

.github/workflows/publish-release.yaml (1)

157-184: LGTM — Consistent server build and upload pattern.

The server build step mirrors the implementation in nightly-release.yaml. The upload logic correctly handles both CLI and server zips.

.github/workflows/create-release.yaml (1)

139-166: LGTM — Consistent implementation across all release workflows.

The server build step and upload logic are properly integrated and mirror the implementations in nightly and publish workflows. The pattern is cohesive across all three release automation files.

Copilot AI requested a review from aliok October 22, 2025 11:10
Copilot finished work on behalf of aliok October 22, 2025 11:10
@aliok aliok marked this pull request as ready for review October 22, 2025 11:19
@aliok aliok requested a review from a team as a code owner October 22, 2025 11:19
@aliok
Copy link
Collaborator

aliok commented Oct 22, 2025

@Cali0707 wanna take a look?

Comment on lines 18 to 23
build-server-binaries: clean $(BUILD_DIR)
@echo "Building genmcp-server binaries for all platforms..."
GOOS=linux GOARCH=amd64 go build -o $(BUILD_DIR)/genmcp-server-linux-amd64 $(SERVER_CMD)
GOOS=linux GOARCH=arm64 go build -o $(BUILD_DIR)/genmcp-server-linux-arm64 $(SERVER_CMD)
GOOS=windows GOARCH=amd64 go build -o $(BUILD_DIR)/genmcp-server-windows-amd64.exe $(SERVER_CMD)
@echo "Server binaries built successfully"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is mostly duplicated by the new make target. Let's aim to clean this up and remove it when we get rid of the embedded binaries as part of #174

Copy link
Collaborator

@Cali0707 Cali0707 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Thanks @aliok !

Left one comment we will need as a follow up, but overall looks good 😄

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.

Build server binaries as part of release

3 participants