Files
Plugin_Test_Action/.gitea/workflows/release.yaml
Michael Otto 03b4b6ae2a
All checks were successful
Release Plugin / release (push) Successful in 3s
Übergabe Repo-URL
2026-03-17 11:02:53 +01:00

121 lines
3.7 KiB
YAML

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: 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
- 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 }}"
GIT_URL=${GITHUB_REPOSITORY}
jq -n \
--arg version "$VERSION" \
--arg channel "$CHANNEL" \
--arg prerelease "$PRERELEASE" \
--arg zip_folder "$ZIP_FOLDER" \
--arg git_url "$GIT_URL" \
'{
version: $version,
channel: $channel,
prerelease: ($prerelease == "true"),
zip_folder: $zip_folder,
git_url: $git_url
}' > payload.json
- name: Repository aktualisieren
run: |
OWNER="AG_QGIS"
WORKFLOW="release.yaml"
PAYLOAD_B64=$(base64 -w0 repo/payload.json)
FULL_NAME="${{ steps.metadata.outputs.name }}"
NAME=$(echo "$FULL_NAME" | awk -F'|' '{gsub(/^ +| +$/,"",$2); print $2}')
TAG="${{ steps.releaseinfo.outputs.version }}"
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"