Skip to content

Commit 3e01275

Browse files
committed
feat: update release process with new GitHub release action and add release notes template
1 parent dc4bf4e commit 3e01275

3 files changed

Lines changed: 67 additions & 52 deletions

File tree

.github/workflows/nuget.yml

Lines changed: 27 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -274,13 +274,13 @@ jobs:
274274
dotnet-version: '10.0.x'
275275

276276
- name: Download packages artifact
277-
uses: actions/download-artifact@v5
277+
uses: actions/download-artifact@v6
278278
with:
279279
name: nuget-packages-${{ github.run_number }}
280280
path: ./artifacts/packages
281281

282282
- name: Download symbols artifact
283-
uses: actions/download-artifact@v5
283+
uses: actions/download-artifact@v6
284284
with:
285285
name: nuget-symbols-${{ github.run_number }}
286286
path: ./artifacts/packages
@@ -358,57 +358,32 @@ jobs:
358358

359359
- name: Create GitHub Release
360360
if: startsWith(github.ref, 'refs/tags/v') && success()
361-
uses: softprops/action-gh-release@v2
362-
with:
363-
files: |
364-
./artifacts/packages/*.nupkg
365-
./artifacts/packages/*.snupkg
366-
generate_release_notes: true
367-
draft: false
368-
prerelease: ${{ contains(github.ref, '-') || contains(needs.pack.outputs.package-version, '-') }}
369-
tag_name: ${{ github.ref_name }}
370-
name: Release ${{ github.ref_name }}
371-
body: |
372-
## MinimalCleanArch ${{ github.ref_name }}
373-
374-
### Packages Published
375-
- MinimalCleanArch - Core components (.NET 9.0, .NET 10.0)
376-
- MinimalCleanArch.DataAccess - Entity Framework Core implementation
377-
- MinimalCleanArch.Extensions - Minimal API extensions
378-
- MinimalCleanArch.Validation - FluentValidation integration
379-
- MinimalCleanArch.Security - Data Protection encryption
380-
- MinimalCleanArch.Storage - Generic blob storage abstractions and Azure Blob Storage integration
381-
- MinimalCleanArch.Messaging - Domain events / Wolverine integration
382-
- MinimalCleanArch.Audit - Audit logging components
383-
- MinimalCleanArch.Templates - dotnet new templates (web/api clean architecture)
384-
385-
### Installation
386-
```bash
387-
dotnet add package MinimalCleanArch --version ${{ needs.pack.outputs.package-version }}
388-
dotnet add package MinimalCleanArch.DataAccess --version ${{ needs.pack.outputs.package-version }}
389-
dotnet add package MinimalCleanArch.Extensions --version ${{ needs.pack.outputs.package-version }}
390-
```
391-
392-
### .NET 9.0 and 10.0 Features
393-
This release targets .NET 9.0 and .NET 10.0 and includes:
394-
- Updated to Entity Framework Core 9.0.5
395-
- FluentValidation 12.0.0 support
396-
- Enhanced performance and security
397-
- Native AOT compatibility improvements
398-
399-
### Usage
400-
```csharp
401-
// Program.cs
402-
builder.Services.AddMinimalCleanArch<MyDbContext>(options =>
403-
options.UseSqlServer(connectionString));
404-
405-
builder.Services.AddValidatorsFromAssemblyContaining<MyValidator>();
406-
builder.Services.AddDataProtectionEncryptionForDevelopment();
407-
```
408-
409-
See the [README](https://github.com/${{ github.repository }}/blob/${{ github.ref_name }}/README.md) for complete usage instructions.
410361
env:
411-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
362+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
363+
IS_PRERELEASE: ${{ contains(github.ref, '-') || contains(needs.pack.outputs.package-version, '-') }}
364+
PACKAGE_VERSION: ${{ needs.pack.outputs.package-version }}
365+
run: |
366+
set -euo pipefail
367+
368+
release_assets=(./artifacts/packages/*.nupkg ./artifacts/packages/*.snupkg)
369+
if gh release view "${GITHUB_REF_NAME}" >/dev/null 2>&1; then
370+
gh release upload "${GITHUB_REF_NAME}" "${release_assets[@]}" --clobber
371+
else
372+
prerelease_flag=()
373+
if [ "${IS_PRERELEASE}" = "true" ]; then
374+
prerelease_flag+=(--prerelease)
375+
fi
376+
377+
release_notes_template="$(cat release-notes.md)"
378+
release_notes="${release_notes_template//\{\{TAG\}\}/${GITHUB_REF_NAME}}"
379+
release_notes="${release_notes//\{\{VERSION\}\}/${PACKAGE_VERSION}}"
380+
381+
gh release create "${GITHUB_REF_NAME}" "${release_assets[@]}" \
382+
--title "Release ${GITHUB_REF_NAME}" \
383+
--notes "${release_notes}" \
384+
--generate-notes \
385+
"${prerelease_flag[@]}"
386+
fi
412387
413388
security-scan:
414389
runs-on: ubuntu-latest

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ Preferred defaults:
114114

115115
Additional docs:
116116
- Sample app: [`samples/MinimalCleanArch.Sample/README.md`](samples/MinimalCleanArch.Sample/README.md)
117+
- Release notes template: [`release-notes.md`](release-notes.md)
117118
- Third-party notices: [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md)
118119

119120
## Contributing

release-notes.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
## MinimalCleanArch {{TAG}}
2+
3+
### Summary
4+
This release publishes MinimalCleanArch packages and templates at version `{{VERSION}}`.
5+
Detailed commit and pull request notes are auto-generated below by GitHub.
6+
7+
### Compatibility
8+
- Target frameworks: .NET 9.0 and .NET 10.0
9+
- Delivery channels: NuGet packages + `dotnet new` templates
10+
11+
### Breaking Changes
12+
- None.
13+
14+
### Migration Notes
15+
- Update package references to `{{VERSION}}`.
16+
- Re-run restore/build/tests after upgrading to confirm environment-specific behavior.
17+
18+
### Packages published
19+
- `MinimalCleanArch`: core domain contracts and result/specification primitives
20+
- `MinimalCleanArch.DataAccess`: EF Core repositories and unit of work
21+
- `MinimalCleanArch.Extensions`: Minimal API bootstrap, OpenAPI, and operational defaults
22+
- `MinimalCleanArch.Validation`: FluentValidation integration and registration helpers
23+
- `MinimalCleanArch.Security`: encryption services and encrypted EF property support
24+
- `MinimalCleanArch.Storage`: blob/object storage abstractions and Azure Blob integration
25+
- `MinimalCleanArch.Messaging`: domain events and Wolverine integration
26+
- `MinimalCleanArch.Audit`: audit interception and query support
27+
- `MinimalCleanArch.Templates`: project scaffolding templates (`dotnet new mca`)
28+
29+
### Installation
30+
```bash
31+
dotnet add package MinimalCleanArch --version {{VERSION}}
32+
dotnet add package MinimalCleanArch.DataAccess --version {{VERSION}}
33+
dotnet add package MinimalCleanArch.Extensions --version {{VERSION}}
34+
```
35+
36+
### Known Issues
37+
- No known release-blocking issues at publish time.
38+
39+
See the README for full setup guidance and package-specific docs.

0 commit comments

Comments
 (0)