name: Update Plugin (Empfang) on: workflow_dispatch: inputs: payload: description: 'Base64-kodierter JSON-Payload' required: true jobs: update-plugin: runs-on: alpine-latest defaults: run: shell: bash steps: - name: Notwendige Abhängigkeiten installieren shell: sh run: | apk add --no-cache bash jq git - name: Repository klonen run: | git clone https://entwicklung.flurneuordnung-sachsen.de/AG_QGIS/Repository.git repo cd repo git checkout feature/release - name: Payload dekodieren und anzeigen run: | echo "Dekodierter Payload:" echo "${{ github.event.inputs.payload }}" | base64 -d - name: Payload als JSON einlesen id: payload run: | DECODED=$(echo "${{ github.event.inputs.payload }}" | base64 -d) echo "plugin=$(echo "$DECODED" | jq -r '.plugin')" >> $GITHUB_OUTPUT echo "version=$(echo "$DECODED" | jq -r '.version')" >> $GITHUB_OUTPUT echo "channel=$(echo "$DECODED" | jq -r '.channel')" >> $GITHUB_OUTPUT echo "description=$(echo "$DECODED" | jq -r '.description')" >> $GITHUB_OUTPUT echo "author=$(echo "$DECODED" | jq -r '.author')" >> $GITHUB_OUTPUT echo "email=$(echo "$DECODED" | jq -r '.email')" >> $GITHUB_OUTPUT echo "url=$(echo "$DECODED" | jq -r '.url')" >> $GITHUB_OUTPUT echo "changelog=$(echo "$DECODED" | jq -r '.changelog')" >> $GITHUB_OUTPUT - name: Empfangene Daten ausgeben run: | echo "Plugin: ${{ steps.payload.outputs.plugin }}" echo "Version: ${{ steps.payload.outputs.version }}" echo "Kanal: ${{ steps.payload.outputs.channel }}" echo "Beschreibung:${{ steps.payload.outputs.description }}" echo "Autor: ${{ steps.payload.outputs.author }}" echo "E-Mail: ${{ steps.payload.outputs.email }}" echo "URL: ${{ steps.payload.outputs.url }}" echo "Changelog: ${{ steps.payload.outputs.changelog }}" - name: XML-Datei bestimmen id: xmlfile run: | case "${{ steps.payload.outputs.channel }}" in stable) FILE="plugins.xml" ;; testing) FILE="plugins-testing.xml" ;; unstable) FILE="plugins-unstable.xml" ;; esac echo "file=$FILE" >> $GITHUB_OUTPUT echo "Nutze Datei: $FILE" - name: XML-Datei initialisieren run: | cd repo FILE="${{ steps.xmlfile.outputs.file }}" if [ ! -s "$FILE" ]; then echo "" > "$FILE" fi - name: Alten Plugin-Eintrag entfernen run: | cd repo FILE="${{ steps.xmlfile.outputs.file }}" PLUGIN="${{ steps.payload.outputs.plugin }}" # Entfernt den kompletten Plugin-Block sed -i "//d" "$FILE" - name: Neuen Plugin-Eintrag einfügen run: | cd repo FILE="${{ steps.xmlfile.outputs.file }}" PLUGIN="${{ steps.payload.outputs.plugin }}" VERSION="${{ steps.payload.outputs.version }}" DESCRIPTION="${{ steps.payload.outputs.description }}" AUTHOR="${{ steps.payload.outputs.author }}" EMAIL="${{ steps.payload.outputs.email }}" URL="${{ steps.payload.outputs.url }}" CHANGELOG="${{ steps.payload.outputs.changelog }}" ENTRY=$(cat < $DESCRIPTION $AUTHOR $EMAIL $URL $CHANGELOG EOF ) # Eintrag vor einfügen sed -i "/<\/plugins>/i $ENTRY" "$FILE" - name: Änderungen committen und pushen run: | cd repo git config user.name "Release Bot" git config user.email "release-bot@noreply.localhost" git add . git commit -m "Update ${{ steps.payload.outputs.plugin }} ${{ steps.payload.outputs.version }} (${{ steps.payload.outputs.channel }})" git push # name: Update Plugin (Empfang) # on: # workflow_dispatch: # inputs: # payload: # description: 'Base64-kodierter JSON-Payload' # required: true # jobs: # update-plugin: # runs-on: alpine-latest # defaults: # run: # shell: bash # steps: # - name: Notwendige Abhängigkeiten installieren # shell: sh # run: | # apk add --no-cache bash jq # - name: Payload dekodieren und anzeigen # run: | # echo "Dekodierter Payload:" # echo "${{ github.event.inputs.payload }}" | base64 -d # - name: Payload als JSON einlesen # id: payload # run: | # DECODED=$(echo "${{ github.event.inputs.payload }}" | base64 -d) # echo "plugin=$(echo "$DECODED" | jq -r '.plugin')" >> $GITHUB_OUTPUT # echo "version=$(echo "$DECODED" | jq -r '.version')" >> $GITHUB_OUTPUT # echo "channel=$(echo "$DECODED" | jq -r '.channel')" >> $GITHUB_OUTPUT # echo "description=$(echo "$DECODED" | jq -r '.description')" >> $GITHUB_OUTPUT # echo "author=$(echo "$DECODED" | jq -r '.author')" >> $GITHUB_OUTPUT # echo "email=$(echo "$DECODED" | jq -r '.email')" >> $GITHUB_OUTPUT # echo "url=$(echo "$DECODED" | jq -r '.url')" >> $GITHUB_OUTPUT # echo "changelog=$(echo "$DECODED" | jq -r '.changelog')" >> $GITHUB_OUTPUT # - name: Empfangene Daten ausgeben # run: | # echo "Plugin: ${{ steps.payload.outputs.plugin }}" # echo "Version: ${{ steps.payload.outputs.version }}" # echo "Kanal: ${{ steps.payload.outputs.channel }}" # echo "Beschreibung:${{ steps.payload.outputs.description }}" # echo "Autor: ${{ steps.payload.outputs.author }}" # echo "E-Mail: ${{ steps.payload.outputs.email }}" # echo "URL: ${{ steps.payload.outputs.url }}" # echo "Changelog: ${{ steps.payload.outputs.changelog }}" # # Ab hier deine eigentliche Logik, z.B. Repository-Datei aktualisieren: # # - name: plugins.json aktualisieren # # run: | # # ...