🔒 Robuster Release-Workflow mit Validierung
This commit is contained in:
parent
1210b40d58
commit
0df9633439
1 changed files with 11 additions and 26 deletions
37
.github/workflows/release.yml
vendored
37
.github/workflows/release.yml
vendored
|
|
@ -1,4 +1,4 @@
|
||||||
name: 🚀 GitHub Release
|
name: 🚀 GitHub Release (Full Changelog)
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
|
@ -7,45 +7,30 @@ on:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
create_release:
|
create_release:
|
||||||
name: 📦 GitHub Release erstellen
|
name: 📦 Release mit gesamtem CHANGELOG
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: 📥 Repository klonen
|
- name: 📥 Repository klonen
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: 📝 Release Notes aus CHANGELOG extrahieren
|
- name: 🔧 Lade gesamten Changelog-Inhalt
|
||||||
id: changelog
|
id: changelog
|
||||||
run: |
|
run: |
|
||||||
VERSION=${GITHUB_REF#refs/tags/}
|
CONTENT=$(cat CHANGELOG.md)
|
||||||
echo "📌 Version: $VERSION"
|
|
||||||
|
|
||||||
BODY=$(awk -v version="$VERSION" '
|
# Escape für GitHub-Aktionen
|
||||||
BEGIN { found = 0 }
|
CONTENT="${CONTENT//'%'/'%25'}"
|
||||||
$0 ~ "## \\[v"version"\\]" { found = 1; next }
|
CONTENT="${CONTENT//$'\n'/'%0A'}"
|
||||||
$0 ~ /^## \[v[0-9]+\.[0-9]+\.[0-9]+\]/ && found { exit }
|
CONTENT="${CONTENT//$'\r'/'%0D'}"
|
||||||
found { print }
|
|
||||||
' CHANGELOG.md)
|
|
||||||
|
|
||||||
echo "$BODY" > extracted_changelog.md
|
echo "body=$CONTENT" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
# Prüfen, ob Text extrahiert wurde
|
- name: 🚀 Release erstellen mit komplettem CHANGELOG
|
||||||
if [ ! -s extracted_changelog.md ]; then
|
|
||||||
echo "❌ Kein gültiger CHANGELOG-Eintrag für Version $VERSION gefunden. Abbruch."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
BODY_ESCAPED="${BODY//'%'/'%25'}"
|
|
||||||
BODY_ESCAPED="${BODY_ESCAPED//$'\n'/'%0A'}"
|
|
||||||
BODY_ESCAPED="${BODY_ESCAPED//$'\r'/'%0D'}"
|
|
||||||
|
|
||||||
echo "body=$BODY_ESCAPED" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- name: 🚀 GitHub Release veröffentlichen
|
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
name: ${{ github.ref_name }}
|
name: ${{ github.ref_name }}
|
||||||
body: ${{ steps.changelog.outputs.body }}
|
body: ${{ steps.changelog.outputs.body }}
|
||||||
files: extracted_changelog.md
|
files: CHANGELOG.md
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue