CI/CD¶
The project uses two GitHub Actions workflows: one for continuous integration on every push, and one for the release pipeline triggered by version tags.
CI Workflow (ci.yml)¶
Triggers: Push to master, pull requests to master
Jobs¶
build-and-test¶
Runs on ubuntu-latest. Steps:
- Checkout code
- Set up .NET 8
dotnet builddotnet test
This is the gate for every PR — it must pass before merging.
template-smoke-test¶
Depends on build-and-test. Verifies the dotnet new mcp-tool template works end-to-end:
- Pack
McpServer.Plugin.Abstractionsto a local NuGet feed - Install the
mcp-tooltemplate from the built package - Scaffold a new plugin with
dotnet new mcp-tool -n SmokeTest - Restore (using the local feed for the abstractions package)
- Build — if this fails, the template is broken
Release Workflow (release.yml)¶
Trigger: Tags matching v* (e.g. v1.2.3)
Jobs¶
build-binaries (matrix)¶
Runs in parallel on windows-latest, ubuntu-latest, macos-latest for targets win-x64, linux-x64, osx-arm64.
Steps per platform:
- Run all tests
dotnet publishwith--self-contained --single-file- Upload artifact
create-release¶
Depends on build-binaries. Steps:
- Download all three platform artifacts
- Create a GitHub Release with the tag
- Attach the three binaries as release assets
publish-nuget¶
Depends on build-binaries. Steps:
dotnet packthe mainMcpServerprojectdotnet nuget pushto NuGet.org
Requires the NUGET_API_KEY secret to be set in repository settings.
publish-templates¶
Depends on publish-nuget. Steps:
dotnet packtheMcpServer.Templatesprojectdotnet nuget pushto NuGet.org
Creating a Release¶
This triggers:
- Build & test on all three platforms
- GitHub Release with platform binaries attached
DotnetMcpServerpushed to NuGet.orgDotnetMcpServer.Templatespushed to NuGet.org
Required Secrets¶
| Secret | Used by | Description |
|---|---|---|
NUGET_API_KEY |
publish-nuget, publish-templates |
NuGet.org API key for pushing packages |
Set in: Repository Settings → Secrets and variables → Actions → New repository secret.