33 Commits

Author SHA1 Message Date
bbdd116645 chore(changelog): update changelog for v0.2.1
All checks were successful
Create Major Version Tag / update-major-tag (release) Successful in 4s
2025-06-14 17:23:50 +00:00
bad396a5ff chore(version): bump version to 0.2.1
All checks were successful
Auto Changelog & Release / release (push) Successful in 7s
2025-06-14 19:23:41 +02:00
69a28efe62 chore(changelog): update unreleased changelog 2025-06-14 17:23:10 +00:00
3839fd8de0 chore(version): bump version to 0.2.0
All checks were successful
Auto Changelog & Release / release (push) Successful in 7s
- Updates version number from 0.1.3 to 0.2.0 in preparation for release
2025-06-14 19:21:34 +02:00
29243bd673 feat(release): add retry logic for release creation
- Introduces a `create_release` function with retry logic to handle
  transient failures during release creation.
- Improves error handling and logging for better debugging.
- Adjusts changelog parsing and workflow steps for clarity and
  robustness.
2025-06-14 19:21:34 +02:00
ad1f85e1f7 chore(changelog): update changelog for v0.1.3
All checks were successful
Create Major Version Tag / update-major-tag (release) Successful in 3s
2025-06-14 17:12:44 +00:00
03674e57c3 chore(version): bump version to 0.1.3
All checks were successful
Auto Changelog & Release / release (push) Successful in 7s
2025-06-14 19:12:35 +02:00
c20d53cf61 chore(changelog): update unreleased changelog 2025-06-14 17:12:24 +00:00
79921dd636 fix(workflows): configure Git user in major tag creation
All checks were successful
Auto Changelog & Release / release (push) Successful in 6s
- Adds Git user configuration to ensure correct author information
  during major tag creation workflow.
- Helps avoid potential issues with missing author details.
2025-06-14 19:12:07 +02:00
b20b8688c1 chore(version): bump version to 0.1.2
Some checks failed
Auto Changelog & Release / release (push) Successful in 6s
Create Major Version Tag / update-major-tag (release) Failing after 3s
2025-06-14 19:10:54 +02:00
5744c8bdc0 chore(changelog): update changelog for v0.1.1 2025-06-14 17:08:33 +00:00
bb97a9b57a chore(version): bump version to 0.1.1
Some checks failed
Auto Changelog & Release / release (push) Failing after 6s
2025-06-14 19:08:22 +02:00
9a0586653a feat(workflows): add workflow to create major version tags
- Introduces a GitHub Actions workflow to manage major version tags
- Automates deriving and updating the major tag upon release publication
- Improves release consistency and simplifies tag management
2025-06-14 19:08:16 +02:00
f585fd6bf6 chore(changelog): update unreleased changelog 2025-06-14 17:03:51 +00:00
043a01c2ba chore(workflows): update action to main branch
All checks were successful
Auto Changelog & Release / release (push) Successful in 7s
- Switches auto-changelog-release-action from v0 to main branch
- Ensures the latest updates are used for the release workflow
2025-06-14 19:03:41 +02:00
9a0d65b8eb chore(workflows): update action version in release workflow
Some checks failed
Auto Changelog & Release / release (push) Failing after 1s
- Updates the action version from `main` to `v0` for better stability.
- Ensures consistent behavior during the release process.
2025-06-14 19:01:30 +02:00
dc66401240 chore(changelog): update changelog for v0.1.0 2025-06-14 17:00:20 +00:00
ed3e432599 chore(version): add initial version file
All checks were successful
Auto Changelog & Release / release (push) Successful in 7s
- Introduces a VERSION file to track the project's version.
- Sets the initial version to 0.1.0.
2025-06-14 19:00:12 +02:00
1e60541d31 chore(changelog): update unreleased changelog 2025-06-14 16:59:31 +00:00
067149548b feat(config): update remote repository details in cliff.toml
All checks were successful
Auto Changelog & Release / release (push) Successful in 5s
- Change owner to "actions" and repository to "auto-changelog-release-action"
- Aligns configuration with new repository structure or usage
2025-06-14 18:59:24 +02:00
04dd7d5159 chore(changelog): update unreleased changelog 2025-06-14 16:58:51 +00:00
e5bddac748 chore(config): add git-cliff configuration for changelog generation
All checks were successful
Auto Changelog & Release / release (push) Successful in 5s
- Introduces a default configuration file for git-cliff
- Configures changelog templates, commit parsers, and postprocessors
- Enables conventional commits and filters unconventional commits
- Adds Gitea-specific remote settings for repository details
2025-06-14 18:58:44 +02:00
8e5333a756 chore(changelog): update unreleased changelog 2025-06-14 16:58:06 +00:00
fcb80ef5ce feat(workflows): add token input for release action
All checks were successful
Auto Changelog & Release / release (push) Successful in 6s
- Adds `token` input to the release workflow to use a secret token.
- Enhances automation by enabling authenticated release publishing.
2025-06-14 18:57:59 +02:00
200b3d3e53 chore(changelog): update unreleased changelog 2025-06-14 16:56:21 +00:00
72faeb5d9f feat(action): add environment variables for version detection
All checks were successful
Auto Changelog & Release / release (push) Successful in 6s
- Introduces environment variables to enhance version detection
- Ensures compatibility with GitHub event context and references
2025-06-14 18:56:14 +02:00
99eb52732e chore(changelog): update unreleased changelog 2025-06-14 16:53:18 +00:00
7bad547539 feat(workflow): enhance release process with additional steps
All checks were successful
Auto Changelog & Release / release (push) Successful in 6s
- Add git-cliff installation and configuration for changelog generation
- Include CLIFF_VERSION detection and handling
- Improve git setup for release automation
- Refine conditional steps for changelog and version release
2025-06-14 18:53:10 +02:00
286d2a6916 refactor(action): remove unused steps for version management
Some checks failed
Auto Changelog & Release / release (push) Failing after 3s
- Simplifies the workflow by removing redundant steps
- Eliminates scripts for version reading, CLI installation, and changelog generation
- Focuses on reducing complexity and maintaining essential functionality
2025-06-14 18:50:39 +02:00
fee52f9823 feat(action): add default values for optional inputs
Some checks failed
Auto Changelog & Release / release (push) Failing after 3s
- Set default values for `token`, `author_name`, and `author_email`
  inputs to improve usability and avoid potential null issues
2025-06-14 18:50:00 +02:00
4ab6624add feat(workflows): enhance release process with additional steps
Some checks failed
Auto Changelog & Release / release (push) Failing after 3s
- Update action reference to use the main branch for stability
- Add scripts for version detection, CLI version reading, and git-cliff installation
- Include setup for git configuration and changelog generation
- Improve release logic based on version changes and branch checks
2025-06-14 18:49:22 +02:00
209c25d05a refactor(action): remove unused CLI setup steps
Some checks failed
Auto Changelog & Release / release (push) Failing after 2s
- Eliminate redundant steps for CLIFF version reading, git-cliff
  installation, and git setup to streamline action configuration
- Simplifies the workflow by focusing on essential functionality
2025-06-14 18:48:37 +02:00
a66fc97f2a refactor(action): remove unused changelog and release steps
Some checks failed
Auto Changelog & Release / release (push) Failing after 2s
- Remove steps for generating unreleased changelogs and releasing
  from version in the GitHub Action workflow.
- Simplify the workflow by retaining only essential steps.
2025-06-14 18:46:42 +02:00
7 changed files with 301 additions and 46 deletions

View 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)"

View File

@@ -10,7 +10,10 @@ jobs:
release: release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Release - uses: actions/checkout@v4
uses: https://git.0xmax42.io/actions/auto-changelog-release-action@978d002e9eb82247da53ddfb4fa2226527290919
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Release
uses: https://git.0xmax42.io/actions/auto-changelog-release-action@main
with:
token: ${{ secrets.RELEASE_PUBLISH_TOKEN }}

62
CHANGELOG.md Normal file
View File

@@ -0,0 +1,62 @@
# Changelog
All notable changes to this project will be documented in this file.
## [0.2.1](https://git.0xmax42.io/actions/auto-changelog-release-action/compare/v0.1.3..v0.2.1) - 2025-06-14
### 🚀 Features
- *(release)* Add retry logic for release creation - ([29243bd](https://git.0xmax42.io/actions/auto-changelog-release-action/commit/29243bd67344a3020fc3023d238dacbdd96c53ad))
## [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))

1
VERSION Normal file
View File

@@ -0,0 +1 @@
0.2.1

View File

@@ -5,23 +5,26 @@ inputs:
token: token:
description: "Gitea/GitHub PAT für Release-API" description: "Gitea/GitHub PAT für Release-API"
required: false required: false
default: ""
author_name: author_name:
description: "Commit-Autorname" description: "Commit-Autorname"
required: false required: false
default: ""
author_email: author_email:
description: "Commit-Autore-Mail" description: "Commit-Autore-Mail"
required: false required: false
default: ""
runs: runs:
using: "composite" using: "composite"
steps: steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Detect version change - name: Detect version change
shell: bash shell: bash
id: detect id: detect
env:
GITHUB_EVENT_BEFORE: ${{ github.event.before || '' }}
GITHUB_SHA: ${{ github.sha || '' }}
GITHUB_REF: ${{ github.ref || '' }}
run: | run: |
bash ${{ github.action_path }}/scripts/detect-version-change.sh bash ${{ github.action_path }}/scripts/detect-version-change.sh

104
cliff.toml Normal file
View 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"

View File

@@ -1,13 +1,59 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
create_release() {
local -r owner="$1" repo="$2" token="$3" version="$4" body_file="$5"
local -i max_attempts=3 delay=5 attempt
local http status
# Release-Body für die JSON-Payload einlesen
local body_json
body_json=$(tail -n +2 "$body_file" | jq -Rs .)
for (( attempt=1; attempt<=max_attempts; attempt++ )); do
echo "🚀 Try $attempt/$max_attempts: creating release v$version"
http=$(curl -sS \
-H "Authorization: token $token" \
-H "Content-Type: application/json" \
-o resp.json -w '%{http_code}' \
-X POST "$GITHUB_API_URL/repos/$owner/$repo/releases" \
-d @- <<EOF
{
"tag_name": "v$version",
"target_commitish": "main",
"name": "Release v$version",
"body": $body_json,
"draft": false,
"prerelease": false
}
EOF
)
status=$http
if [[ $status == 201 ]]; then
echo "✅ Release created (201)."
rm -f resp.json
return 0
elif [[ $status == 409 ]]; then
echo "🔁 Release already exists (409) – skipping."
rm -f resp.json
return 0
fi
echo "⚠️ Release attempt failed (HTTP $status)"
cat resp.json
[[ $attempt -lt $max_attempts ]] || { echo "❌ Giving up."; return 1; }
sleep $((delay*attempt)) # Back-off: 5 s, 10 s, 15 s …
done
}
VERSION_FILE="VERSION" VERSION_FILE="VERSION"
CHANGELOG_FILE="CHANGELOG.md" CHANGELOG_FILE="CHANGELOG.md"
CLIFF_CONFIG="cliff.toml" CLIFF_CONFIG="cliff.toml"
RELEASE_BODY_TMP="$(mktemp)" RELEASE_BODY_TMP="$(mktemp)"
BODY_OUTPUT_VAR="changelog_body_path"
# === Schritt 1: Read version from VERSION === # === Schritt 1: Version lesen ===
if [[ ! -f "$VERSION_FILE" ]]; then if [[ ! -f "$VERSION_FILE" ]]; then
echo "❌ VERSION file not found" echo "❌ VERSION file not found"
exit 1 exit 1
@@ -15,7 +61,7 @@ fi
VERSION="$(<"$VERSION_FILE")" VERSION="$(<"$VERSION_FILE")"
echo "📦 Version: $VERSION" echo "📦 Version: $VERSION"
# === Schritt 2: Generate changelog for release === # === Schritt 2: Changelog für Release erzeugen ===
echo "📄 Generating changelog for tag v$VERSION" echo "📄 Generating changelog for tag v$VERSION"
git-cliff -c "$CLIFF_CONFIG" -t "v$VERSION" -o "$CHANGELOG_FILE" git-cliff -c "$CLIFF_CONFIG" -t "v$VERSION" -o "$CHANGELOG_FILE"
@@ -24,19 +70,17 @@ ESCAPED_VERSION="$(echo "$VERSION" | sed 's/\./\\./g')"
awk -v ver="$ESCAPED_VERSION" ' awk -v ver="$ESCAPED_VERSION" '
$0 ~ "^## \\[" ver "\\]" { $0 ~ "^## \\[" ver "\\]" {
print_flag=1 print_flag=1
line = $0 line=$0
sub(/^## /, "", line) sub(/^## /,"",line)
sub(/\\s*\\(.*\\)/, "", line) # entfernt z. B. "(...)" oder "(*)" sub(/\\s*\\(.*\\)/,"",line)
print line print line
next next
} }
$0 ~ "^## \\[" && $0 !~ "^## \\[" ver "\\]" { $0 ~ "^## \\[" && $0 !~ "^## \\[" ver "\\]" { print_flag=0 }
print_flag=0
}
print_flag print_flag
' "$CHANGELOG_FILE" > "$RELEASE_BODY_TMP" ' "$CHANGELOG_FILE" > "$RELEASE_BODY_TMP"
# === Schritt 3: Commit updated changelog === # === Schritt 3: Changelog committen ===
git add "$CHANGELOG_FILE" git add "$CHANGELOG_FILE"
if git diff --cached --quiet; then if git diff --cached --quiet; then
echo "✅ No changes to commit" echo "✅ No changes to commit"
@@ -46,7 +90,7 @@ else
git push origin main git push origin main
fi fi
# === Schritt 4: Create tag if not exists === # === Schritt 4: Tag anlegen, falls nötig ===
if git rev-parse "v$VERSION" >/dev/null 2>&1; then if git rev-parse "v$VERSION" >/dev/null 2>&1; then
echo "🔁 Tag v$VERSION already exists, skipping." echo "🔁 Tag v$VERSION already exists, skipping."
else else
@@ -57,9 +101,9 @@ else
git push origin "v$VERSION" git push origin "v$VERSION"
fi fi
# === Schritt 5: Create Gitea release === # === Schritt 5: Release anlegen (mit Retry) ===
OWNER="$(echo "$GITHUB_REPOSITORY" | cut -d/ -f1)" OWNER="${GITHUB_REPOSITORY%/*}"
REPO="$(echo "$GITHUB_REPOSITORY" | cut -d/ -f2)" REPO="${GITHUB_REPOSITORY#*/}"
TOKEN="${RELEASE_PUBLISH_TOKEN:-$ACTIONS_RUNTIME_TOKEN}" TOKEN="${RELEASE_PUBLISH_TOKEN:-$ACTIONS_RUNTIME_TOKEN}"
if [[ -z "${RELEASE_PUBLISH_TOKEN:-}" ]]; then if [[ -z "${RELEASE_PUBLISH_TOKEN:-}" ]]; then
@@ -69,29 +113,6 @@ if [[ -z "${RELEASE_PUBLISH_TOKEN:-}" ]]; then
echo echo
fi fi
# Prüfen, ob Release bereits existiert create_release "$OWNER" "$REPO" "$TOKEN" "$VERSION" "$RELEASE_BODY_TMP"
if curl -sf "$GITHUB_API_URL/repos/$OWNER/$REPO/releases/tags/v$VERSION" \
-H "Authorization: token $TOKEN" > /dev/null; then
echo "🔁 Release for tag v$VERSION already exists, skipping."
exit 0
fi
echo "🚀 Creating Gitea release for v$VERSION" echo "🎉 Workflow finished successfully."
RELEASE_BODY=$(tail -n +2 "$RELEASE_BODY_TMP" | jq -Rs .)
curl -X POST "$GITHUB_API_URL/repos/$OWNER/$REPO/releases" \
-H "Authorization: token $TOKEN" \
-H "Content-Type: application/json" \
-d @- <<EOF
{
"tag_name": "v$VERSION",
"target_commitish": "main",
"name": "Release v$VERSION",
"body": $RELEASE_BODY,
"draft": false,
"prerelease": false
}
EOF
echo "✅ Release for tag $VERSION created successfully."