name: Deploy Patch on: workflow_dispatch: inputs: version: description: 'Patch version (e.g., 2.4.2)' required: true type: string notes: description: 'Release notes' required: false type: string jobs: build-patch: name: Build Patch runs-on: ubuntu-latest timeout-minutes: 45 steps: - name: Setup SSH config for Gitea run: | echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" >> /etc/ssh/ssh_config - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 ssh-key: ${{ secrets.TEKTON_SSH_KEY }} ssh-strict: false - name: Setup Godot run: | wget -q https://github.com/godotengine/godot-builds/releases/download/4.6-stable/Godot_v4.6-stable_linux.x86_64.zip unzip -q Godot_v4.6-stable_linux.x86_64.zip mv Godot_v4.6-stable_linux.x86_64 /usr/local/bin/godot chmod +x /usr/local/bin/godot - name: Install export templates run: | mkdir -v -p ~/.local/share/godot/export_templates/4.6.stable wget -q https://github.com/godotengine/godot-builds/releases/download/4.6-stable/Godot_v4.6-stable_export_templates.tpz unzip -q Godot_v4.6-stable_export_templates.tpz -d ~/.local/share/godot/export_templates/4.6.stable - name: Run patch build script env: PATCH_VERSION: ${{ github.event.inputs.version }} PATCH_NOTES: ${{ github.event.inputs.notes }} run: | python3 patch_version.py "$PATCH_VERSION" "$PATCH_NOTES" - name: Export Windows patch run: | mkdir -p build godot --headless --export-release "Windows Desktop" build/tekton_armageddon_patch_windows.exe - name: Export Linux patch run: | mkdir -p build godot --headless --export-release "Linux/X11" build/tekton_armageddon_patch_linux.x86_64 - name: Upload patch artifacts uses: actions/upload-artifact@v4 with: name: tekton-patch-${{ github.event.inputs.version }} path: | build/tekton_armageddon_patch_windows.exe build/tekton_armageddon_patch_linux.x86_64 retention-days: 30 deploy-patch: name: Deploy Patch runs-on: ubuntu-latest timeout-minutes: 15 needs: build-patch permissions: contents: write steps: - name: Download patch artifacts uses: actions/download-artifact@v4 with: name: tekton-patch-${{ github.event.inputs.version }} path: artifacts/patch - name: Get or create Gitea patch release id: gitea_release env: GITEA_TOKEN: ${{ secrets.TEKTON_RELEASE_TOKEN }} TAG_NAME: patch-${{ github.event.inputs.version }} RELEASE_NAME: "Patch ${{ github.event.inputs.version }}" RELEASE_NOTES: ${{ github.event.inputs.notes }} run: | API="https://git.klud.top/api/v1/repos/danchie/tekton/releases" RELEASE_JSON=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$API/tags/$TAG_NAME") RELEASE_ID=$(echo "$RELEASE_JSON" | python3 -c "import json,sys; print(json.load(sys.stdin).get('id',''))" 2>/dev/null) if [ -z "$RELEASE_ID" ]; then PAYLOAD=$(python3 -c "import json, os; print(json.dumps({'tag_name': os.environ['TAG_NAME'], 'name': os.environ['RELEASE_NAME'], 'body': os.environ['RELEASE_NOTES'], 'prerelease': True}))") RELEASE_JSON=$(curl -s -X POST \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d "$PAYLOAD" \ "$API") RELEASE_ID=$(echo "$RELEASE_JSON" | python3 -c "import json,sys; print(json.load(sys.stdin)['id'])") fi echo "release_id=$RELEASE_ID" >> "$GITHUB_OUTPUT" - name: Upload Windows patch asset run: | curl -X POST \ -H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \ -H "Content-Type: multipart/form-data" \ -F "attachment=@artifacts/patch/tekton_armageddon_patch_windows.exe" \ "https://git.klud.top/api/v1/repos/danchie/tekton/releases/${{ steps.gitea_release.outputs.release_id }}/assets" - name: Upload Linux patch asset run: | curl -X POST \ -H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \ -H "Content-Type: multipart/form-data" \ -F "attachment=@artifacts/patch/tekton_armageddon_patch_linux.x86_64" \ "https://git.klud.top/api/v1/repos/danchie/tekton/releases/${{ steps.gitea_release.outputs.release_id }}/assets"