name: Release Plugin run-name: "Release | ${{ github.ref_name }}" on: push: tags: - 'v*' jobs: release: runs-on: alpine-latest defaults: run: shell: bash steps: - name: Notwendige Abhängigkeiten installieren shell: sh run: | apk add --no-cache bash git jd - name: Version und Kanal bestimmen id: releaseinfo run: | TAG="${{ github.ref_name }}" RAW_VERSION="${TAG#v}" BASE_VERSION="${RAW_VERSION%%-*}" # Volles Repo auschecken, damit wir Branch-Info haben REPO_URL="https://${RELEASE_TOKEN}:x-oauth-basic@${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}.git" git clone "$REPO_URL" repo cd repo # Branch ermitteln, auf dem der Tag liegt BRANCH=$(git branch -r --contains "$TAG" | grep -v 'HEAD' | head -n1 | sed 's|origin/||') # Channel und Suffix automatisch bestimmen case "$BRANCH" in main) CHANNEL="stable" PRERELEASE="false" SUFFIX="" ;; testing) CHANNEL="testing" PRERELEASE="true" SUFFIX="-testing" ;; unstable) CHANNEL="unstable" PRERELEASE="true" SUFFIX="-unstable" ;; *) # unbekannter Branch -> default unstable CHANNEL="unstable" PRERELEASE="true" SUFFIX="-unstable" ;; esac # Version zusammensetzen VERSION="${BASE_VERSION}${SUFFIX}" # Output setzen echo "version=$VERSION" >> $GITHUB_OUTPUT echo "channel=$CHANNEL" >> $GITHUB_OUTPUT echo "prerelease=$PRERELEASE" >> $GITHUB_OUTPUT # Debug echo "Tag: $TAG" echo "Version: $VERSION" echo "Channel: $CHANNEL" echo "Prerelease: $PRERELEASE" - name: plugin.cfg einlesen id: config run: | cd repo while read -r line || [ -n "$line" ]; do key="${line%%=*}" value="${line#*=}" echo "$key=$value" >> $GITHUB_OUTPUT done < plugin.cfg - name: Payload erzeugen run: | cd repo VERSION="${{ steps.releaseinfo.outputs.version }}" CHANNEL="${{ steps.releaseinfo.outputs.channel }}" PRERELEASE="${{ steps.releaseinfo.outputs.prerelease }}" ZIP_FOLDER="${{ steps.config.outputs.zip_folder }}" jq -n \ --arg version "$VERSION" \ --arg channel "$CHANNEL" \ --arg prerelease "$PRERELEASE" \ --arg zip_folder "$ZIP_FOLDER" \ '{ version: $version, channel: $channel, prerelease: ($prerelease == "true"), zip_folder: $zip_folder }' > payload.json cat payload.json