This document describes how to create releases for BFGDL.NET.
The project supports three build configurations for each platform:
- Framework-Dependent (FD) - Requires .NET 10 Runtime, smallest size
- Self-Contained (SC) - Includes runtime, single-file executable
- Native AOT - Compiled to native code, best performance
- Windows x64, ARM64
- Linux x64, ARM64
- macOS x64, ARM64 (Apple Silicon)
- Create and push a version tag:
git tag v1.0.0
git push origin v1.0.0- GitHub Actions will automatically:
- Build all 18 platform/configuration combinations
- Create release archives (.zip for Windows, .tar.gz for Unix)
- Create a GitHub Release with all artifacts
- Generate release notes
- Go to GitHub Actions tab
- Select "Release" workflow
- Click "Run workflow"
- Enter version (e.g., v1.0.0)
- Click "Run workflow"
The release workflow builds:
| Platform | RID | FD | SC | AOT |
|---|---|---|---|---|
| Windows x64 | win-x64 | ? | ? | ? |
| Windows ARM64 | win-arm64 | ? | ? | ? |
| Linux x64 | linux-x64 | ? | ? | ? |
| Linux ARM64 | linux-arm64 | ? | ? | ? |
| macOS x64 | osx-x64 | ? | ? | ? |
| macOS ARM64 | osx-arm64 | ? | ? | ? |
Total: 18 artifacts per release
Artifacts follow this pattern:
bfgdl-net-{platform}-{arch}-{type}-{version}.{ext}
Examples:
bfgdl-net-win-x64-aot-v1.0.0.zipbfgdl-net-linux-x64-sc-v1.0.0.tar.gzbfgdl-net-osx-arm64-fd-v1.0.0.tar.gz
To test builds locally before release:
dotnet publish -c Release -r win-x64 --no-self-containeddotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=true -p:PublishTrimmed=truedotnet publish -c Release -r win-x64 --self-contained -p:PublishAot=true -p:StripSymbols=true| Build Type | Size | Notes |
|---|---|---|
| FD | ~200 KB | Requires .NET 10 Runtime |
| SC | 60-80 MB | Includes trimmed runtime |
| AOT | 10-15 MB | Native executable |
Follow Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes
Example: v1.2.3
For pre-release versions, append a suffix:
git tag v1.0.0-alpha.1
git push origin v1.0.0-alpha.1Mark as pre-release in GitHub Release UI if needed.
- Check .NET 10 SDK availability for that RID
- Verify project supports that runtime identifier
- Check GitHub Actions logs for specific errors
- Ensure no reflection or dynamic code that breaks AOT
- Check for AOT warnings during local build
- Native AOT has some limitations (see .NET docs)
- Verify GitHub token permissions (needs
contents: write) - Check all build jobs completed successfully
- Review GitHub Actions logs
- All tests pass locally
- Version number updated in code (if shown to users)
- CHANGELOG.md updated (if exists)
- README.md is current
- No uncommitted changes
- Create version tag with
vprefix - Push tag to trigger release
- Verify all 18 artifacts uploaded correctly
- Test download and extraction of key artifacts
- Update documentation if needed
- Announce release (if applicable)
- First release should be
v1.0.0 - GitHub Actions automatically creates release
- All artifacts are retained for 5 days during build
- Release artifacts are permanent once release is created
- Users can download any configuration they prefer