This guide explains how to publish:
- Docker image to Docker Hub
- .NET SDK package to NuGet
Both are automated by .github/workflows/release.yml and triggered by version tags (v*).
- GitHub repository with Actions enabled
- Docker Hub account and repository (
voyvodka/webhook-engineby default) - NuGet.org account with API key
In repository settings: Settings -> Secrets and variables -> Actions
Add these secrets:
| Secret | Description |
|---|---|
DOCKERHUB_USERNAME |
Docker Hub username |
DOCKERHUB_TOKEN |
Docker Hub access token |
NUGET_API_KEY |
NuGet.org API key |
If you use the included scripts:
./scripts/setup-github-labels.sh voyvodka/webhook-engine
./scripts/setup-github-milestones.sh voyvodka/webhook-engineThese require gh auth login first.
Tag format:
- Stable:
v0.1.0 - Pre-release:
v0.1.1-preview.1
release.yml automatically maps the tag to NuGet package version by stripping the v prefix.
Examples:
v0.1.0->0.1.0v0.1.1-preview.1->0.1.1-preview.1
Push the tag to trigger publishing:
git tag v0.1.0
git push origin v0.1.0- Logs in to Docker Hub
- Builds
docker/Dockerfile - Pushes image tags:
voyvodka/webhook-engine:0.1.0(from tagv0.1.0)voyvodka/webhook-engine:latest(stable tags only)
For pre-release tags (e.g. v0.1.1-preview.1), only the version tag is pushed.
- Builds and packs
src/WebhookEngine.Sdk/WebhookEngine.Sdk.csproj - Uses the pushed git tag as
PackageVersion - Publishes generated
.nupkgtohttps://api.nuget.org/v3/index.json - Uses
--skip-duplicateto avoid failures on re-runs
docker run --rm -p 5100:8080 voyvodka/webhook-engine:0.1.0cd SdkSmokeTest
dotnet add package WebhookEngine.Sdk --version 0.1.0
dotnet build./scripts/release-smoke.sh http://localhost:5100 admin@example.com changemeThis verifies /health, /metrics, dashboard login/session, overview, timeline, and dev-traffic endpoint behavior.
- Verify
DOCKERHUB_USERNAMEandDOCKERHUB_TOKEN - Ensure Docker Hub repo exists and account has push permission
- Verify
NUGET_API_KEYis valid and not expired - Confirm package ID/version is correct in
WebhookEngine.Sdk.csproj
- Ensure tag starts with
v - Confirm tag was pushed to origin
- Check Actions is enabled for the repository