diff --git a/docs/guides/administration/releases.md b/docs/guides/administration/releases.md new file mode 100644 index 0000000..7f3af2e --- /dev/null +++ b/docs/guides/administration/releases.md @@ -0,0 +1,28 @@ +# Releases + +## Creating a Release + +1. Create a new release on [GitHub](https://github.com/modelcontextprotocol/registry/releases) with a semver tag (e.g., `v1.3.9`) +2. This triggers the [release workflow](.github/workflows/release.yml) which: + - Builds `registry` and `mcp-publisher` binaries for all platforms using GoReleaser + - Signs artifacts with cosign + - Generates SBOMs + - Builds and pushes container images to `ghcr.io/modelcontextprotocol/registry` + +## Deploying to Production + +1. Update `deploy/Pulumi.gcpProd.yaml` (e.g., through a PR or by pushing directly to main): + ```yaml + mcp-registry:imageTag: 1.3.9 + ``` +2. The [deploy-production workflow](.github/workflows/deploy-production.yml) automatically deploys + +## Staging + +Staging auto-deploys from `main` via [deploy-staging.yml](.github/workflows/deploy-staging.yml). It always runs the latest `main` branch code. + +## Rollback + +To rollback production, update `deploy/Pulumi.gcpProd.yaml` to the previous version and push. + +**Note:** Rollbacks may not work as expected if the release included database migrations, since migrations are not automatically reversed.