From 0b1e4c9422d31a6bf86c0e4e0bdd3ca7045a3e28 Mon Sep 17 00:00:00 2001 From: Nick Cipollina Date: Tue, 21 Apr 2026 08:29:50 -0400 Subject: [PATCH 1/3] ci(github): add release-drafter configuration Adds release-drafter.yml with conventional commit autolabeling, semver version resolution, and categorized changelog template. --- .github/release-drafter.yml | 95 +++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 .github/release-drafter.yml diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..a686049 --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,95 @@ +name-template: 'v$RESOLVED_VERSION' +tag-template: 'v$RESOLVED_VERSION' +commitish: main + +version-resolver: + major: + labels: + - 'breaking-change' + minor: + labels: + - 'type: feat' + patch: + labels: + - 'type: fix' + - 'type: docs' + - 'type: refactor' + - 'type: test' + - 'type: chore' + - 'type: ci' + - 'type: revert' + default: patch + +autolabeler: + - label: 'type: feat' + title: + - '/^feat(\(.+\))?(!)?:/i' + - label: 'type: fix' + title: + - '/^fix(\(.+\))?(!)?:/i' + - label: 'type: docs' + title: + - '/^docs(\(.+\))?(!)?:/i' + - label: 'type: refactor' + title: + - '/^refactor(\(.+\))?(!)?:/i' + - label: 'type: test' + title: + - '/^test(\(.+\))?(!)?:/i' + - label: 'type: chore' + title: + - '/^chore(\(.+\))?(!)?:/i' + - label: 'type: ci' + title: + - '/^ci(\(.+\))?(!)?:/i' + - label: 'type: revert' + title: + - '/^revert(\(.+\))?(!)?:/i' + - label: 'breaking-change' + title: + - '/^(feat|fix|docs|refactor|test|chore|ci|revert)(\([^)]*\))?!:/i' + +categories: + - title: '⚠️ Breaking Changes' + labels: + - 'breaking-change' + - title: '🚀 Features' + labels: + - 'type: feat' + - title: '🐛 Bug Fixes' + labels: + - 'type: fix' + - title: '📚 Documentation' + labels: + - 'type: docs' + - title: '🔄 Refactoring' + labels: + - 'type: refactor' + - title: '✅ Tests' + labels: + - 'type: test' + - title: '🔧 Maintenance' + labels: + - 'type: chore' + - 'type: ci' + - 'type: revert' + +include-labels: + - 'type: feat' + - 'type: fix' + - 'type: docs' + - 'type: refactor' + - 'type: test' + - 'type: chore' + - 'type: ci' + - 'type: revert' + - 'breaking-change' + +exclude-labels: + - 'skip-changelog' + - 'internal' + +template: | + ## Changes + + $CHANGES \ No newline at end of file From 64e8716156bf769b86b433267dacb52ee19bad7d Mon Sep 17 00:00:00 2001 From: Nick Cipollina Date: Tue, 21 Apr 2026 08:43:00 -0400 Subject: [PATCH 2/3] ci(github): upgrade workflows to v8.1 and add net11 support Replace monolithic build.yaml with dedicated publish-preview, publish-release, release-drafter, and pr-title-check workflows targeting devops-templates@v8.1. Add .NET 11 target framework to src and test projects. Bump NuGet package versions (CDK 2.250.0, SourceLink 10.0.202, test SDK 18.4.0, coverage 18.6.2). --- .github/workflows/build.yaml | 26 --------------- .github/workflows/pr-build.yaml | 3 +- .github/workflows/pr-title-check.yaml | 13 ++++++++ .github/workflows/publish-preview.yaml | 32 +++++++++++++++++++ .github/workflows/publish-release.yaml | 23 +++++++++++++ .github/workflows/release-drafter.yaml | 20 ++++++++++++ Directory.Packages.props | 8 ++--- LayeredCraft.Cdk.Constructs.slnx | 5 ++- .../LayeredCraft.Cdk.Constructs.csproj | 2 +- .../LayeredCraft.Cdk.Constructs.Tests.csproj | 2 +- 10 files changed, 100 insertions(+), 34 deletions(-) delete mode 100644 .github/workflows/build.yaml create mode 100644 .github/workflows/pr-title-check.yaml create mode 100644 .github/workflows/publish-preview.yaml create mode 100644 .github/workflows/publish-release.yaml create mode 100644 .github/workflows/release-drafter.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml deleted file mode 100644 index efe8d62..0000000 --- a/.github/workflows/build.yaml +++ /dev/null @@ -1,26 +0,0 @@ -name: Build -on: - workflow_dispatch: - push: - branches: - - main - - beta - - release/* - tags: - - v* - paths-ignore: - - docs/** - - README.md - - mkdocs.yml - - requirements.txt -permissions: write-all -jobs: - build: - uses: LayeredCraft/devops-templates/.github/workflows/package-build.yaml@v7.1 - with: - hasTests: true - dotnet-version: | - 8.0.x - 9.0.x - 10.0.x - secrets: inherit \ No newline at end of file diff --git a/.github/workflows/pr-build.yaml b/.github/workflows/pr-build.yaml index 518ec34..92da2bd 100644 --- a/.github/workflows/pr-build.yaml +++ b/.github/workflows/pr-build.yaml @@ -7,7 +7,7 @@ on: permissions: write-all jobs: build: - uses: LayeredCraft/devops-templates/.github/workflows/pr-build.yaml@v7.1 + uses: LayeredCraft/devops-templates/.github/workflows/pr-build.yaml@v8.1 with: solution: LayeredCraft.Cdk.Constructs.slnx hasTests: true @@ -18,5 +18,6 @@ jobs: 8.0.x 9.0.x 10.0.x + 11.0.x runCdk: false secrets: inherit \ No newline at end of file diff --git a/.github/workflows/pr-title-check.yaml b/.github/workflows/pr-title-check.yaml new file mode 100644 index 0000000..b5b7356 --- /dev/null +++ b/.github/workflows/pr-title-check.yaml @@ -0,0 +1,13 @@ +name: PR Title Check + +on: + pull_request: + types: [opened, edited, synchronize, reopened] + +permissions: + pull-requests: read + statuses: write + +jobs: + validate: + uses: LayeredCraft/devops-templates/.github/workflows/pr-title-check.yml@v8.1 \ No newline at end of file diff --git a/.github/workflows/publish-preview.yaml b/.github/workflows/publish-preview.yaml new file mode 100644 index 0000000..7513c96 --- /dev/null +++ b/.github/workflows/publish-preview.yaml @@ -0,0 +1,32 @@ +name: Publish Preview + +on: + workflow_dispatch: + push: + branches: + - main + paths-ignore: + - 'docs/**' + - 'README.md' + - 'ROADMAP.md' + - 'mkdocs.yml' + - 'requirements.txt' + +permissions: write-all + +jobs: + # To add support for additional .NET versions (e.g. net9, net11), add release branches + # (e.g. release/net9) and wire up separate caller workflows targeting those branches. + + publish: + uses: LayeredCraft/devops-templates/.github/workflows/publish-preview.yml@v8.1 + with: + solution: LayeredCraft.Cdk.Constructs.slnx + dotnetVersion: | + 8.0.x + 9.0.x + 10.0.x + 11.0.x + prereleaseIdentifier: alpha + hasTests: true + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/publish-release.yaml b/.github/workflows/publish-release.yaml new file mode 100644 index 0000000..09bab2f --- /dev/null +++ b/.github/workflows/publish-release.yaml @@ -0,0 +1,23 @@ +name: Publish Release + +on: + release: + types: [published] + +permissions: write-all + +jobs: + # To add support for additional .NET versions (e.g. net9, net11), add release branches + # (e.g. release/net9) and wire up separate caller workflows targeting those branches. + + publish: + uses: LayeredCraft/devops-templates/.github/workflows/publish-release.yml@v8.1 + with: + solution: LayeredCraft.Cdk.Constructs.slnx + dotnetVersion: | + 8.0.x + 9.0.x + 10.0.x + 11.0.x + hasTests: true + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/release-drafter.yaml b/.github/workflows/release-drafter.yaml new file mode 100644 index 0000000..e75bba9 --- /dev/null +++ b/.github/workflows/release-drafter.yaml @@ -0,0 +1,20 @@ +name: Release Drafter + +on: + push: + branches: + - main + pull_request: + types: [opened, edited, synchronize, reopened, ready_for_review] + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + +jobs: + draft: + uses: LayeredCraft/devops-templates/.github/workflows/release-drafter.yml@v8.1 + with: + event_name: ${{ github.event_name }} + pr_draft: ${{ github.event.pull_request.draft == true }} \ No newline at end of file diff --git a/Directory.Packages.props b/Directory.Packages.props index 3b59b5e..a406ada 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -3,18 +3,18 @@ true - - + + - + - + diff --git a/LayeredCraft.Cdk.Constructs.slnx b/LayeredCraft.Cdk.Constructs.slnx index 10b3839..355d71e 100644 --- a/LayeredCraft.Cdk.Constructs.slnx +++ b/LayeredCraft.Cdk.Constructs.slnx @@ -24,9 +24,12 @@ - + + + + diff --git a/src/LayeredCraft.Cdk.Constructs/LayeredCraft.Cdk.Constructs.csproj b/src/LayeredCraft.Cdk.Constructs/LayeredCraft.Cdk.Constructs.csproj index 5daddf7..aaec97f 100644 --- a/src/LayeredCraft.Cdk.Constructs/LayeredCraft.Cdk.Constructs.csproj +++ b/src/LayeredCraft.Cdk.Constructs/LayeredCraft.Cdk.Constructs.csproj @@ -3,7 +3,7 @@ enable enable - net8.0;net9.0;net10.0 + net8.0;net9.0;net10.0;net11.0 default LayeredCraft.Cdk.Constructs LayeredCraft.Cdk.Constructs diff --git a/test/LayeredCraft.Cdk.Constructs.Tests/LayeredCraft.Cdk.Constructs.Tests.csproj b/test/LayeredCraft.Cdk.Constructs.Tests/LayeredCraft.Cdk.Constructs.Tests.csproj index 546c131..b216bd3 100644 --- a/test/LayeredCraft.Cdk.Constructs.Tests/LayeredCraft.Cdk.Constructs.Tests.csproj +++ b/test/LayeredCraft.Cdk.Constructs.Tests/LayeredCraft.Cdk.Constructs.Tests.csproj @@ -5,7 +5,7 @@ enable Exe LayeredCraft.Cdk.Constructs.Tests - net8.0;net9.0;net10.0 + net8.0;net9.0;net10.0;net11.0 default false