Clean the yml script
CI / Export Windows (push) Failing after 43s
CI / Export Linux (push) Failing after 1m4s
CI / Export Android (push) Failing after 55s
Test Suite / Unit Tests (GUT) (push) Failing after 39s
Test Suite / Integration Tests (push) Failing after 46s
Test Suite / Code Style Check (push) Failing after 46s
CI / Create Release (push) Has been skipped
Test Suite / Security Scan (push) Failing after 1m1s

This commit is contained in:
2026-07-02 16:40:52 +08:00
parent 82763e4d5a
commit e539a862d5
9 changed files with 208 additions and 142 deletions
+3 -15
View File
@@ -24,11 +24,6 @@ jobs:
timeout-minutes: 45 timeout-minutes: 45
if: github.event.inputs.platform == 'windows' || github.event.inputs.platform == 'all' if: github.event.inputs.platform == 'windows' || github.event.inputs.platform == 'all'
steps: steps:
- name: Setup SSH config for Gitea
run: |
mkdir -p ~/.ssh
echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" > ~/.ssh/config
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -50,6 +45,7 @@ jobs:
- name: Export Windows - name: Export Windows
run: | run: |
mkdir -p build
godot --headless --export-release "Windows Desktop" build/tekton_armageddon_${{ github.event.inputs.version || 'dev' }}_windows.exe godot --headless --export-release "Windows Desktop" build/tekton_armageddon_${{ github.event.inputs.version || 'dev' }}_windows.exe
- name: Upload artifact - name: Upload artifact
@@ -65,11 +61,6 @@ jobs:
timeout-minutes: 45 timeout-minutes: 45
if: github.event.inputs.platform == 'linux' || github.event.inputs.platform == 'all' if: github.event.inputs.platform == 'linux' || github.event.inputs.platform == 'all'
steps: steps:
- name: Setup SSH config for Gitea
run: |
mkdir -p ~/.ssh
echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" > ~/.ssh/config
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -91,6 +82,7 @@ jobs:
- name: Export Linux - name: Export Linux
run: | run: |
mkdir -p build
godot --headless --export-release "Linux/X11" build/tekton_armageddon_${{ github.event.inputs.version || 'dev' }}_linux.x86_64 godot --headless --export-release "Linux/X11" build/tekton_armageddon_${{ github.event.inputs.version || 'dev' }}_linux.x86_64
- name: Upload artifact - name: Upload artifact
@@ -106,11 +98,6 @@ jobs:
timeout-minutes: 60 timeout-minutes: 60
if: github.event.inputs.platform == 'android' || github.event.inputs.platform == 'all' if: github.event.inputs.platform == 'android' || github.event.inputs.platform == 'all'
steps: steps:
- name: Setup SSH config for Gitea
run: |
mkdir -p ~/.ssh
echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" > ~/.ssh/config
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -139,6 +126,7 @@ jobs:
- name: Export Android - name: Export Android
run: | run: |
mkdir -p build
godot --headless --export-release "Android" build/tekton_dash_armageddon_${{ github.event.inputs.version || 'dev' }}.apk godot --headless --export-release "Android" build/tekton_dash_armageddon_${{ github.event.inputs.version || 'dev' }}.apk
- name: Upload artifact - name: Upload artifact
+35 -4
View File
@@ -7,8 +7,7 @@ on:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: timeout-minutes: 45
image: barichello/godot-ci:4.2.1
steps: steps:
- name: Checkout - name: Checkout
run: | run: |
@@ -19,19 +18,51 @@ jobs:
git clone ssh://git@100.79.174.108:222/danchie/tekton.git . git clone ssh://git@100.79.174.108:222/danchie/tekton.git .
git checkout ${{ github.ref_name }} git checkout ${{ github.ref_name }}
- 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
sudo 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: Build Windows - name: Build Windows
run: mkdir -p build && godot --headless --export-release "Windows Desktop" build/tekton.exe run: mkdir -p build && godot --headless --export-release "Windows Desktop" build/tekton.exe
- name: Build Linux - name: Build Linux
run: godot --headless --export-release "Linux/X11" build/tekton.x86_64 run: godot --headless --export-release "Linux/X11" build/tekton.x86_64
- name: Get or create Gitea release
id: gitea_release
env:
GITEA_TOKEN: ${{ secrets.TEKTON_RELEASE_TOKEN }}
TAG_NAME: ${{ github.ref_name }}
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" | 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 Binary - name: Upload Windows Binary
run: | run: |
curl -X POST \ curl -X POST \
-H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \ -H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \
-H "Content-Type: multipart/form-data" \ -H "Content-Type: multipart/form-data" \
-F "attachment=@build/tekton.exe" \ -F "attachment=@build/tekton.exe" \
"https://git.klud.top/api/v1/repos/danchie/tekton/releases/tags/${{ github.ref_name }}" "https://git.klud.top/api/v1/repos/danchie/tekton/releases/${{ steps.gitea_release.outputs.release_id }}/assets"
- name: Upload Linux Binary - name: Upload Linux Binary
run: | run: |
@@ -39,4 +70,4 @@ jobs:
-H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \ -H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \
-H "Content-Type: multipart/form-data" \ -H "Content-Type: multipart/form-data" \
-F "attachment=@build/tekton.x86_64" \ -F "attachment=@build/tekton.x86_64" \
"https://git.klud.top/api/v1/repos/danchie/tekton/releases/tags/${{ github.ref_name }}" "https://git.klud.top/api/v1/repos/danchie/tekton/releases/${{ steps.gitea_release.outputs.release_id }}/assets"
+45 -59
View File
@@ -7,50 +7,11 @@ on:
branches: [main, experimental, patch-release] branches: [main, experimental, patch-release]
jobs: jobs:
test:
name: Run Tests
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Setup SSH config for Gitea
run: |
mkdir -p ~/.ssh
echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" > ~/.ssh/config
- name: Checkout repository
uses: actions/checkout@v4
with:
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
sudo mv Godot_v4.6-stable_linux.x86_64 /usr/local/bin/godot
chmod +x /usr/local/bin/godot
- name: Install dependencies
run: |
# Install Godot headless dependencies
sudo apt-get update
sudo apt-get install -y libvulkan1 libx11-6 libxcursor1 libxi6 libxrandr2 libxinerama1 libxi6 libxxf86vm1 libgl1
- name: Run GUT tests
run: |
godot --headless -d --path . -s addons/gut/gut_cmdln.gd
export-windows: export-windows:
name: Export Windows name: Export Windows
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 45 timeout-minutes: 45
needs: test
steps: steps:
- name: Setup SSH config for Gitea
run: |
mkdir -p ~/.ssh
echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" > ~/.ssh/config
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -72,6 +33,7 @@ jobs:
- name: Export Windows - name: Export Windows
run: | run: |
mkdir -p build
godot --headless --export-release "Windows Desktop" build/tekton_armageddon_windows.exe godot --headless --export-release "Windows Desktop" build/tekton_armageddon_windows.exe
- name: Upload Windows artifact - name: Upload Windows artifact
@@ -85,13 +47,7 @@ jobs:
name: Export Linux name: Export Linux
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 45 timeout-minutes: 45
needs: test
steps: steps:
- name: Setup SSH config for Gitea
run: |
mkdir -p ~/.ssh
echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" > ~/.ssh/config
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -113,6 +69,7 @@ jobs:
- name: Export Linux - name: Export Linux
run: | run: |
mkdir -p build
godot --headless --export-release "Linux/X11" build/tekton_armageddon_linux.x86_64 godot --headless --export-release "Linux/X11" build/tekton_armageddon_linux.x86_64
- name: Upload Linux artifact - name: Upload Linux artifact
@@ -126,13 +83,7 @@ jobs:
name: Export Android name: Export Android
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 60 timeout-minutes: 60
needs: test
steps: steps:
- name: Setup SSH config for Gitea
run: |
mkdir -p ~/.ssh
echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" > ~/.ssh/config
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -161,6 +112,7 @@ jobs:
- name: Export Android - name: Export Android
run: | run: |
mkdir -p build
godot --headless --export-release "Android" build/tekton_dash_armageddon.apk godot --headless --export-release "Android" build/tekton_dash_armageddon.apk
- name: Upload Android artifact - name: Upload Android artifact
@@ -197,11 +149,45 @@ jobs:
name: tekton-android name: tekton-android
path: artifacts/android path: artifacts/android
- name: Create Release - name: Get or create Gitea release
uses: softprops/action-gh-release@v2 id: gitea_release
with: env:
files: | GITEA_TOKEN: ${{ secrets.TEKTON_RELEASE_TOKEN }}
artifacts/windows/tekton_armageddon_windows.exe TAG_NAME: ${{ github.ref_name }}
artifacts/linux/tekton_armageddon_linux.x86_64 run: |
artifacts/android/tekton_dash_armageddon.apk API="https://git.klud.top/api/v1/repos/danchie/tekton/releases"
generate_release_notes: true 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=@artifacts/windows/tekton_armageddon_windows.exe" \
"https://git.klud.top/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=@artifacts/linux/tekton_armageddon_linux.x86_64" \
"https://git.klud.top/api/v1/repos/danchie/tekton/releases/${{ steps.gitea_release.outputs.release_id }}/assets"
- name: Upload Android asset
run: |
curl -X POST \
-H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \
-H "Content-Type: multipart/form-data" \
-F "attachment=@artifacts/android/tekton_dash_armageddon.apk" \
"https://git.klud.top/api/v1/repos/danchie/tekton/releases/${{ steps.gitea_release.outputs.release_id }}/assets"
+43 -17
View File
@@ -18,11 +18,6 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 45 timeout-minutes: 45
steps: steps:
- name: Setup SSH config for Gitea
run: |
mkdir -p ~/.ssh
echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" > ~/.ssh/config
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -44,15 +39,20 @@ jobs:
unzip -q Godot_v4.6-stable_export_templates.tpz -d ~/.local/share/godot/export_templates/4.6.stable unzip -q Godot_v4.6-stable_export_templates.tpz -d ~/.local/share/godot/export_templates/4.6.stable
- name: Run patch build script - name: Run patch build script
env:
PATCH_VERSION: ${{ github.event.inputs.version }}
PATCH_NOTES: ${{ github.event.inputs.notes }}
run: | run: |
python3 patch_version.py ${{ github.event.inputs.version }} "${{ github.event.inputs.notes }}" python3 patch_version.py "$PATCH_VERSION" "$PATCH_NOTES"
- name: Export Windows patch - name: Export Windows patch
run: | run: |
mkdir -p build
godot --headless --export-release "Windows Desktop" build/tekton_armageddon_patch_windows.exe godot --headless --export-release "Windows Desktop" build/tekton_armageddon_patch_windows.exe
- name: Export Linux patch - name: Export Linux patch
run: | run: |
mkdir -p build
godot --headless --export-release "Linux/X11" build/tekton_armageddon_patch_linux.x86_64 godot --headless --export-release "Linux/X11" build/tekton_armageddon_patch_linux.x86_64
- name: Upload patch artifacts - name: Upload patch artifacts
@@ -78,14 +78,40 @@ jobs:
name: tekton-patch-${{ github.event.inputs.version }} name: tekton-patch-${{ github.event.inputs.version }}
path: artifacts/patch path: artifacts/patch
- name: Create patch release - name: Get or create Gitea patch release
uses: softprops/action-gh-release@v2 id: gitea_release
with: env:
tag_name: patch-${{ github.event.inputs.version }} GITEA_TOKEN: ${{ secrets.TEKTON_RELEASE_TOKEN }}
name: "Patch ${{ github.event.inputs.version }}" TAG_NAME: patch-${{ github.event.inputs.version }}
body: | RELEASE_NAME: "Patch ${{ github.event.inputs.version }}"
${{ github.event.inputs.notes }} RELEASE_NOTES: ${{ github.event.inputs.notes }}
files: | run: |
artifacts/patch/tekton_armageddon_patch_windows.exe API="https://git.klud.top/api/v1/repos/danchie/tekton/releases"
artifacts/patch/tekton_armageddon_patch_linux.x86_64 RELEASE_JSON=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$API/tags/$TAG_NAME")
prerelease: true 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"
+3 -26
View File
@@ -13,11 +13,6 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 30 timeout-minutes: 30
steps: steps:
- name: Setup SSH config for Gitea
run: |
mkdir -p ~/.ssh
echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" > ~/.ssh/config
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -45,11 +40,6 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 45 timeout-minutes: 45
steps: steps:
- name: Setup SSH config for Gitea
run: |
mkdir -p ~/.ssh
echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" > ~/.ssh/config
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -78,24 +68,17 @@ jobs:
# Start server in background # Start server in background
./build/tekton_server.x86_64 --headless --port 7777 & ./build/tekton_server.x86_64 --headless --port 7777 &
SERVER_PID=$! SERVER_PID=$!
trap 'kill $SERVER_PID 2>/dev/null' EXIT
sleep 5 sleep 5
# Run client tests against server # Run client tests against server
godot --headless -d --path . -s addons/gut/gut_cmdln.gd --select=test_integration godot --headless -d --path . -s addons/gut/gut_cmdln.gd --select=test_integration
# Cleanup
kill $SERVER_PID
lint: lint:
name: Code Style Check name: Code Style Check
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 10 timeout-minutes: 10
steps: steps:
- name: Setup SSH config for Gitea
run: |
mkdir -p ~/.ssh
echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" > ~/.ssh/config
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
@@ -109,21 +92,15 @@ jobs:
sudo mv Godot_v4.6-stable_linux.x86_64 /usr/local/bin/godot sudo mv Godot_v4.6-stable_linux.x86_64 /usr/local/bin/godot
chmod +x /usr/local/bin/godot chmod +x /usr/local/bin/godot
- name: Check GDScript formatting - name: Check GDScript syntax
run: | run: |
godot --headless --check-only -s scripts/lint.gd || true godot --headless -s scripts/lint.gd
# Note: GDScript doesn't have a built-in formatter; this checks syntax only
security-scan: security-scan:
name: Security Scan name: Security Scan
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 15 timeout-minutes: 15
steps: steps:
- name: Setup SSH config for Gitea
run: |
mkdir -p ~/.ssh
echo -e "Host gitea\n HostName 100.79.174.108\n Port 222\n StrictHostKeyChecking no" > ~/.ssh/config
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
+29 -4
View File
@@ -7,8 +7,7 @@ on:
jobs: jobs:
upload: upload:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: timeout-minutes: 30
image: barichello/godot-ci:4.3
steps: steps:
- name: Checkout - name: Checkout
run: | run: |
@@ -19,16 +18,42 @@ jobs:
git clone ssh://git@100.79.174.108:222/danchie/tekton.git . git clone ssh://git@100.79.174.108:222/danchie/tekton.git .
git checkout ${{ github.ref_name }} git checkout ${{ github.ref_name }}
- 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
sudo mv Godot_v4.6-stable_linux.x86_64 /usr/local/bin/godot
chmod +x /usr/local/bin/godot
- name: Build PCK - name: Build PCK
run: godot --headless -s tools/build_patch.gd run: godot --headless -s tools/build_patch.gd
- name: Get or create Gitea release
id: gitea_release
env:
GITEA_TOKEN: ${{ secrets.TEKTON_RELEASE_TOKEN }}
TAG_NAME: ${{ github.ref_name }}
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" | 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 PCK to Release - name: Upload PCK to Release
run: | run: |
curl -X POST \ curl -X POST \
-H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \ -H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \
-H "Content-Type: multipart/form-data" \ -H "Content-Type: multipart/form-data" \
-F "attachment=@patch.pck" \ -F "attachment=@patch.pck" \
"https://git.klud.top/api/v1/repos/danchie/tekton/releases/tags/${{ github.ref_name }}" "https://git.klud.top/api/v1/repos/danchie/tekton/releases/${{ steps.gitea_release.outputs.release_id }}/assets"
- name: Upload version.json to Release - name: Upload version.json to Release
run: | run: |
@@ -36,4 +61,4 @@ jobs:
-H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \ -H "Authorization: token ${{ secrets.TEKTON_RELEASE_TOKEN }}" \
-H "Content-Type: multipart/form-data" \ -H "Content-Type: multipart/form-data" \
-F "attachment=@assets/data/version.json" \ -F "attachment=@assets/data/version.json" \
"https://git.klud.top/api/v1/repos/danchie/tekton/releases/tags/${{ github.ref_name }}" "https://git.klud.top/api/v1/repos/danchie/tekton/releases/${{ steps.gitea_release.outputs.release_id }}/assets"
Binary file not shown.
+14 -17
View File
@@ -1,36 +1,33 @@
import json import json
import sys
from datetime import date from datetime import date
if len(sys.argv) < 2:
print("Usage: patch_version.py <version> [notes]")
sys.exit(1)
version = sys.argv[1]
notes = sys.argv[2] if len(sys.argv) > 2 else ""
with open("assets/data/version.json", "r", encoding="utf-8") as f: with open("assets/data/version.json", "r", encoding="utf-8") as f:
data = json.load(f) data = json.load(f)
# Find the 2.4.0 entry or just add 2.4.1 at the top changelog = [line.strip() for line in notes.splitlines() if line.strip()]
changelog = [
"Fixed Gauntlet map layout to remove red unpassable barrier blocks and center blocks.",
"Fixed Gauntlet mode to prevent powerups or sticky bubbles from spawning on boundary tiles or under the central cannon.",
"Center Candy Cannon now shoots actual projectiles that fly towards sticky cells and leave a VFX trail.",
"Added new VFX to the Center Candy Cannon. It now has a glowing pink tank and spinning metallic rings.",
"Fixed Gauntlet Cleanser to stack charges instead of capping at 1.",
"Cleanser instantly clears a 3x3 AoE of sticky cells and frees any players inside immediately upon activation.",
"Added VFX and SFX when purifying cells with the Cleanser (cyan burst particles).",
"Added instant visual feedback indicator for Gauntlet Cleanser using popup text when consumed.",
"Fixed Gauntlet Cleanser UI phase label layout to ensure it does not overlap with other UI elements."
]
new_release = { new_release = {
"version": "2.4.1", "version": version,
"date": "2026-06-28", "date": date.today().isoformat(),
"pck_url": "https://raw.githubusercontent.com/adtpdn/tekton-updates/main/latest/patch.pck", "pck_url": "https://raw.githubusercontent.com/adtpdn/tekton-updates/main/latest/patch.pck",
"pck_size": 0, "pck_size": 0,
"changelog": changelog "changelog": changelog
} }
# Remove existing 2.4.1 if any # Remove existing entry for this version if any
data["releases"] = [r for r in data["releases"] if r.get("version") != "2.4.1"] data["releases"] = [r for r in data["releases"] if r.get("version") != version]
# Insert at top # Insert at top
data["releases"].insert(0, new_release) data["releases"].insert(0, new_release)
data["latest_version"] = "2.4.1" data["latest_version"] = version
with open("assets/data/version.json", "w", encoding="utf-8") as f: with open("assets/data/version.json", "w", encoding="utf-8") as f:
json.dump(data, f, indent="\t") json.dump(data, f, indent="\t")
+36
View File
@@ -0,0 +1,36 @@
extends SceneTree
const SKIP_DIRS := [".git", ".godot", "addons"]
func _initialize() -> void:
var errors: Array[String] = []
_scan_dir("res://", errors)
if errors.is_empty():
print("Lint passed: no GDScript syntax errors found")
quit(0)
else:
for e in errors:
printerr(e)
printerr("Lint failed: %d file(s) with syntax errors" % errors.size())
quit(1)
func _scan_dir(path: String, errors: Array[String]) -> void:
var dir := DirAccess.open(path)
if dir == null:
return
dir.list_dir_begin()
var entry := dir.get_next()
while entry != "":
if entry == "." or entry == "..":
entry = dir.get_next()
continue
var full_path := path.path_join(entry)
if dir.current_is_dir():
if not SKIP_DIRS.has(entry):
_scan_dir(full_path, errors)
elif entry.ends_with(".gd"):
var script := GDScript.new()
script.source_code = FileAccess.get_file_as_string(full_path)
if script.reload() != OK:
errors.append("%s: syntax error" % full_path)
entry = dir.get_next()