Compare commits

...

11 Commits
v16 ... v32

Author SHA1 Message Date
Michael Otto
2e65ec4bc4 Release v29 2026-03-03 09:44:03 +01:00
Michael Otto
0ce29c9e84 Release v27 2026-03-03 09:36:12 +01:00
Michael Otto
75b7e8073a Release v26 2026-03-03 09:28:31 +01:00
Michael Otto
88a62af7c8 Release v25 2026-03-03 09:27:23 +01:00
Michael Otto
049c0f64ed Release v24 2026-03-03 09:26:38 +01:00
Michael Otto
efc695457f Release v23 2026-03-03 09:23:18 +01:00
Michael Otto
c73cde2e57 Release v22 2026-03-03 09:12:42 +01:00
Michael Otto
18e76984bb Release v21 2026-03-03 09:11:49 +01:00
Michael Otto
3f41de4fac Release v19 2026-03-03 09:04:39 +01:00
Michael Otto
b885021941 Release v18 2026-03-03 09:01:04 +01:00
Michael Otto
9bdff6a681 Add release workflow 2026-03-03 08:59:04 +01:00
2 changed files with 165 additions and 0 deletions

View File

@@ -71,6 +71,170 @@ jobs:
echo "DEBUG | metadata.txt erzeugt:"
cat metadata.txt
- name: ZIP-Datei erstellen
id: zip
run: |
cd repo
# Plugin-Ordnername aus .plugin/zip_folder lesen
ZIP_FOLDER=$(cat .plugin/zip_folder)
echo "DEBUG | Plugin-Ordnername: $ZIP_FOLDER"
VERSION="${{ steps.releaseinfo.outputs.version }}"
REPO_NAME="${GITHUB_REPOSITORY##*/}"
ZIP_NAME="${REPO_NAME}-${VERSION}.zip"
echo "DEBUG | ZIP wird erzeugt: $ZIP_NAME"
# Temporären Build-Ordner anlegen
mkdir -p dist/${ZIP_FOLDER}
# Plugin-Dateien kopieren (alles außer CI-/Meta-Verzeichnisse)
rsync -a \
--exclude='.git' \
--exclude='.gitea' \
--exclude='.plugin' \
--exclude='dist' \
./ dist/${ZIP_FOLDER}/
# ZIP erzeugen
cd dist
zip -r "${ZIP_NAME}" "${ZIP_FOLDER}/" \
-x "*.pyc" -x "*/__pycache__/*"
cd ..
# ZIP-Name für spätere Steps bereitstellen
echo "zip_name=${ZIP_NAME}" >> $GITHUB_OUTPUT
echo "DEBUG | ZIP-Datei erzeugt: dist/${ZIP_NAME}"
- name: GiteaRelease erstellen
id: create_release
run: |
TAG="${{ github.ref_name }}"
VERSION="${{ steps.releaseinfo.outputs.version }}"
CHANNEL="${{ steps.releaseinfo.outputs.channel }}"
echo "Erstelle Release für Tag: $TAG"
echo "Version: $VERSION"
echo "Kanal: $CHANNEL"
API_URL="https://${{ vars.RELEASE_URL }}/api/v1/repos/${GITHUB_REPOSITORY}/releases"
# JSONBody erzeugen
JSON=$(jq -n \
--arg tag "$TAG" \
--arg name "Version $VERSION" \
--arg body "Automatisch erzeugtes Release für Kanal: $CHANNEL" \
'{tag_name: $tag, name: $name, body: $body, draft: false, prerelease: false}')
echo "Sende APIRequest an: $API_URL"
echo "JSONPayload:"
echo "$JSON"
# Release erstellen
API_RESPONSE=$(curl -s -X POST "$API_URL" \
-H "accept: application/json" \
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
-H "Content-Type: application/json" \
-d "$JSON")
RELEASE_ID=$(echo "$API_RESPONSE" | jq -r '.id')
if [ "$RELEASE_ID" = "null" ] || [ -z "$RELEASE_ID" ]; then
echo "Fehler beim Erstellen des Releases!"
echo "APIAntwort:"
echo "$API_RESPONSE"
exit 1
fi
echo "Release erfolgreich erstellt. ID: $RELEASE_ID"
echo "release_id=$RELEASE_ID" >> $GITHUB_OUTPUT
- name: ZIP-Datei hochladen
run: |
RELEASE_ID="${{ steps.create_release.outputs.release_id }}"
ZIP_NAME="${{ steps.zip.outputs.zip_name }}"
echo "Lade ZIP-Datei hoch: $ZIP_NAME"
echo "Release-ID: $RELEASE_ID"
API_URL="https://${{ vars.RELEASE_URL }}/api/v1/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets?name=${ZIP_NAME}"
curl -s -X POST "$API_URL" \
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
-H "Content-Type: application/zip" \
--data-binary "@repo/dist/${ZIP_NAME}" \
-o upload_response.json
echo "Upload-Antwort:"
cat upload_response.json
# Optional: Fehlerprüfung
if jq -e '.id' upload_response.json >/dev/null 2>&1; then
echo "ZIP erfolgreich hochgeladen."
else
echo "Fehler beim Hochladen der ZIP!"
exit 1
fi
- name: Payload erzeugen
run: |
cd repo
PLUGIN_NAME=$(grep '^name=' metadata.txt | cut -d '=' -f2)
DESCRIPTION=$(grep '^description=' metadata.txt | cut -d '=' -f2)
AUTHOR=$(grep '^author=' metadata.txt | cut -d '=' -f2)
EMAIL=$(grep '^email=' metadata.txt | cut -d '=' -f2)
VERSION="${{ steps.releaseinfo.outputs.version }}"
CHANNEL="${{ steps.releaseinfo.outputs.channel }}"
ZIP_NAME="${{ steps.zip.outputs.zip_name }}"
CHANGELOG="${{ steps.changelog.outputs.log }}"
DOWNLOAD_URL="https://${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}/releases/download/${{ github.ref_name }}/${ZIP_NAME}"
jq -n \
--arg plugin "$PLUGIN_NAME" \
--arg version "$VERSION" \
--arg channel "$CHANNEL" \
--arg description "$DESCRIPTION" \
--arg author "$AUTHOR" \
--arg email "$EMAIL" \
--arg url "$DOWNLOAD_URL" \
--arg changelog "$CHANGELOG" \
'{
plugin: $plugin,
version: $version,
channel: $channel,
description: $description,
author: $author,
email: $email,
url: $url,
changelog: $changelog
}' > payload.json
echo "Payload:"
cat payload.json
- name: Repository aktualisieren
run: |
OWNER="AG_QGIS" # z. B. dein Benutzername oder deine Organisation
WORKFLOW="update.yml" # Name der Workflow-Datei im Repository-Repo
curl -X POST \
-H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"ref\": \"feature/release\", \"inputs\": {}, \"event_type\": \"update_plugin\", \"client_payload\": $(cat repo/payload.json) }" \
"https://${{ vars.RELEASE_URL }}/api/v1/repos/${OWNER}/Repository/actions/workflows/${WORKFLOW}/dispatches"
# curl -X POST \
# -H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \
# -H "Content-Type: application/json" \
# -d @repo/payload.json \
# "https://${{ vars.RELEASE_URL }}/api/v1/repos/${OWNER}/Repository/actions/workflows/${WORKFLOW}/dispatches"
- name: Debug Info
run: |

1
.plugin/zip_folder Normal file
View File

@@ -0,0 +1 @@
sn_test