Internal documentation for Surgewave project maintainers.
# Ensure main is clean and all tests pass
dotnet test Kuestenlogik.Surgewave.slnx -c Release -v normal
# Curate docs/release-notes/upcoming.md — title, highlights, fixes, breaking changes
# (docs/release-notes/README.md)# Stable release
git tag v1.0.0
git push --tags
# Beta release
git tag v1.1.0-beta.1
git push --tags- GitHub Actions builds, tests, and packs with the tag version
- NuGet packages (
*.nupkg) + symbols (*.snupkg) are published to GitHub Packages - Pre-release versions (
-beta.*) are marked as pre-release on GitHub Packages
When ready for public release:
dotnet nuget push "artifacts/packages/*.nupkg" --source nuget.org --api-key <KEY>
dotnet nuget push "artifacts/packages/*.snupkg" --source nuget.org --api-key <KEY>The release workflow publishes it on the tag: the curated notes from docs/release-notes/,
then the commits since the previous tag grouped by kind, named by the version. No manual
gh release create.
| Situation | Version | Example |
|---|---|---|
| Push to main (CI) | 0.1.0-ci.{count}.{sha} |
0.1.0-ci.905.abc1234 |
| Beta tag | {tag} |
1.1.0-beta.1 |
| Stable tag | {tag} |
1.1.0 |
- Patch (
v1.0.1): Bug fixes, no API changes - Minor (
v1.1.0): New features, backwards compatible - Major (
v2.0.0): Breaking API changes
GitVersion config: GitVersion.yml (tag-prefix: v)
Surgewave publishes NuGet packages to GitHub Packages on every push to main (pre-release) and on version tags (stable).
# Single plugin
surgewave plugins pack --project src/MyPlugin/
# Via MSBuild (if Kuestenlogik.Surgewave.Sdk is referenced — auto-pack on publish)
dotnet publish src/MyPlugin/ -c Releasesurgewave plugins install path/to/plugin.swpkg
surgewave plugins install plugins/ # all in directory
surgewave plugins install plugins/** # recursive# Compile solution + pack NuGets (artifacts/packages/)
.\scripts\build.ps1
# Publish self-contained executables (artifacts/publish/<Name>/win-x64/)
.\scripts\publish.ps1
# Different runtime
.\scripts\publish.ps1 -Runtime linux-x64
# Only a subset of services
.\scripts\publish.ps1 -Service Broker,Control
# Container images (manual, per service)
dotnet publish src/Kuestenlogik.Surgewave.Broker.App -c Release /t:PublishContainer| Service | Container | Command |
|---|---|---|
| Broker | surgewave/surgewave-broker |
dotnet publish src/Kuestenlogik.Surgewave.Broker.App -c Release /t:PublishContainer |
| Gateway | surgewave/surgewave-gateway |
dotnet publish src/Kuestenlogik.Surgewave.Gateway -c Release /t:PublishContainer |
| Control | surgewave/surgewave-control |
dotnet publish src/Kuestenlogik.Surgewave.Control -c Release /t:PublishContainer |
| Marketplace | surgewave/surgewave-marketplace |
dotnet publish src/Kuestenlogik.Surgewave.Marketplace -c Release /t:PublishContainer |
| Connect Worker | surgewave/surgewave-connect |
dotnet publish src/Kuestenlogik.Surgewave.Connect.Worker -c Release /t:PublishContainer |
| CLI | — (dotnet tool) | dotnet tool install -g Kuestenlogik.Surgewave.Tool |
The Surgewave core is licensed under the Apache License 2.0. Premium-tier repositories (Surgewave.Ai, Surgewave.Replication, Surgewave.Governance, Surgewave.Functions, Surgewave.Fleet, Surgewave.Edge, Surgewave.Stateless, Surgewave.Lakehouse, Surgewave.Licensing, Surgewave.Storage.Tiering.{S3,Azure,Gcp}, Surgewave.Storage.NvmeDirect) use the Business Source License 1.1 with a relative Change Date (5 years per release).
Contributors to the core must sign the CLA (enforced by CLA Assistant bot on PRs). CLA text: .github/CLA.md. The CLA allows Küstenlogik to include contributions in the premium-tier repositories.
- Build + Test: every push to main + every PR
- Publish to GitHub Packages: every push to main (pre-release) + tags (stable)
- Dependabot: weekly on Sundays, grouped by category
gh run list --repo Kuestenlogik/Surgewave --workflow ci.yml --limit 5