name: Release Plugin on: push: tags: - 'v*' branches: - feature/release # Zum Testen: auch bei Branch-Push auslösen jobs: release: runs-on: alpine-latest steps: - uses: actions/checkout@v3 - name: Install dependencies run: apk add --no-cache zip curl - name: Determine channel from tag id: channel run: | # 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}\" } }"