diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index feed553..3ac07a0 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -23,11 +23,9 @@ jobs: run: | # Tag aus GitHub Actions Kontext extrahieren TAG="${GITHUB_REF#refs/tags/}" - echo "DEBUG | Tag erkannt: $TAG" # Repo-URL dynamisch aus vars und github.repository bauen REPO_URL="https://${RELEASE_TOKEN}:x-oauth-basic@${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}.git" - echo "DEBUG | Klone von: $REPO_URL" # Repository klonen git clone "$REPO_URL" repo @@ -52,24 +50,6 @@ jobs: echo "version=${VERSION}" >> $GITHUB_OUTPUT echo "channel=${CHANNEL}" >> $GITHUB_OUTPUT - echo "DEBUG | Version: $VERSION" - echo "DEBUG | Kanal: $CHANNEL" - - # - name: metadata.txt erzeugen - # run: | - # cd repo - - # VERSION="${{ steps.releaseinfo.outputs.version }}" - - # # Vorlage kopieren - # cp .plugin/metadata.template metadata.txt - - # # Platzhalter ersetzen - # sed -i "s/@VERSION@/${VERSION}/g" metadata.txt - - # echo "DEBUG | metadata.txt erzeugt:" - # cat metadata.txt - - name: plugin.info einlesen id: info run: | @@ -78,8 +58,30 @@ jobs: echo "$key=$value" >> $GITHUB_OUTPUT done < plugin.info - echo "DEBUG | plugin.info geladen:" - cat plugin.info + - name: Changelog einlesen + id: changelog + run: | + cd repo + + # Aktueller Block = alles vor dem ersten --- + CURRENT=$(sed '/^---/Q' changelog.txt) + + # Vollständige Historie für Gitea Release Body + # Aktuelle Version aus Tag voranstellen + VERSION="${{ steps.releaseinfo.outputs.version }}" + FULL=$(printf "## %s\n%s\n\n%s" \ + "$VERSION" \ + "$CURRENT" \ + "$(sed '1,/^---/d' changelog.txt)") + + # Für GITHUB_OUTPUT: Newlines escapen + echo "current<> $GITHUB_OUTPUT + echo "$CURRENT" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + + echo "full<> $GITHUB_OUTPUT + echo "$FULL" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT - name: metadata.txt erzeugen run: | @@ -106,60 +108,17 @@ jobs: printf "%s\n" "$CONTENT" > "$OUT" - 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: ZIP-Datei erstellen id: zip run: | cd repo ZIP_FOLDER="${{ steps.info.outputs.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" - mkdir -p dist/${ZIP_FOLDER} rsync -a \ @@ -183,24 +142,14 @@ jobs: 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" - # JSON‑Body erzeugen JSON=$(jq -n \ - --arg tag "$TAG" \ - --arg name "Version $VERSION" \ - --arg body "Automatisch erzeugtes Release für Kanal: $CHANNEL" \ + --arg tag "$TAG" \ + --arg name "Version $VERSION" \ + --arg body "${{ steps.changelog.outputs.full }}" \ '{tag_name: $tag, name: $name, body: $body, draft: false, prerelease: false}') - echo "Sende API‑Request an: $API_URL" - echo "JSON‑Payload:" - echo "$JSON" - - # Release erstellen API_RESPONSE=$(curl -s -X POST "$API_URL" \ -H "accept: application/json" \ -H "Authorization: token ${{ secrets.RELEASE_TOKEN }}" \ @@ -209,24 +158,19 @@ jobs: RELEASE_ID=$(echo "$API_RESPONSE" | jq -r '.id') - if [ "$RELEASE_ID" = "null" ] || [ -z "$RELEASE_ID" ]; then - echo "Fehler beim Erstellen des Releases!" - echo "API‑Antwort:" - echo "$API_RESPONSE" - exit 1 - fi + if [ "$RELEASE_ID" = "null" ] || [ -z "$RELEASE_ID" ]; then + echo "Fehler beim Erstellen des Releases!" + echo "$API_RESPONSE" + exit 1 + fi - echo "Release erfolgreich erstellt. ID: $RELEASE_ID" - echo "release_id=$RELEASE_ID" >> $GITHUB_OUTPUT + 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" \ @@ -235,9 +179,6 @@ jobs: --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." @@ -246,45 +187,6 @@ jobs: 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: Payload erzeugen run: | cd repo @@ -296,67 +198,43 @@ jobs: DOWNLOAD_URL="https://${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}/releases/download/${{ github.ref_name }}/${ZIP_NAME}" jq -n \ - --arg name "${{ steps.info.outputs.name }}" \ - --arg version "$VERSION" \ - --arg channel "$CHANNEL" \ - --arg description "${{ steps.info.outputs.description }}" \ - --arg author "${{ steps.info.outputs.author }}" \ - --arg email "${{ steps.info.outputs.email }}" \ - --arg qgis_min "${{ steps.info.outputs.qgisMinimumVersion }}" \ - --arg qgis_max "${{ steps.info.outputs.qgisMaximumVersion }}" \ - --arg homepage "${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}" \ - --arg tracker "$${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}" \ - --arg repository "$${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}" \ - --arg experimental "${{ steps.info.outputs.experimental }}" \ - --arg deprecated "${{ steps.info.outputs.deprecated }}" \ - --arg qt6 "${{ steps.info.outputs.supportsQt6 }}" \ - --arg id "${{ steps.info.outputs.zip_folder }}" \ - --arg url "$DOWNLOAD_URL" \ - --arg changelog "Automatischer Release" \ + --arg name "${{ steps.info.outputs.name }}" \ + --arg version "$VERSION" \ + --arg channel "$CHANNEL" \ + --arg description "${{ steps.info.outputs.description }}" \ + --arg author "${{ steps.info.outputs.author }}" \ + --arg email "${{ steps.info.outputs.email }}" \ + --arg qgis_min "${{ steps.info.outputs.qgisMinimumVersion }}" \ + --arg qgis_max "${{ steps.info.outputs.qgisMaximumVersion }}" \ + --arg homepage "${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}" \ + --arg tracker "${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}" \ + --arg repository "${{ vars.RELEASE_URL }}/${GITHUB_REPOSITORY}" \ + --arg experimental "${{ steps.info.outputs.experimental }}" \ + --arg deprecated "${{ steps.info.outputs.deprecated }}" \ + --arg qt6 "${{ steps.info.outputs.supportsQt6 }}" \ + --arg id "${{ steps.info.outputs.zip_folder }}" \ + --arg url "$DOWNLOAD_URL" \ + --arg changelog "${{ steps.changelog.outputs.current }}" \ '{ - name: $name, - version: $version, - channel: $channel, - description: $description, - author: $author, - email: $email, - qgis_min: $qgis_min, - qgis_max: $qgis_max, - homepage: $homepage, - tracker: $tracker, - repository: $repository, - experimental: $experimental, - deprecated: $deprecated, - qt6: $qt6, - id: $id, - url: $url, - changelog: $changelog + name: $name, + version: $version, + channel: $channel, + description: $description, + author: $author, + email: $email, + qgis_min: $qgis_min, + qgis_max: $qgis_max, + homepage: $homepage, + tracker: $tracker, + repository: $repository, + experimental: $experimental, + deprecated: $deprecated, + qt6: $qt6, + id: $id, + url: $url, + changelog: $changelog }' > payload.json - echo "DEBUG | Payload erzeugt:" - cat payload.json - - - # - name: Repository aktualisieren - # run: | - # OWNER="AG_QGIS" - # WORKFLOW="update.yml" - - # # payload.json in Base64 umwandeln - # PAYLOAD_B64=$(base64 -w0 repo/payload.json) - - # # JSON für Gitea bauen - # JSON="{\"ref\":\"feature/release\",\"inputs\":{\"payload\":\"$PAYLOAD_B64\"}}" - - # echo "Sende JSON:" - # echo "$JSON" - - # 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" - - name: Repository aktualisieren run: | OWNER="AG_QGIS" diff --git a/.plugin/changelog.txt b/changelog.txt similarity index 92% rename from .plugin/changelog.txt rename to changelog.txt index efe02ee..bc67dd4 100644 --- a/.plugin/changelog.txt +++ b/changelog.txt @@ -1,4 +1,3 @@ -0.2.0 - Feature XY hinzugefügt - Bug Z behoben 0.1.0 diff --git a/plugin.info b/plugin.info index ae13d8a..c69ce7f 100644 --- a/plugin.info +++ b/plugin.info @@ -5,7 +5,7 @@ email=daniel.helbig@kreis-meissen.de, michael.otto@landkreis-mittelsachsen.de qgisMinimumVersion=3.0 qgisMaximumVersion=3.99 deprecated=False -experimental=True +experimental=True supportsQt6=Yes zip_folder=plugin_folder