Skip to content

Introduce Goreleaser - #366

Merged
domdomegg merged 7 commits into
modelcontextprotocol:mainfrom
rdimitrov:add-goreleaser
Sep 8, 2025
Merged

domdomegg merged 7 commits into
modelcontextprotocol:mainfrom
rdimitrov:add-goreleaser

Conversation

@rdimitrov

@rdimitrov rdimitrov commented Sep 6, 2025 •

Copy link
Copy Markdown
Member

Motivation and Context

The following PR introduces Goreleaser for the releases of the registry server and the publisher CLI.

Details:

  • Builds registry and publisher binaries for Linux, macOS, and Windows (amd64 + arm64)
  • Leverage GitHub's release process by creating releases directly from GitHub's interface
  • Added .goreleaser.yaml configuration
  • New .github/workflows/release.yml workflow triggered by GitHub releases
  • Updated Docker tagging in deploy workflow (:latest and :semver(the tag) for releases, :main-YYYYMMDD-sha for testing/development)
  • Consolidated version handling in main.go files
  • Added release documentation

How Has This Been Tested?

Locally (but we have to test it by creating a release, i.e. v0.0.1 once this gets merged)

Breaking Changes

Yes, the notion of latest for the container image is now different

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

Related to #358

with:
images: ghcr.io/${{ github.repository }}
tags: |
type=raw,value=latest,enable={{is_default_branch}}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Do we want to change the release cadence for the registry itself?

I think I'd probably be keen for continuous releases of the registry itself off the main branch (because we can easily revert etc. as needed, and it makes deployments smaller and easier to monitor).

To be clear, I'd still be for manual releases of the publisher tool in the way you've set up (because it's harder to revert as it gets installed on other people's systems, and people get annoyed if there are too many updates).

@rdimitrov rdimitrov Sep 7, 2025 •

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Ah, good point. I was imagining we'll have something like a staging environment where all main builds would automatically be enrolled and then we'll have a production environment where all stable releases would be used?

Another approach is would it work if I add a rolling "main" tag that follows the latest push to main? In my experience "latest" usually refers to the latest stable release and so I'm concerned this might become confusing.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

yeah I'd be happy with a main tag 👍

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

done 👍

Signed-off-by: Radoslav Dimitrov <[email protected]>
Signed-off-by: Radoslav Dimitrov <[email protected]>
Signed-off-by: Radoslav Dimitrov <[email protected]>
Signed-off-by: Radoslav Dimitrov <[email protected]>
Signed-off-by: Radoslav Dimitrov <[email protected]>
Comment thread docs/releasing.md
@@ -0,0 +1,27 @@
# Release Guide

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

todo: can we move this to guides/contributing

tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=sha,prefix=main-{{date 'YYYYMMDD'}}-,enable={{is_default_branch}}
type=raw,value=main,enable={{is_default_branch}}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

todo can we update deploy/k8s/registry.go with this

@domdomegg
domdomegg merged commit 1679015 into modelcontextprotocol:main Sep 8, 2025
10 checks passed
@rdimitrov

Copy link
Copy Markdown
Member Author

@domdomegg - I'll file a follow up for the comments 👍

@rdimitrov
rdimitrov deleted the add-goreleaser branch September 8, 2025 18:10
domdomegg pushed a commit that referenced this pull request Sep 8, 2025
…t to main (#369)

<!-- Provide a brief summary of your changes -->

## Motivation and Context
<!-- Why is this change needed? What problem does it solve? -->
The following PR addresses the feedback comments from #366 

## How Has This Been Tested?
<!-- Have you tested this in a real application? Which scenarios were
tested? -->

## Breaking Changes
<!-- Will users need to update their code or configurations? -->
No
## Types of changes
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update

## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [ ] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [ ] My code follows the repository's style guidelines
- [ ] New and existing tests pass locally
- [ ] I have added appropriate error handling
- [ ] I have added or updated documentation as needed

## Additional context
<!-- Add any other context, implementation notes, or design decisions
-->

Signed-off-by: Radoslav Dimitrov <[email protected]>
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