name: CI on: push: branches: [main, experimental, patch-release] pull_request: branches: [main, experimental, patch-release] 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 git.klud.top\n Port 22\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: name: Export Windows runs-on: ubuntu-latest timeout-minutes: 45 needs: test steps: - name: Setup SSH config for Gitea run: | mkdir -p ~/.ssh echo -e "Host gitea\n HostName git.klud.top\n Port 22\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 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: Export Windows run: | godot --headless --export-release "Windows Desktop" build/tekton_armageddon_windows.exe - name: Upload Windows artifact uses: actions/upload-artifact@v4 with: name: tekton-windows path: build/tekton_armageddon_windows.exe retention-days: 7 export-linux: name: Export Linux runs-on: ubuntu-latest timeout-minutes: 45 needs: test steps: - name: Setup SSH config for Gitea run: | mkdir -p ~/.ssh echo -e "Host gitea\n HostName git.klud.top\n Port 22\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 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: Export Linux run: | godot --headless --export-release "Linux/X11" build/tekton_armageddon_linux.x86_64 - name: Upload Linux artifact uses: actions/upload-artifact@v4 with: name: tekton-linux path: build/tekton_armageddon_linux.x86_64 retention-days: 7 export-android: name: Export Android runs-on: ubuntu-latest timeout-minutes: 60 needs: test steps: - name: Setup SSH config for Gitea run: | mkdir -p ~/.ssh echo -e "Host gitea\n HostName git.klud.top\n Port 22\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 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: Setup Android SDK uses: android-actions/setup-android@v3 with: api-level: 34 ndk-version: r26c cmdline-tools-version: latest - name: Export Android run: | godot --headless --export-release "Android" build/tekton_dash_armageddon.apk - name: Upload Android artifact uses: actions/upload-artifact@v4 with: name: tekton-android path: build/tekton_dash_armageddon.apk retention-days: 7 release: name: Create Release runs-on: ubuntu-latest timeout-minutes: 15 needs: [export-windows, export-linux, export-android] if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') permissions: contents: write steps: - name: Download Windows artifact uses: actions/download-artifact@v4 with: name: tekton-windows path: artifacts/windows - name: Download Linux artifact uses: actions/download-artifact@v4 with: name: tekton-linux path: artifacts/linux - name: Download Android artifact uses: actions/download-artifact@v4 with: name: tekton-android path: artifacts/android - name: Create Release uses: softprops/action-gh-release@v2 with: files: | artifacts/windows/tekton_armageddon_windows.exe artifacts/linux/tekton_armageddon_linux.x86_64 artifacts/android/tekton_dash_armageddon.apk generate_release_notes: true