From e0561d6763ce400ad33fe871749e3e622de541ac Mon Sep 17 00:00:00 2001 From: Bozhidar Batsov Date: Tue, 15 Sep 2026 16:31:31 +0300 Subject: [PATCH 1/3] Create GitHub releases from the changelog when a tag is pushed Releases have been made by hand so far, pasting the version's changelog section into the GitHub form. Now pushing the tag does that: the notes are the matching section of CHANGELOG.md, falling back to the unreleased section for a prerelease and to GitHub's generated notes only when both are empty. --- .github/workflows/github-release.yml | 53 ++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .github/workflows/github-release.yml diff --git a/.github/workflows/github-release.yml b/.github/workflows/github-release.yml new file mode 100644 index 000000000..1bec493cf --- /dev/null +++ b/.github/workflows/github-release.yml @@ -0,0 +1,53 @@ +name: Create GitHub Release + +on: + push: + tags: + - "v*" # Trigger when a version tag is pushed (e.g., v1.0.0) + +jobs: + create-release: + # Snapshot tags are never releases. + if: ${{ !endsWith(github.ref_name, '-SNAPSHOT') }} + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + - name: Checkout Code + uses: actions/checkout@v6 + + # The release notes are the version's section of the changelog. A + # prerelease usually has no section of its own yet, so it gets the + # unreleased one. If neither has anything, fall back to GitHub's + # generated notes rather than publish an empty release. + - name: Extract the release notes from the changelog + id: notes + run: | + extract() { + awk -v heading="$1" ' + /^## / { if (found) exit; found = ($2 == heading); next } + found { print } + ' CHANGELOG.md + } + extract "${GITHUB_REF_NAME#v}" > release-notes.md + if ! grep -q '[^[:space:]]' release-notes.md; then + extract master > release-notes.md + fi + if grep -q '[^[:space:]]' release-notes.md; then + echo "found=true" >> "$GITHUB_OUTPUT" + else + echo "::warning::No changelog section for $GITHUB_REF_NAME, using generated notes instead." + echo "found=false" >> "$GITHUB_OUTPUT" + fi + + - name: Create GitHub Release + uses: ncipollo/release-action@v1 + with: + tag: ${{ github.ref_name }} + name: CIDER ${{ github.ref_name }} + prerelease: ${{ contains(github.ref, '-rc') || contains(github.ref, '-alpha') || contains(github.ref, '-beta') }} + bodyFile: ${{ steps.notes.outputs.found == 'true' && 'release-notes.md' || '' }} + generateReleaseNotes: ${{ steps.notes.outputs.found != 'true' }} + token: ${{ secrets.GITHUB_TOKEN }} From 605bc9e046f88f60873c16333f20c7fa22797d68 Mon Sep 17 00:00:00 2001 From: Bozhidar Batsov Date: Tue, 15 Sep 2026 16:31:31 +0300 Subject: [PATCH 2/3] Let Dependabot keep the GitHub Actions up to date --- .github/dependabot.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..3a626c3a7 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: monthly From b010a2b97d3aa9a60a798e5cf595d2cddd653315 Mon Sep 17 00:00:00 2001 From: Bozhidar Batsov Date: Tue, 15 Sep 2026 16:31:31 +0300 Subject: [PATCH 3/3] Bump actions/stale and setup-clojure to their Node 24 releases The versions in use still run on Node 20, which GitHub is phasing out on its runners. --- .github/workflows/stale.yml | 2 +- .github/workflows/test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 76927f02e..2d66f6ffc 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -10,7 +10,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@v9 + - uses: actions/stale@v11 with: days-before-issue-stale: 90 days-before-issue-close: 30 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 73554daae..60599aa4f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -100,7 +100,7 @@ jobs: java-version: ${{matrix.java_version}} - name: Install Clojure Tools - uses: DeLaGuardo/setup-clojure@13.5.2 + uses: DeLaGuardo/setup-clojure@13.7.0 with: bb: '1.12.214' cli: '1.12.4.1597'