diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 5073faf40..29cc04165 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -21,7 +21,7 @@ jobs: uses: orhun/git-cliff-action@v4 id: git-cliff with: - config: cliff.toml + config: cliff-releases.toml args: -vv --latest --no-exec --github-repo ${{ github.repository }} - name: Print the changelog @@ -30,7 +30,7 @@ jobs: release: name: Create release needs: [ generate-changelog ] - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 @@ -47,7 +47,7 @@ jobs: run: composer install --no-progress --prefer-dist --optimize-autoloader - name: Create archive - id: create_zip + id: create-zip run: | ZIP_NAME="torrentpier-v${{ env.RELEASE_VERSION }}.zip" zip -r "$ZIP_NAME" . -x ".git/*" ".github/*" @@ -58,7 +58,7 @@ jobs: uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ${{ steps.create_zip.outputs.ZIP_NAME }} + file: ${{ steps.create-zip.outputs.ZIP_NAME }} overwrite: true tag: ${{ github.ref }} release_name: "TorrentPier v${{ env.RELEASE_VERSION }}" @@ -69,7 +69,7 @@ jobs: uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ${{ steps.create_zip.outputs.ZIP_NAME }} + file: ${{ steps.create-zip.outputs.ZIP_NAME }} overwrite: true tag: ${{ github.ref }} release_name: "TorrentPier v${{ env.RELEASE_VERSION }}" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9822d188a..7a4ca63c8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,7 +8,7 @@ on: jobs: nightly: name: Nightly builds ๐Ÿ“ฆ - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Checkout code ๐Ÿ—ณ @@ -29,7 +29,7 @@ jobs: echo "COMMIT_HASH=$COMMIT_HASH" >> $GITHUB_OUTPUT - name: Create archive ๐Ÿ—ž - id: create_zip + id: create-zip run: | ZIP_NAME="torrentpier-${{ steps.get_commit_hash.outputs.COMMIT_HASH }}.zip" zip -r "$ZIP_NAME" . -x ".git/*" ".github/*" @@ -39,11 +39,11 @@ jobs: uses: actions/upload-artifact@v4 with: name: TorrentPier - path: ${{ steps.create_zip.outputs.ZIP_NAME }} + path: ${{ steps.create-zip.outputs.ZIP_NAME }} deploy: name: ๐ŸŽ‰ Deploy - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: ๐Ÿšš Get latest code uses: actions/checkout@v4 diff --git a/.github/workflows/schedule.yml b/.github/workflows/schedule.yml index 35d132473..f55cb808a 100644 --- a/.github/workflows/schedule.yml +++ b/.github/workflows/schedule.yml @@ -7,7 +7,7 @@ on: jobs: changelog: name: Changelog generation - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -41,7 +41,7 @@ jobs: checksums: name: Generate checksums.md5 file - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 needs: [ changelog ] steps: - name: Checkout diff --git a/cliff-releases.toml b/cliff-releases.toml new file mode 100644 index 000000000..a516c7b5f --- /dev/null +++ b/cliff-releases.toml @@ -0,0 +1,123 @@ +# git-cliff ~ TorrentPier 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. + +[remote.github] +owner = "torrentpier" +repo = "torrentpier" + +[changelog] +# template for the changelog header +header = """ +[![TorrentPier](https://raw.githubusercontent.com/torrentpier/.github/refs/heads/main/versions/Cattle.png)](https://github.com/torrentpier)\n +""" +# template for the changelog body +# https://keats.github.io/tera/docs/#introduction +body = """ +{%- macro remote_url() -%} + https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} +{%- endmacro -%} + +{%- macro nightly_url() -%} + https://nightly.link/{{ remote.github.owner }}/{{ remote.github.repo }}/workflows/build/master/TorrentPier +{%- endmacro -%} + +{% macro print_commit(commit) -%} + - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\ + {% if commit.breaking %}[**breaking**] {% endif %}\ + {{ commit.message | upper_first }} - \ + ([{{ commit.id | truncate(length=7, end="") }}]({{ self::remote_url() }}/commit/{{ commit.id }}))\ +{% endmacro -%} + +{% if version %}\ + {% if previous.version %}\ + ## [{{ version }}]\ + ({{ self::remote_url() }}/compare/{{ previous.version }}..{{ version }}) ({{ timestamp | date(format="%Y-%m-%d") }}) + {% else %}\ + ## {{ version }} ({{ timestamp | date(format="%Y-%m-%d") }}) + {% endif %}\ +{% else %}\ + ## [nightly]({{ self::nightly_url() }}) +{% endif %}\ + +{% for group, commits in commits | group_by(attribute="group") %} + ### {{ group | striptags | trim | upper_first }} + {% for commit in commits + | filter(attribute="scope") + | sort(attribute="scope") %} + {{ self::print_commit(commit=commit) }} + {%- endfor %} + {% for commit in commits %} + {%- if not commit.scope -%} + {{ self::print_commit(commit=commit) }} + {% endif -%} + {% endfor -%} +{% endfor -%} +{%- if github -%} +{% if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %} + ## New Contributors โค๏ธ +{% endif %}\ +{% for contributor in github.contributors | filter(attribute="is_first_time", value=true) %} + * [@{{ contributor.username }}](https://github.com/{{ contributor.username }}) made their first contribution + {%- if contributor.pr_number %} in \ + [#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \ + {%- endif %} +{%- endfor -%} +{%- endif %} +""" +# template for the changelog footer +footer = """ +""" +# remove the leading and trailing whitespace from the templates +trim = true +# postprocessors +postprocessors = [ + { pattern = '', replace = "https://github.com/torrentpier/torrentpier" }, # replace repository URL +] + +[git] +# parse the commits based on https://www.conventionalcommits.org +conventional_commits = true +# filter out the commits that are not conventional +filter_unconventional = true +# 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}](/pull/${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 = "^feat", group = "๐Ÿš€ Features" }, + { message = "^fix", group = "๐Ÿ› Bug Fixes" }, + { message = "^doc", group = "๐Ÿ“š Documentation" }, + { message = "^perf", group = "โšก Performance" }, + { message = "^refactor", group = "๐Ÿšœ Refactor" }, + { message = "^style", group = "๐ŸŽจ Styling" }, + { message = "^test", group = "๐Ÿงช Testing" }, + { message = "^ignore|^release", skip = true }, + { message = "^chore|^ci|^misc", group = "โš™๏ธ Miscellaneous" }, + { body = ".*security", group = "๐Ÿ›ก๏ธ Security" }, + { message = "^revert", group = "โ—€๏ธ Revert" }, + { message = "^crowdin", group = "๐Ÿˆณ New translations" }, # crowdin pulls supporting + { message = "^Composer", group = "๐Ÿ“ฆ Dependencies" }, # dependabot pulls supporting + { message = "^rem|^drop|^removed", group = "๐Ÿ—‘๏ธ Removed" }, + { message = ".*", group = "๐Ÿ’ผ Other" }, +] +# 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].*" +# sort the tags topologically +topo_order = false +# sort the commits inside sections by oldest/newest order +sort_commits = "newest"