name: Release on: push: tags: - 'v*' jobs: release: name: Build & Release runs-on: ubuntu-latest timeout-minutes: 30 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 - uses: actions/checkout@v4 with: ssh-key: ${{ secrets.TEKTON_SSH_KEY }} ssh-strict: false - name: Setup Godot run: | if [ -f /cache/Godot_v4.6-stable_linux.x86_64.zip ]; then cp /cache/Godot_v4.6-stable_linux.x86_64.zip ./godot.zip else wget -q https://github.com/godotengine/godot-builds/releases/download/4.6-stable/Godot_v4.6-stable_linux.x86_64.zip -O godot.zip fi unzip -q godot.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 if [ -f /cache/Godot_v4.6-stable_export_templates.tpz ]; then cp /cache/Godot_v4.6-stable_export_templates.tpz /tmp/godot-templates.tpz else wget -q https://github.com/godotengine/godot-builds/releases/download/4.6-stable/Godot_v4.6-stable_export_templates.tpz -O /tmp/godot-templates.tpz fi unzip -o -q /tmp/godot-templates.tpz -d /tmp/godot-templates if [ -d /tmp/godot-templates/templates ]; then cp -a /tmp/godot-templates/templates/* ~/.local/share/godot/export_templates/4.6.stable/ else cp -a /tmp/godot-templates/* ~/.local/share/godot/export_templates/4.6.stable/ fi - name: Export Windows run: | mkdir -p build godot --headless --export-release "Windows Desktop" build/tekton_armageddon_windows.exe - name: Export Linux run: | godot --headless --export-release "Linux/X11" build/tekton_armageddon_linux.x86_64 - name: Build PCK run: | godot --headless -s tools/build_patch.gd mkdir -p build mv patch.pck build/tekton_armageddon.pck 2>/dev/null || true - name: List build artifacts run: ls -lh build/ - name: Create release id: gitea_release env: GITEA_TOKEN: ${{ secrets.TEKTON_RELEASE_TOKEN }} TAG_NAME: ${{ github.ref_name }} run: | API="http://100.79.174.108:3000/api/v1/repos/danchie/tekton/releases" RELEASE_JSON=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$API/tags/$TAG_NAME") RELEASE_ID=$(echo "$RELEASE_JSON" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*') if [ -z "$RELEASE_ID" ]; then RELEASE_JSON=$(curl -s -X POST \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"tag_name\": \"$TAG_NAME\", \"name\": \"$TAG_NAME\"}" \ "$API") RELEASE_ID=$(echo "$RELEASE_JSON" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*') fi echo "release_id=$RELEASE_ID" >> "$GITHUB_OUTPUT" - name: Upload Windows asset run: | curl -X POST \ -H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \ -H "Content-Type: multipart/form-data" \ -F "attachment=@build/tekton_armageddon_windows.exe" \ "http://100.79.174.108:3000/api/v1/repos/danchie/tekton/releases/${{ steps.gitea_release.outputs.release_id }}/assets" - name: Upload Linux asset run: | curl -X POST \ -H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \ -H "Content-Type: multipart/form-data" \ -F "attachment=@build/tekton_armageddon_linux.x86_64" \ "http://100.79.174.108:3000/api/v1/repos/danchie/tekton/releases/${{ steps.gitea_release.outputs.release_id }}/assets" - name: Upload PCK asset run: | curl -X POST \ -H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \ -H "Content-Type: multipart/form-data" \ -F "attachment=@build/tekton_armageddon.pck" \ "http://100.79.174.108:3000/api/v1/repos/danchie/tekton/releases/${{ steps.gitea_release.outputs.release_id }}/assets"