From 5f213444a12f60face1204d02c66f8135ae9ec82 Mon Sep 17 00:00:00 2001 From: Copilot Date: Mon, 23 Feb 2026 10:44:21 -0800 Subject: [PATCH 1/3] ci: add release notes automation via GitHub native auto-generated notes - Add .github/release.yml to categorize PRs by label in release notes - Update squad-release.yml: trigger on tag push, run dotnet test, generate notes - Maps type:feature/bug/chore/docs/spike and priority:p0 labels to sections - Uses gh release create --generate-notes for zero-dependency release notes Closes #N/A (process remediation - was incorrectly pushed directly to main) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/release.yml | 35 +++++++++++++++++++ .github/workflows/squad-release.yml | 53 +++++++++++++++++++++-------- 2 files changed, 73 insertions(+), 15 deletions(-) create mode 100644 .github/release.yml diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..2cea608 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,35 @@ +# GitHub Auto-Generated Release Notes Configuration +# Docs: https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes + +changelog: + exclude: + labels: + - duplicate + - invalid + - wontfix + - question + authors: + - dependabot + categories: + - title: "๐ŸŽ‰ New Features" + labels: + - type:feature + - enhancement + - title: "๐Ÿ”ง Improvements & Chores" + labels: + - type:chore + - refactor + - title: "๐Ÿ“š Documentation" + labels: + - type:docs + - documentation + - title: "๐Ÿ› Bug Fixes" + labels: + - type:bug + - bug + - title: "๐Ÿ”ฌ Research & Spikes" + labels: + - type:spike + - title: "๐Ÿš€ Infrastructure & DevOps" + labels: + - priority:p0 diff --git a/.github/workflows/squad-release.yml b/.github/workflows/squad-release.yml index ca51426..dd9de31 100644 --- a/.github/workflows/squad-release.yml +++ b/.github/workflows/squad-release.yml @@ -1,9 +1,9 @@ name: Squad Release -# dotnet project โ€” configure build, test, and release commands below on: push: - branches: [main] + tags: + - 'v*.*.*' permissions: contents: write @@ -12,23 +12,46 @@ jobs: release: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Build and test + - name: Set up .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '10.0.x' + + - name: Restore dependencies + run: dotnet restore + + - name: Build + run: dotnet build --configuration Release --no-restore + + - name: Test + run: dotnet test --configuration Release --no-restore --no-build + + - name: Check if release already exists + id: check_release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - # TODO: Add your dotnet build/test commands here - # Go: go test ./... - # Python: pip install -r requirements.txt && pytest - # .NET: dotnet test - # Java (Maven): mvn test - # Java (Gradle): ./gradlew test - echo "No build commands configured โ€” update squad-release.yml" - - - name: Create release + TAG="${{ github.ref_name }}" + if gh release view "$TAG" --repo "${{ github.repository }}" > /dev/null 2>&1; then + echo "exists=true" >> $GITHUB_OUTPUT + else + echo "exists=false" >> $GITHUB_OUTPUT + fi + + - name: Create release with auto-generated notes + if: steps.check_release.outputs.exists == 'false' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - # TODO: Add your release commands here (e.g., git tag, gh release create) - echo "No release commands configured โ€” update squad-release.yml" + gh release create "${{ github.ref_name }}" \ + --title "${{ github.ref_name }}" \ + --generate-notes \ + --repo "${{ github.repository }}" + + - name: Release already exists + if: steps.check_release.outputs.exists == 'true' + run: echo "โœ… Release ${{ github.ref_name }} already published โ€” skipping." From 28d503ab20182ee4f08ff5237db476c30eef0ebb Mon Sep 17 00:00:00 2001 From: Copilot Date: Mon, 23 Feb 2026 10:44:43 -0800 Subject: [PATCH 2/3] docs: log release notes automation implementation - Merged aragorn-release-notes-impl.md decision into decisions.md - Created session log with implementation summary Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .squad/decisions/decisions.md | 32 +++++++++++++++++++ .../inbox/aragorn-release-notes-impl.md | 4 +++ ...2026-02-24T14-35-00Z-release-notes-impl.md | 27 ++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 .squad/decisions/inbox/aragorn-release-notes-impl.md create mode 100644 .squad/log/2026-02-24T14-35-00Z-release-notes-impl.md diff --git a/.squad/decisions/decisions.md b/.squad/decisions/decisions.md index 661dcf1..42ca0ea 100644 --- a/.squad/decisions/decisions.md +++ b/.squad/decisions/decisions.md @@ -561,3 +561,35 @@ This recommendation aligns with IssueManager's: **Ready to implement when Matthew approves.** *โ€” Gandalf, Lead/Architect, December 2024* + +--- + +## Release Notes Automation Implementation โ€” IssueManager + +**Date:** 2026-02-23 +**Agent:** Aragorn (Backend Dev) +**Status:** โœ… Implemented + +### Decision + +Implemented automated release notes generation using GitHub's native feature: +- Created `.github/release.yml` with labelโ†’section mapping for 6 categories +- Updated `.github/workflows/squad-release.yml` to trigger on tag push +- Integrated `dotnet test` validation and `--generate-notes` flag +- **Zero external dependencies** โ€” GitHub native feature + +### Implementation Details + +**Files Created/Modified:** +1. `.github/release.yml` โ€” Label mapping config (6 categories: Features, Improvements, Docs, Bug Fixes, Research, Infrastructure) +2. `.github/workflows/squad-release.yml` โ€” Updated to detect new tags, run tests, and create releases with auto-generated notes + +**Why this approach:** +- Matthew approved Gandalf's recommendation +- Works seamlessly with existing label-based triage system +- Minimal configuration required +- Backward compatible with existing releases + +**Commit:** 406ec6d (pushed to origin/main) + +*โ€” Aragorn, Backend Dev, 2026-02-23* diff --git a/.squad/decisions/inbox/aragorn-release-notes-impl.md b/.squad/decisions/inbox/aragorn-release-notes-impl.md new file mode 100644 index 0000000..20bf969 --- /dev/null +++ b/.squad/decisions/inbox/aragorn-release-notes-impl.md @@ -0,0 +1,4 @@ +### 2026-02-23: Release notes automation implemented +**By:** Aragorn (Backend Dev) +**What:** Created .github/release.yml (labelโ†’section mapping) and updated squad-release.yml (trigger on tag push, runs dotnet test, uses --generate-notes). Zero external dependencies โ€” GitHub native feature. +**Why:** Matthew approved Gandalf's recommendation for GitHub native auto-generated release notes. diff --git a/.squad/log/2026-02-24T14-35-00Z-release-notes-impl.md b/.squad/log/2026-02-24T14-35-00Z-release-notes-impl.md new file mode 100644 index 0000000..b5de556 --- /dev/null +++ b/.squad/log/2026-02-24T14-35-00Z-release-notes-impl.md @@ -0,0 +1,27 @@ +# Release Notes Automation Implementation โ€” Session Log + +**Date:** 2026-02-24T14:35:00Z +**Agent:** Scribe +**Task:** Log Aragorn's release notes automation work + +## Summary + +Aragorn implemented GitHub's native auto-generated release notes: +- Created `.github/release.yml` with 6 labelโ†’section mappings +- Updated `.github/workflows/squad-release.yml` for tag-triggered releases with dotnet test validation +- Zero external dependencies; backward compatible +- Commit: 406ec6d pushed to origin/main + +## Decision Inbox Processed + +Merged `aragorn-release-notes-impl.md` into `.squad/decisions/decisions.md`; deleted inbox file. + +## References + +- `.squad/decisions/decisions.md` โ€” Updated with implementation details +- `.github/release.yml` โ€” GitHub release notes configuration +- `.github/workflows/squad-release.yml` โ€” Updated release workflow + +--- + +*Scribe duties complete.* From d012b9fad64258f3f0f935c6664e67f58862f79a Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Feb 2026 13:03:15 -0800 Subject: [PATCH 3/3] [WIP] Add release notes automation for GitHub (#43) Co-authored-by: mpaulosky <60372079+mpaulosky@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- .github/release.yml | 3 --- .github/workflows/squad-release.yml | 7 ++++--- .squad/log/2026-02-24T14-35-00Z-release-notes-impl.md | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/release.yml b/.github/release.yml index 2cea608..66852ab 100644 --- a/.github/release.yml +++ b/.github/release.yml @@ -30,6 +30,3 @@ changelog: - title: "๐Ÿ”ฌ Research & Spikes" labels: - type:spike - - title: "๐Ÿš€ Infrastructure & DevOps" - labels: - - priority:p0 diff --git a/.github/workflows/squad-release.yml b/.github/workflows/squad-release.yml index dd9de31..dba25db 100644 --- a/.github/workflows/squad-release.yml +++ b/.github/workflows/squad-release.yml @@ -11,15 +11,16 @@ permissions: jobs: release: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Set up .NET - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: - dotnet-version: '10.0.x' + global-json-file: global.json - name: Restore dependencies run: dotnet restore diff --git a/.squad/log/2026-02-24T14-35-00Z-release-notes-impl.md b/.squad/log/2026-02-24T14-35-00Z-release-notes-impl.md index b5de556..f473ed8 100644 --- a/.squad/log/2026-02-24T14-35-00Z-release-notes-impl.md +++ b/.squad/log/2026-02-24T14-35-00Z-release-notes-impl.md @@ -14,7 +14,7 @@ Aragorn implemented GitHub's native auto-generated release notes: ## Decision Inbox Processed -Merged `aragorn-release-notes-impl.md` into `.squad/decisions/decisions.md`; deleted inbox file. +Merged `aragorn-release-notes-impl.md` into `.squad/decisions/decisions.md`; inbox file retained in `.squad/decisions/inbox/`. ## References