Compare commits
28 Commits
b65e9ee542
...
v0.1.3
| Author | SHA1 | Date | |
|---|---|---|---|
| ad1f85e1f7 | |||
|
03674e57c3
|
|||
| c20d53cf61 | |||
|
79921dd636
|
|||
|
b20b8688c1
|
|||
| 5744c8bdc0 | |||
|
bb97a9b57a
|
|||
|
9a0586653a
|
|||
| f585fd6bf6 | |||
|
043a01c2ba
|
|||
|
9a0d65b8eb
|
|||
| dc66401240 | |||
|
ed3e432599
|
|||
| 1e60541d31 | |||
|
067149548b
|
|||
| 04dd7d5159 | |||
|
e5bddac748
|
|||
| 8e5333a756 | |||
|
fcb80ef5ce
|
|||
| 200b3d3e53 | |||
|
72faeb5d9f
|
|||
| 99eb52732e | |||
|
7bad547539
|
|||
|
286d2a6916
|
|||
|
fee52f9823
|
|||
|
4ab6624add
|
|||
|
209c25d05a
|
|||
|
a66fc97f2a
|
61
.gitea/workflows/create-major-tag.yml
Normal file
61
.gitea/workflows/create-major-tag.yml
Normal file
@@ -0,0 +1,61 @@
|
||||
name: Create Major Version Tag
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
update-major-tag:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write # nötig zum Löschen/Erstellen von Tags
|
||||
|
||||
steps:
|
||||
# ▸ 1. Repository beim Release-Tag auschecken
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # alle Tags holen
|
||||
ref: ${{ github.event.release.tag_name }}
|
||||
|
||||
# ▸ 2. Hauptversion aus dem Release-Tag extrahieren
|
||||
- name: Derive major version
|
||||
id: derive
|
||||
shell: bash
|
||||
run: |
|
||||
TAG="${{ github.event.release.tag_name }}" # z. B. v2.3.4
|
||||
echo "Release-Tag: $TAG"
|
||||
|
||||
TAG_NOPREFIX="${TAG#v}" # entfernt führendes v/V
|
||||
MAJOR="${TAG_NOPREFIX%%.*}" # nimmt Teil vor erstem Punkt
|
||||
MAJOR_TAG="v${MAJOR}" # z. B. v2
|
||||
|
||||
echo "Major-Tag: $MAJOR_TAG"
|
||||
echo "major_tag=$MAJOR_TAG" >>"$GITHUB_OUTPUT"
|
||||
|
||||
# ▸ 3. Altes Major-Tag (falls vorhanden) löschen und neu anlegen
|
||||
- name: Re-create major tag
|
||||
env:
|
||||
MAJOR_TAG: ${{ steps.derive.outputs.major_tag }}
|
||||
RELEASE_TAG: ${{ github.event.release.tag_name }}
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
git config user.name "$CI_COMMIT_AUTHOR_NAME"
|
||||
git config user.email "$CI_COMMIT_AUTHOR_EMAIL"
|
||||
|
||||
# Bestimmten Commit des Release-Tags ermitteln
|
||||
COMMIT_SHA="$(git rev-list -n 1 "$RELEASE_TAG")"
|
||||
|
||||
echo "Commit des Release-Tags: $COMMIT_SHA"
|
||||
|
||||
# (a) Lokal + remote altes Major-Tag entfernen (falls es existiert)
|
||||
git tag -d "$MAJOR_TAG" 2>/dev/null || true
|
||||
git push --delete origin "$MAJOR_TAG" 2>/dev/null || true
|
||||
|
||||
# (b) Neues annotiertes Tag erstellen und pushen
|
||||
git tag -a "$MAJOR_TAG" "$COMMIT_SHA" \
|
||||
-m "Update $MAJOR_TAG → $RELEASE_TAG"
|
||||
git push origin "$MAJOR_TAG"
|
||||
|
||||
echo "✅ $MAJOR_TAG zeigt nun auf $RELEASE_TAG ($COMMIT_SHA)"
|
||||
@@ -10,7 +10,10 @@ jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Release
|
||||
uses: https://git.0xmax42.io/actions/auto-changelog-release-action@978d002e9eb82247da53ddfb4fa2226527290919
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Release
|
||||
uses: https://git.0xmax42.io/actions/auto-changelog-release-action@main
|
||||
with:
|
||||
token: ${{ secrets.RELEASE_PUBLISH_TOKEN }}
|
||||
|
||||
56
CHANGELOG.md
Normal file
56
CHANGELOG.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [0.1.3](https://git.0xmax42.io/actions/auto-changelog-release-action/compare/v0.1.2..v0.1.3) - 2025-06-14
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- *(workflows)* Configure Git user in major tag creation - ([79921dd](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/79921dd63676138f2cfbcc3894f294b292f0a653))
|
||||
|
||||
## [0.1.2](https://git.0xmax42.io/actions/auto-changelog-release-action/compare/v0.1.0..v0.1.2) - 2025-06-14
|
||||
|
||||
### 🚀 Features
|
||||
|
||||
- *(workflows)* Add workflow to create major version tags - ([9a05866](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/9a0586653a5e7aa6a3acb12d119f4a43c09e96c1))
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- *(workflows)* Update action to main branch - ([043a01c](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/043a01c2bacb78f3c872056f7d18aab4e845a401))
|
||||
- *(workflows)* Update action version in release workflow - ([9a0d65b](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/9a0d65b8eba3d1e06c88bc02f19e2dd5a7d0a731))
|
||||
|
||||
## [0.1.0] - 2025-06-14
|
||||
|
||||
### 🚀 Features
|
||||
|
||||
- *(config)* Update remote repository details in cliff.toml - ([0671495](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/067149548b8c4a522da1504f21a9a6745acc279e))
|
||||
- *(workflows)* Add token input for release action - ([fcb80ef](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/fcb80ef5ce808537df1e269e203dcd234a4a7657))
|
||||
- *(action)* Add environment variables for version detection - ([72faeb5](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/72faeb5d9ffbebff0b704d53cb6123c87f65887f))
|
||||
- *(workflow)* Enhance release process with additional steps - ([7bad547](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/7bad5475390a927f14ed5eccd31c4268dd0d7a28))
|
||||
- *(action)* Add default values for optional inputs - ([fee52f9](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/fee52f98233ac367dda3d362df1949defd600714))
|
||||
- *(workflows)* Enhance release process with additional steps - ([4ab6624](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/4ab6624add5de4e52fe2aff373b1a2f22f2557bb))
|
||||
- *(workflows)* Add automated changelog and release workflow - ([84d0da4](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/84d0da4478cbe6b0ba6d60b3251544ed46597a36))
|
||||
- *(action)* Add composite action for changelog and release - ([978d002](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/978d002e9eb82247da53ddfb4fa2226527290919))
|
||||
- *(scripts)* Add CI utilities for versioning and changelog - ([048b964](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/048b96420488bae599ea8f2f7765a2e576b9f718))
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- *(action)* Ensure fallback for release token input - ([b65e9ee](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/b65e9ee5423a1701ac057a56a09973ed9b2ea7b8))
|
||||
|
||||
### 🚜 Refactor
|
||||
|
||||
- *(action)* Remove unused steps for version management - ([286d2a6](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/286d2a691683c364025cf0cdd08e4afd60c20356))
|
||||
- *(action)* Remove unused CLI setup steps - ([209c25d](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/209c25d05a79ec854f9dd49b1da820215e074ba2))
|
||||
- *(action)* Remove unused changelog and release steps - ([a66fc97](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/a66fc97f2a177b42c93a85bddf969065a849b3a6))
|
||||
|
||||
### 🎨 Styling
|
||||
|
||||
- *(vscode)* Customize activity bar and theme colors - ([53bad79](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/53bad793ebca739051ba3975aa2628283d3e08ff))
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- *(config)* Add git-cliff configuration for changelog generation - ([e5bddac](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/e5bddac7481a16b43cc81ec115b22c1b13de7425))
|
||||
- *(workflows)* Update release step with descriptive name - ([e73d132](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/e73d1324b7ea2095ef52512d0c140ef9a11d66f9))
|
||||
- *(gitignore)* Add rule to exclude environment files - ([14f0a9b](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/14f0a9b4b19e2f981417292a0b844485fbe2018e))
|
||||
|
||||
|
||||
13
action.yml
13
action.yml
@@ -5,23 +5,26 @@ inputs:
|
||||
token:
|
||||
description: "Gitea/GitHub PAT für Release-API"
|
||||
required: false
|
||||
default: ""
|
||||
author_name:
|
||||
description: "Commit-Autorname"
|
||||
required: false
|
||||
default: ""
|
||||
author_email:
|
||||
description: "Commit-Autore-Mail"
|
||||
required: false
|
||||
default: ""
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Detect version change
|
||||
shell: bash
|
||||
id: detect
|
||||
env:
|
||||
GITHUB_EVENT_BEFORE: ${{ github.event.before || '' }}
|
||||
GITHUB_SHA: ${{ github.sha || '' }}
|
||||
GITHUB_REF: ${{ github.ref || '' }}
|
||||
run: |
|
||||
bash ${{ github.action_path }}/scripts/detect-version-change.sh
|
||||
|
||||
|
||||
104
cliff.toml
Normal file
104
cliff.toml
Normal file
@@ -0,0 +1,104 @@
|
||||
# CLIFF_VERSION=2.8.0
|
||||
# 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.
|
||||
[remote.gitea]
|
||||
owner = "actions"
|
||||
repo = "auto-changelog-release-action"
|
||||
|
||||
[changelog]
|
||||
# postprocessors
|
||||
postprocessors = [
|
||||
{ pattern = '<GITEA_URL>', replace = "https://git.0xmax42.io" }, # replace gitea url
|
||||
]
|
||||
|
||||
# template for the changelog header
|
||||
header = """
|
||||
# Changelog\n
|
||||
All notable changes to this project will be documented in this file.\n
|
||||
"""
|
||||
# template for the changelog body
|
||||
# https://keats.github.io/tera/docs/#introduction
|
||||
body = """
|
||||
{%- macro remote_url() -%}
|
||||
<GITEA_URL>/{{ remote.gitea.owner }}/{{ remote.gitea.repo }}
|
||||
{%- endmacro -%}
|
||||
|
||||
{% if version %}\
|
||||
{% if previous.version %}\
|
||||
## [{{ version | trim_start_matches(pat="v") }}]\
|
||||
({{ self::remote_url() }}/compare/{{ previous.version }}..{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
|
||||
{% else %}\
|
||||
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
|
||||
{% endif %}\
|
||||
{% else %}\
|
||||
## [unreleased]
|
||||
{% endif %}\
|
||||
{% for group, commits in commits | group_by(attribute="group") %}
|
||||
### {{ group | striptags | trim | upper_first }}
|
||||
{% for commit in commits %}
|
||||
- {% 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 }}))\
|
||||
{% endfor %}
|
||||
{% endfor %}\n
|
||||
"""
|
||||
# template for the changelog footer
|
||||
footer = """
|
||||
|
||||
"""
|
||||
# remove the leading and trailing s
|
||||
trim = true
|
||||
|
||||
# render body even when there are no releases to process
|
||||
# render_always = true
|
||||
# output file path
|
||||
# output = "test.md"
|
||||
|
||||
[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}](<REPO>/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 = "^feat", group = "<!-- 0 -->🚀 Features" },
|
||||
{ message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
|
||||
{ message = "^doc", group = "<!-- 3 -->📚 Documentation" },
|
||||
{ message = "^perf", group = "<!-- 4 -->⚡ Performance" },
|
||||
{ message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
|
||||
{ message = "^style", group = "<!-- 5 -->🎨 Styling" },
|
||||
{ message = "^test", group = "<!-- 6 -->🧪 Testing" },
|
||||
{ message = "^chore\\(changelog\\)", skip = true },
|
||||
{ message = "^chore\\(version\\)", skip = true },
|
||||
{ message = "^chore\\(release\\): prepare for", skip = true },
|
||||
{ message = "^chore\\(deps.*\\)", skip = true },
|
||||
{ message = "^chore\\(pr\\)", skip = true },
|
||||
{ message = "^chore\\(pull\\)", skip = true },
|
||||
{ message = "^chore|^ci", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" },
|
||||
{ body = ".*security", group = "<!-- 8 -->🛡️ Security" },
|
||||
{ message = "^revert", group = "<!-- 9 -->◀️ Revert" },
|
||||
{ message = ".*", group = "<!-- 10 -->💼 Other" },
|
||||
]
|
||||
# Regex to select git tags that represent releases.
|
||||
tag_pattern = "v[0-9]+\\.[0-9]+\\.[0-9]+"
|
||||
# filter out the commits that are not matched by commit parsers
|
||||
filter_commits = false
|
||||
# sort the tags topologically
|
||||
topo_order = false
|
||||
# sort the commits inside sections by oldest/newest order
|
||||
sort_commits = "newest"
|
||||
Reference in New Issue
Block a user