diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 99707a6..7145972 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -1,20 +1,98 @@ -name: Build custom release zip +name: Release Plugin on: push: tags: - - '*' # läuft bei jedem neuen Tag + - 'v*' + branches: + - feature/release # Zum Testen: auch bei Branch-Push auslösen jobs: - build-release: - runs-on: docker + release: + runs-on: alpine-latest steps: - # 1. Repository auschecken - - name: Checkout - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - # 2. ZIP-Datei mit ausgewählten Dateien/Ordnern erstellen - - name: Create custom zip + - name: Install dependencies + run: apk add --no-cache zip curl + + - name: Determine channel from tag + id: channel run: | - apk add zip - zip -r my-release-${GITEA_REF_NAME}.zip src/ docs/ README.md \ No newline at end of file + # Bei Branch-Push (kein Tag): dev als Default + TAG="${{ github.ref_name }}" + if [[ "$TAG" =~ -dev ]]; then + echo "channel=dev" >> $GITHUB_OUTPUT + echo "version=$TAG" >> $GITHUB_OUTPUT + elif [[ "$TAG" =~ -beta ]]; then + echo "channel=beta" >> $GITHUB_OUTPUT + echo "version=$TAG" >> $GITHUB_OUTPUT + elif [[ "$TAG" =~ ^v[0-9] ]]; then + echo "channel=stable" >> $GITHUB_OUTPUT + echo "version=$TAG" >> $GITHUB_OUTPUT + else + # Branch-Push ohne Tag → dev-Build + echo "channel=dev" >> $GITHUB_OUTPUT + echo "version=dev-$(date +%Y%m%d-%H%M)" >> $GITHUB_OUTPUT + fi + + - name: Build plugin ZIP + run: | + PLUGIN_NAME="Plugin_Test_Action" + VERSION="${{ steps.channel.outputs.version }}" + mkdir -p dist + zip -r dist/${PLUGIN_NAME}-${VERSION}.zip \ + ${PLUGIN_NAME}/ \ + -x "*.pyc" -x "*/__pycache__/*" + echo "ZIP_PATH=dist/${PLUGIN_NAME}-${VERSION}.zip" >> $GITHUB_ENV + echo "PLUGIN_NAME=${PLUGIN_NAME}" >> $GITHUB_ENV + echo "VERSION=${VERSION}" >> $GITHUB_ENV + + - name: Create Gitea Release + id: create_release + run: | + IS_PRERELEASE=true + [[ "${{ steps.channel.outputs.channel }}" == "stable" ]] && IS_PRERELEASE=false + + RESPONSE=$(curl -s -X POST \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + -H "Content-Type: application/json" \ + "${{ vars.GITEA_URL }}/api/v1/repos/${{ github.repository }}/releases" \ + -d "{ + \"tag_name\": \"${VERSION}\", + \"name\": \"Release ${VERSION}\", + \"prerelease\": ${IS_PRERELEASE} + }") + echo "RELEASE_ID=$(echo $RESPONSE | grep -o '\"id\":[0-9]*' | head -1 | cut -d: -f2)" >> $GITHUB_ENV + + - name: Upload ZIP asset + run: | + curl -s -X POST \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + -H "Content-Type: application/zip" \ + "${{ vars.GITEA_URL }}/api/v1/repos/${{ github.repository }}/releases/${RELEASE_ID}/assets?name=$(basename ${ZIP_PATH})" \ + --data-binary @${ZIP_PATH} + + - name: Get asset download URL + run: | + ASSETS=$(curl -s \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + "${{ vars.GITEA_URL }}/api/v1/repos/${{ github.repository }}/releases/${RELEASE_ID}/assets") + DOWNLOAD_URL=$(echo $ASSETS | grep -o '"browser_download_url":"[^"]*' | head -1 | cut -d'"' -f4) + echo "DOWNLOAD_URL=${DOWNLOAD_URL}" >> $GITHUB_ENV + + - name: Trigger Repository update + run: | + curl -s -X POST \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + -H "Content-Type: application/json" \ + "${{ vars.GITEA_URL }}/api/v1/repos/${{ github.repository_owner }}/Repository/dispatches" \ + -d "{ + \"type\": \"plugin-released\", + \"payload\": { + \"plugin\": \"${PLUGIN_NAME}\", + \"version\": \"${VERSION}\", + \"channel\": \"${{ steps.channel.outputs.channel }}\", + \"download_url\": \"${DOWNLOAD_URL}\" + } + }" \ No newline at end of file diff --git a/metadata.txt b/metadata.txt index 47af179..0fac9f7 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,21 +1,13 @@ [general] -name=LNO Sachsen | Basisfunktionen +name=LNO Sachsen | Plugin Test Action qgisMinimumVersion=3.0 -description=Dieses Plugin ist ein Test -version=25.10.3 +qgisMaximumVersion=3.99 +description=Test plugin for release pipeline +version=26.3.1 author=Michael Otto email=michael.otto@landkreis-mittelsachsen.de - -about=Provide a brief description of the plugin and its purpose. - -hasProcessingProvider=no -tags=python - -category=Plugins -icon=icon.png -experimental=True - -deprecated=False - -server=False - +homepage=https://entwicklung.flurneuordnung-sachsen.de/AG_QGIS/Plugin_Test_Action +tracker=https://entwicklung.flurneuordnung-sachsen.de/AG_QGIS/Plugin_Test_Action/issues +repository=https://entwicklung.flurneuordnung-sachsen.de/AG_QGIS/Plugin_Test_Action +experimental=False +deprecated=False \ No newline at end of file