name: ๐Ÿ”Ž Test builds on: workflow_dispatch: push: branches: [master] paths-ignore: - "README.md" - "LICENSE.md" - "**/*.png" - "demo/**" - "doc/**" pull_request: branches: [master] paths-ignore: - "README.md" - "LICENSE.md" - "**/*.png" - "demo/**" - "doc/**" concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true # Global Settings. env: GODOT_REF: "4.3" GODOT_CPP_REF: "godot-4.3-stable" jobs: unit-tests: name: ๐Ÿงช Unit tests runs-on: "ubuntu-20.04" # Settings env: SCONSFLAGS: platform=linuxbsd target=editor arch=x86_64 production=false dev_build=true tests=true verbose=yes warnings=extra werror=yes SCONS_CACHE_LIMIT: 7168 BIN: godot.linuxbsd.editor.dev.x86_64 steps: - name: Clone Godot uses: actions/checkout@v4 with: repository: godotengine/godot ref: ${{ env.GODOT_REF }} - name: Clone LimboAI module uses: actions/checkout@v4 with: path: modules/limboai - name: Set up Linux toolchain uses: ./modules/limboai/.github/actions/setup-linux-toolchain with: arch: x86_64 - name: Set up scons cache uses: actions/cache@v4 with: path: ${{github.workspace}}/.scons_cache/ key: ${{env.BIN}}-${{env.GODOT_REF}}-${{github.ref}}-${{github.sha}} restore-keys: | ${{env.BIN}}-${{env.GODOT_REF}}-${{github.ref}}-${{github.sha}} ${{env.BIN}}-${{env.GODOT_REF}}-${{github.ref}} ${{env.BIN}}-${{env.GODOT_REF}} continue-on-error: true - name: Set up Python 3.x uses: actions/setup-python@v5 with: python-version: "3.x" architecture: "x64" - name: Set up scons run: | python -c "import sys; print(sys.version)" python -m pip install scons==4.4.0 python --version scons --version - name: Setup GCC problem matcher uses: ammaraskar/gcc-problem-matcher@master - name: Compilation env: SCONS_CACHE: ${{github.workspace}}/.scons_cache/ run: | PATH=${GITHUB_WORKSPACE}/buildroot/bin:$PATH scons ${{env.SCONSFLAGS}} - name: Verify build run: | ls -l bin/ bin/${{ env.BIN }} --version bin/${{ env.BIN }} --help - name: Unit tests run: | bin/${{ env.BIN }} --test --headless static-checks: name: โš™๏ธ Static checks runs-on: ubuntu-20.04 steps: - name: Clone LimboAI module uses: actions/checkout@v4 - name: Code style checks uses: pre-commit/action@v3.0.1 with: extra_args: --all-files cache-env: runs-on: ubuntu-latest outputs: godot-ref: ${{ steps.cache-env.outputs.godot-ref }} godot-cpp-ref: ${{ steps.cache-env.outputs.godot-cpp-ref }} steps: - name: Cache env id: cache-env run: | echo "godot-ref=${GODOT_REF}" >> "$GITHUB_OUTPUT" echo "godot-cpp-ref=${GODOT_CPP_REF}" >> "$GITHUB_OUTPUT" linux-test-build: name: ๐Ÿง Linux needs: cache-env uses: ./.github/workflows/linux.yml with: godot-ref: ${{ needs.cache-env.outputs.godot-ref }} limboai-ref: ${{ github.sha }} test-build: true windows-test-build: name: ๐ŸชŸ Windows needs: cache-env uses: ./.github/workflows/windows.yml with: godot-ref: ${{ needs.cache-env.outputs.godot-ref }} limboai-ref: ${{ github.sha }} test-build: true macos-test-build: name: ๐ŸŽ macOS needs: cache-env uses: ./.github/workflows/macos.yml with: godot-ref: ${{ needs.cache-env.outputs.godot-ref }} limboai-ref: ${{ github.sha }} test-build: true gdextension: name: ๐Ÿ”Œ GDExtension needs: cache-env uses: ./.github/workflows/gdextension.yml with: godot-cpp-ref: ${{ needs.cache-env.outputs.godot-cpp-ref }} limboai-ref: ${{ github.sha }} test-build: true