65 lines
1.9 KiB
YAML
65 lines
1.9 KiB
YAML
name: Release
|
|
|
|
# Ausloeser: Tag im Format <skill-name>/v<x.y.z>, z. B. wordcraft-mcp/v0.1.0
|
|
on:
|
|
push:
|
|
tags: ['*/v*']
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
release:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Tag zerlegen
|
|
id: tag
|
|
run: |
|
|
TAG="$GITHUB_REF_NAME"
|
|
SKILL="${TAG%%/v*}"
|
|
VERSION="${TAG#*/v}"
|
|
if [ ! -d "skills/$SKILL" ]; then
|
|
echo "::error::Skill '$SKILL' aus Tag '$TAG' existiert nicht unter skills/."
|
|
exit 1
|
|
fi
|
|
echo "skill=$SKILL" >> "$GITHUB_OUTPUT"
|
|
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Version gegen CHANGELOG pruefen
|
|
env:
|
|
SKILL: ${{ steps.tag.outputs.skill }}
|
|
VERSION: ${{ steps.tag.outputs.version }}
|
|
run: |
|
|
source scripts/lib.sh
|
|
CL="$(skill_version "skills/$SKILL")"
|
|
if [ "$CL" != "$VERSION" ]; then
|
|
echo "::error::Tag-Version $VERSION passt nicht zur CHANGELOG-Version '$CL' von $SKILL."
|
|
exit 1
|
|
fi
|
|
|
|
- name: Verpacken
|
|
run: bash scripts/package.sh "${{ steps.tag.outputs.skill }}"
|
|
|
|
- name: Release-Text aus CHANGELOG
|
|
env:
|
|
SKILL: ${{ steps.tag.outputs.skill }}
|
|
VERSION: ${{ steps.tag.outputs.version }}
|
|
run: |
|
|
awk -v v="$VERSION" '
|
|
index($0, "## " v " ") == 1 { on = 1; next }
|
|
/^## / && on { exit }
|
|
on { print }' "skills/$SKILL/CHANGELOG.md" > notes.md
|
|
cat notes.md
|
|
|
|
- name: Release anlegen
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
SKILL: ${{ steps.tag.outputs.skill }}
|
|
VERSION: ${{ steps.tag.outputs.version }}
|
|
run: |
|
|
gh release create "$GITHUB_REF_NAME" "dist/$SKILL-$VERSION.zip" \
|
|
--title "$SKILL $VERSION" \
|
|
--notes-file notes.md
|