diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 713e7fdb..5ce8e34e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ permissions: contents: write jobs: - build: + release: runs-on: antville env: @@ -18,10 +18,22 @@ jobs: steps: - uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Build with Gradle run: ./gradlew assembleDist + - name: Create release notes + id: create_release_notes + run: | + release_notes=$(npx git-cliff@latest --latest) + # Write the release notes as a heredoc to the workflow output + # ⚠️ No white space around `<<` is crucial! + echo "release_notes<<.eot0x03" >> $GITHUB_OUTPUT + echo "$release_notes" >> $GITHUB_OUTPUT + echo ".eot0x03" >> $GITHUB_OUTPUT + - name: Create release uses: actions/forgejo-release@v2 with: @@ -30,18 +42,18 @@ jobs: token: ${{ github.token }} title: Antville ${{ github.ref_name }} release-dir: build/distributions - release-notes-assistant: true + release-notes: ${{ steps.create_release_notes.outputs.release_notes }} verbose: true - - name: Create release at GitHub - run: | - gh release create "$GITHUB_REF_NAME" \ - --repo "$GITHUB_REPOSITORY" \ - --title "Antville ${{ github.ref_name }}" \ - --generate-notes + # - name: Create release at GitHub + # run: | + # gh release create "$GITHUB_REF_NAME" \ + # --repo "$GITHUB_REPOSITORY" \ + # --title "Antville ${{ github.ref_name }}" \ + # --notes "${{ steps.create_release_notes.outputs.release_notes }}" - - name: Upload release assets to GitHub - run: | - gh release upload "$GITHUB_REF_NAME" build/distributions/ant*.* \ - --repo "$GITHUB_REPOSITORY" \ - --clobber + # - name: Upload release assets to GitHub + # run: | + # gh release upload "$GITHUB_REF_NAME" build/distributions/ant*.* \ + # --repo "$GITHUB_REPOSITORY" \ + # --clobber diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 00000000..4c90b5a0 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,52 @@ +# git-cliff ~ default configuration file +# https://git-cliff.org/docs/configuration +# +# Lines starting with "#" are comments. +# Configuration options are organized into tables and keys. +# See documentation for more information on available options. + +[changelog] +trim = true + +header = "## Changes" + +body = """ +{% for group, commits in commits | filter(attribute="merge_commit") | group_by(attribute="group") %} + ### {{ group | striptags | trim | upper_first }} + {% for commit in commits %} + * [{{ commit.id | split(pat="") | slice(end=11) | join() }}]\ + (https://code.host.antville.org/antville/antville/commit/{{ commit.id }}) \ + {% if commit.breaking %}**Breaking:** {% endif %}\ + {{ commit.message | split(pat="\\n") | first | upper_first }}\ + {% endfor %} +{% endfor %} + +**Full Changelog:** [{{ previous.version }} → {{ version }}]\ +(https://code.host.antville.org/antville/antville/compare/\ +{{ previous.version | urlencode }}..{{ version | urlencode }})\n\n +""" + +footer = """ +Generated by [git-cliff](https://git-cliff.org/). +""" + +[git] +conventional_commits = false +filter_commits = false +filter_unconventional = false +protect_breaking_commits = false +sort_commits = "newest" +split_commits = false +topo_order = false + +commit_parsers = [ + { message = "^Apply \\d+ suggestion", skip = true }, + { message = "^Merge .*(branch|dependabot|dependency|renovate)", skip = true }, + { message = "^Lock file maintenance", skip = true }, + { message = "yarn\\.lock", skip = true }, + + { message = "^[Ff]ix", group = " 🐛 Bug Fixes" }, + { field = "author.name", pattern = "[Rr]enovate|[Dd]ependabot", group = " 📦 Dependency Updates" }, + { message = "^Merge pull request", group = " 🔀 Merges" }, + { message = ".*", group = " Uncategorized" }, +]