diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f7aa7874..21aad62e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,40 +9,58 @@ permissions: contents: write jobs: - build: + release: runs-on: antville env: GH_TOKEN: ${{ secrets.GH_TOKEN }} LC_TIME: en_US.UTF-8 - TODAY: $(date +'%d %b %Y') + TODAY: $(date +'%-d %b %Y') steps: - uses: actions/checkout@v4 - - - name: Build with Gradle - run: ./gradlew assembleDist - - - name: Create release - uses: actions/forgejo-release@v2 with: - direction: upload - url: https://code.host.antville.org - token: ${{ github.token }} - title: ${{ env.TODAY }} - release-dir: build/distributions - release-notes-assistant: true - verbose: true + fetch-depth: 0 - - name: Create release at GitHub + - name: Create release notes + id: create_release_notes run: | - gh release create "$GITHUB_REF_NAME" \ - --repo "$GITHUB_REPOSITORY" \ - --title "${{ env.TODAY }}" \ - --generate-notes + release_notes=$(npx git-cliff@latest --latest) + cat >> $GITHUB_OUTPUT << .end-of-output + release_notes<<.end + $release_notes + .end + .end-of-output - - name: Upload release assets to GitHub + - name: Debug + env: + release_notes: ${{ steps.create_release_notes.outputs.release_notes }} run: | - gh release upload "$GITHUB_REF_NAME" build/distributions/helma-*.* \ - --repo "$GITHUB_REPOSITORY" \ - --clobber + echo $release_notes + + # - name: Build with Gradle + # run: ./gradlew assembleDist + + # - name: Create release + # uses: actions/forgejo-release@v2 + # with: + # direction: upload + # url: https://code.host.antville.org + # token: ${{ github.token }} + # title: ${{ env.TODAY }} + # release-dir: build/distributions + # 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 "${{ env.TODAY }}" \ + # --notes "${{ steps.create_release_notes.outputs.release_notes }}" + + # - name: Upload release assets to GitHub + # run: | + # gh release upload "$GITHUB_REF_NAME" build/distributions/helma-*.* \ + # --repo "$GITHUB_REPOSITORY" \ + # --clobber diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 00000000..4908d657 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,89 @@ +# 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] +# template for the changelog footer +header = """ +## Changes + +""" +# template for the changelog body +# https://keats.github.io/tera/docs/#introduction +body = """ +\ +{% for group, commits in commits | filter(attribute="merge_commit") | group_by(attribute="group") %} + ### {{ group | striptags | trim | upper_first }} + {% for commit in commits %} + * {% if commit.breaking %}**Breaking:** {% endif %}\ + [{{ commit.message | split(pat="\\n") | first | upper_first }}]\ + (https://code.host.antville.org/antville/helma/commit/{{ commit.id }})\ + {% endfor %} +{% endfor %}\n +""" +# template for the changelog footer +footer = """ + +""" +# remove the leading and trailing s +trim = true +# postprocessors +postprocessors = [ + # { pattern = '', replace = "https://github.com/orhun/git-cliff" }, # replace repository URL +] + +[git] +# parse the commits based on https://www.conventionalcommits.org +conventional_commits = false +# filter out the commits that are not conventional +filter_unconventional = false +# process each line of a commit as an individual commit +split_commits = false +# regex for preprocessing the commit messages +commit_preprocessors = [ + # Replace issue numbers + #{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](/issues/${2}))"}, + # Check spelling of the commit with https://github.com/crate-ci/typos + # If the spelling is incorrect, it will be automatically fixed. + #{ pattern = '.*', replace_command = 'typos --write-changes -' }, +] +# regex for parsing and grouping commits +commit_parsers = [ + { message = "^Apply \\d+ suggestion", skip = true }, + { message = "^Lock file maintenance", skip = true }, + { message = "yarn\\.lock", skip = true }, + + { message = "^fix", group = "# 🐛 Bug Fixes" }, + { message = "^Merge pull request .+ into (main|helma-)", group = " 🔀 Merges" }, + #{ message = "^Update dependency .+ to", group = "📦️ Dependency Updates" }, + { field = "author.name", pattern = "renovate", group = " 📦️ Dependency Updates" }, + + { message = "^Merge .*(branch|dependency|renovate)", skip = true }, + + { message = ".*", group = " Uncategorized" } +] +# protect breaking changes from being skipped due to matching a skipping commit_parser +protect_breaking_commits = false +# filter out the commits that are not matched by commit parsers +filter_commits = false +# regex for matching git tags +# tag_pattern = "v[0-9].*" +# regex for skipping tags +# skip_tags = "" +# regex for ignoring tags +# ignore_tags = "" +# sort the tags topologically +topo_order = false +# sort the commits inside sections by oldest/newest order +sort_commits = "newest" +# limit the number of commits included in the changelog. +# limit_commits = 42