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 jq curl - name: Code holen run: | REPO_URL="https://${RELEASE_TOKEN}:x-oauth-basic@${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}.git" git clone "$REPO_URL" repo cd repo git checkout "$TAG" env: RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} TAG: "${{ github.ref_name }}" - name: Version und Kanal bestimmen id: releaseinfo run: | TAG="${{ github.ref_name }}" RAW_VERSION="${TAG#v}" VERSION="${RAW_VERSION%%-*}" # Channel und Suffix automatisch bestimmen anhand des Tag-Suffix case "$RAW_VERSION" in *-testing*|*-t|*-T) CHANNEL="testing" PRERELEASE="true" SUFFIX="-testing" ;; *-unstable*|*-u|*-U) CHANNEL="unstable" PRERELEASE="true" SUFFIX="-unstable" ;; *) CHANNEL="stable" PRERELEASE="false" SUFFIX="" ;; esac # Output setzen echo "version=$VERSION" >> $GITHUB_OUTPUT echo "channel=$CHANNEL" >> $GITHUB_OUTPUT echo "prerelease=$PRERELEASE" >> $GITHUB_OUTPUT # Optional Debug 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 id: payload run: | cd repo NAME="${GITHUB_REPOSITORY##*/}" GROUP="${GITHUB_REPOSITORY%%/*}" VERSION="${{ steps.releaseinfo.outputs.version }}" CHANNEL="${{ steps.releaseinfo.outputs.channel }}" PRERELEASE="${{ steps.releaseinfo.outputs.prerelease }}" ZIP_FOLDER="${{ vars.ZIP_FOLDER }}" ZIP_FILE="${ZIP_FOLDER}.zip" TAG="${{ github.ref_name }}" #GIT_URL=${GITHUB_REPOSITORY} jq -n \ --arg name "$NAME" \ --arg group "$GROUP" \ --arg version "$VERSION" \ --arg channel "$CHANNEL" \ --arg prerelease "$PRERELEASE" \ --arg zip_folder "$ZIP_FOLDER" \ --arg zip_file "$ZIP_FILE" \ --arg tag "$TAG" \ '{ name: $name, group: $group, version: $version, channel: $channel, prerelease: ($prerelease == "true"), zip_folder: $zip_folder, zip_file: $zip_file, tag: $tag }' > payload.json cat payload.json - name: Repository aktualisieren run: | NAME="${GITHUB_REPOSITORY##*/}" TAG="${{ steps.releaseinfo.outputs.version }}"-"${{ steps.releaseinfo.outputs.channel }}" PAYLOAD_B64=$(base64 -w0 repo/payload.json) JSON="{\"ref\":\"hidden/workflows\",\"inputs\":{\"payload\":\"$PAYLOAD_B64\",\"name\":\"$NAME\",\"tag\":\"$TAG\"}}" curl -X POST \ -H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \ -H "Content-Type: application/json" \ -d "$JSON" \ "https://${{ vars.RELEASE_URL }}/api/v1/repos/${OWNER}/Repository/actions/workflows/${WORKFLOW}/dispatches" env: RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} OWNER: "AG_QGIS" WORKFLOW: "release.yaml"