RecurPixel.Notify uses GitHub Actions to automatically publish to NuGet when you create a Release.
- NuGet API Key — stored as a GitHub secret
- GitHub token — automatic (included in every Action run)
- Go to: Settings → Secrets and variables → Actions
- Click New repository secret
- Name:
NUGET_API_KEY - Value: Your NuGet.org API key (from https://www.nuget.org/account/api-keys)
- Click Add secret
That's it! The workflow will use this key to push all packages.
git tag v0.2.0-beta.1
git push origin v0.2.0-beta.1Or update Directory.Build.props first:
<Version>0.2.0-beta.1</Version>- Go to: Code → Releases → Draft a new release
- Choose a tag: select
v0.2.0-beta.1 - Release title:
v0.2.0-beta.1 - Describe this release: Copy from CHANGELOG.md
- Pre-release: Check this for beta/alpha versions
- Click Publish release
The workflow automatically:
- ✅ Checks out code
- ✅ Builds solution (Release)
- ✅ Runs all tests
- ✅ Packs 35 NuGet packages
- ✅ Pushes to NuGet.org
- ✅ Attaches packages as release assets
Logs: Go to Actions → Publish to NuGet → [Latest run] to see real-time progress.
All packages in one go:
- Tier 0:
RecurPixel.Notify.Core - Tier 1:
RecurPixel.Notify.Orchestrator - Tier 2:
RecurPixel.Notify(meta-package) - Tier 3: 31 adapters (Email, SMS, Push, WhatsApp, Chat, Social, InApp)
- Tier 4:
RecurPixel.Notify.Sdk(meta-package)
Each package includes both .nupkg and .snupkg (symbol packages).
- Verify on NuGet — https://www.nuget.org/packages?q=RecurPixel.Notify
- Check Release Assets — GitHub release page includes all
.nupkgfiles - Announce — update documentation, social media, etc.
Check that NUGET_API_KEY secret is set correctly:
- Settings → Secrets and variables → Actions
- Verify
NUGET_API_KEYexists and has value
The action includes --skip-duplicate, so re-running won't cause errors.
If the action fails unexpectedly, you can still use the local script:
.\publish-nuget.ps1 -ApiKey "your-key" -SkipBuildThe workflow is defined in .github/workflows/publish-nuget.yml.
Triggers on: Release published (not on tag alone) Runs on: Ubuntu latest Duration: ~5-10 minutes