Files
Plugin_Test_Action/.gitea/workflows/release.yaml
Michael Otto a908970326
All checks were successful
Release Plugin / release (push) Successful in 3s
gitea actions ng10
2026-03-17 10:13:42 +01:00

107 lines
3.0 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
- 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