name: Release # Ausloeser: Tag im Format /v, 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