From 044de6eea089fa91150a4e04924cce24c9d3580a Mon Sep 17 00:00:00 2001 From: Serhii Snitsaruk Date: Fri, 29 Dec 2023 13:10:26 +0100 Subject: [PATCH 1/6] GHA: Add a Windows editor build to test builds --- .github/workflows/all_builds.yml | 1 + .github/workflows/test_builds.yml | 45 ++++++++++++++++++--------- .github/workflows/windows.yml | 51 ++++++++++++++++++++++--------- 3 files changed, 69 insertions(+), 28 deletions(-) diff --git a/.github/workflows/all_builds.yml b/.github/workflows/all_builds.yml index 5f1af39..75dd9b1 100644 --- a/.github/workflows/all_builds.yml +++ b/.github/workflows/all_builds.yml @@ -77,6 +77,7 @@ jobs: with: godot-treeish: ${{ needs.cache-sha.outputs.godot-sha }} limboai-treeish: ${{ needs.cache-sha.outputs.limboai-sha }} + test-build: false web-build: name: ๐ŸŒ Web diff --git a/.github/workflows/test_builds.yml b/.github/workflows/test_builds.yml index 404d52f..da91250 100644 --- a/.github/workflows/test_builds.yml +++ b/.github/workflows/test_builds.yml @@ -10,6 +10,11 @@ on: - "**/*.png" - "demo/*" - "doc/*" + inputs: + godot-treeish: + description: A tag, branch or commit hash in the Godot repository. + type: string + default: 4.2.1-stable pull_request: branches: [ master ] @@ -18,10 +23,14 @@ on: - "LICENSE" - "**/*.png" - "demo/*" + inputs: + godot-treeish: + description: A tag, branch or commit hash in the Godot repository. + type: string + default: 4.2.1-stable # Global settings env: - GODOT_TREEISH: 4.2-stable SCONSFLAGS: verbose=yes warnings=extra werror=yes SCONS_CACHE_LIMIT: 7168 DOTNET_NOLOGO: true @@ -62,14 +71,14 @@ jobs: build-mono: false artifact: true - - name: ๐Ÿง Template (x86_64, debug) - target: template_debug - arch: x86_64 - production: true - dev_build: false - tests: false - build-mono: false - artifact: true + # - name: ๐Ÿง Template (x86_64, debug) + # target: template_debug + # arch: x86_64 + # production: true + # dev_build: false + # tests: false + # build-mono: false + # artifact: true env: BIN: godot.linuxbsd.${{matrix.target}}${{matrix.dev_build == true && '.dev' || ''}}.${{matrix.arch}}${{matrix.build-mono == true && '.mono' || ''}} @@ -79,7 +88,7 @@ jobs: uses: actions/checkout@v4 with: repository: godotengine/godot - ref: ${{ env.GODOT_TREEISH }} + ref: ${{ inputs.godot-treeish }} - name: Clone LimboAI module uses: actions/checkout@v4 @@ -115,11 +124,11 @@ jobs: uses: actions/cache@v3 with: path: ${{github.workspace}}/.scons_cache/ - key: ${{env.BIN}}-${{env.GODOT_TREEISH}}-${{github.ref}}-${{github.sha}} + key: ${{env.BIN}}-${{inputs.godot-treeish}}-${{github.ref}}-${{github.sha}} restore-keys: | - ${{env.BIN}}-${{env.GODOT_TREEISH}}-${{github.ref}}-${{github.sha}} - ${{env.BIN}}-${{env.GODOT_TREEISH}}-${{github.ref}} - ${{env.BIN}}-${{env.GODOT_TREEISH}} + ${{env.BIN}}-${{inputs.godot-treeish}}-${{github.ref}}-${{github.sha}} + ${{env.BIN}}-${{inputs.godot-treeish}}-${{github.ref}} + ${{env.BIN}}-${{inputs.godot-treeish}} continue-on-error: true - name: Set up Python 3.x @@ -192,3 +201,11 @@ jobs: with: name: ${{ startsWith(matrix.target, 'template') && env.NAME_TEMPLATES || env.NAME_EDITOR }} path: out/* + + windows-test-build: + name: ๐ŸชŸ Windows test build + uses: ./.github/workflows/windows.yml + with: + godot-treeish: ${{ inputs.godot-treeish }} + limboai-treeish: ${{ github.sha }} + test-build: true diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index ab030f3..19af404 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -10,6 +10,10 @@ on: description: A tag, branch or commit hash in the LimboAI repository. type: string default: master + test-build: + description: Is this a test build? In other words, should we only build a classical editor? + type: boolean + default: false workflow_dispatch: inputs: @@ -21,6 +25,10 @@ on: description: A tag, branch or commit hash in the LimboAI repository. type: string default: master + test-build: + description: Is this a test build? In other words, should we only build a classical editor? + type: boolean + default: false # Global Settings env: @@ -33,73 +41,88 @@ env: jobs: windows-builds: runs-on: "windows-latest" - name: ${{ matrix.name }} + name: ${{ matrix.opts.name }} strategy: fail-fast: false matrix: - include: + opts: - name: Editor (x86_64, release) target: editor arch: x86_64 build-mono: false + should-build: true - name: Template (x86_64, release) target: template_release arch: x86_64 build-mono: false + should-build: ${{ !inputs.test-build }} - name: Template (x86_64, debug) target: template_debug arch: x86_64 build-mono: false + should-build: ${{ !inputs.test-build }} # - name: Editor (x86_32, release) # target: editor # arch: x86_32 # build-mono: false + # should-build: ${{ !inputs.test-build }} - name: Template (x86_32, release) target: template_release arch: x86_32 build-mono: false + should-build: ${{ !inputs.test-build }} - name: Template (x86_32, debug) target: template_debug arch: x86_32 build-mono: false + should-build: ${{ !inputs.test-build }} - name: Editor .NET (x86_64, release) target: editor arch: x86_64 build-mono: true + should-build: ${{ !inputs.test-build }} - name: Template .NET (x86_64, release) target: template_release arch: x86_64 build-mono: true + should-build: ${{ !inputs.test-build }} - name: Template .NET (x86_64, debug) target: template_debug arch: x86_64 build-mono: true + should-build: ${{ !inputs.test-build }} # - name: Editor .NET (x86_32, release) # target: editor # arch: x86_32 # build-mono: true + # should-build: ${{ !inputs.test-build }} - name: Template .NET (x86_32, release) target: template_release arch: x86_32 build-mono: true + should-build: ${{ !inputs.test-build }} - name: Template .NET (x86_32, debug) target: template_debug arch: x86_32 build-mono: true + should-build: ${{ !inputs.test-build }} + + exclude: + - { opts: {should-build: false }} env: - BIN: godot.windows.${{matrix.target}}.${{matrix.arch}}${{ matrix.build-mono == true && '.mono' || '' }} + BIN: godot.windows.${{matrix.opts.target}}.${{matrix.opts.arch}}${{ matrix.opts.build-mono == true && '.mono' || '' }} steps: - name: Clone Godot @@ -147,17 +170,17 @@ jobs: env: SCONS_CACHE: ${{github.workspace}}/.scons_cache/ run: | - scons -j2 platform=windows target=${{matrix.target}} arch=${{matrix.arch}} module_mono_enabled=${{matrix.build-mono}} ${{env.SCONSFLAGS}} + scons -j2 platform=windows target=${{matrix.opts.target}} arch=${{matrix.opts.arch}} module_mono_enabled=${{matrix.opts.build-mono}} ${{env.SCONSFLAGS}} - name: Generate C# glue - if: matrix.build-mono && matrix.target == 'editor' + if: matrix.opts.build-mono && matrix.opts.target == 'editor' env: GODOT_VERSION_STATUS: limboai run: | ./bin/${{ env.BIN }} --headless --generate-mono-glue ./modules/mono/glue || true - name: Build .NET solutions - if: matrix.build-mono && matrix.target == 'editor' + if: matrix.opts.build-mono && matrix.opts.target == 'editor' env: GODOT_VERSION_STATUS: limboai run: | @@ -166,7 +189,7 @@ jobs: - name: Prepare artifact shell: bash env: - OUTDIR: ${{ startsWith(matrix.target, 'template') && 'out/templates' || 'out/' }} + OUTDIR: ${{ startsWith(matrix.opts.target, 'template') && 'out/templates' || 'out/' }} run: | rm -f bin/*.{exp,lib,pdb} mkdir -p ${{env.OUTDIR}} @@ -174,21 +197,21 @@ jobs: ls -R out/ - name: Rename templates - if: startsWith(matrix.target, 'template') + if: startsWith(matrix.opts.target, 'template') shell: bash env: - BUILD_TYPE: ${{ endsWith(matrix.target, 'release') && 'release' || 'debug' }} + BUILD_TYPE: ${{ endsWith(matrix.opts.target, 'release') && 'release' || 'debug' }} run: | - mv out/templates/${BIN}.exe out/templates/windows_${BUILD_TYPE}_${{matrix.arch}}.exe - mv out/templates/${BIN}.console.exe out/templates/windows_${BUILD_TYPE}_${{matrix.arch}}_console.exe + mv out/templates/${BIN}.exe out/templates/windows_${BUILD_TYPE}_${{matrix.opts.arch}}.exe + mv out/templates/${BIN}.console.exe out/templates/windows_${BUILD_TYPE}_${{matrix.opts.arch}}_console.exe echo "${GODOT_VERSION}.limboai+${LIMBOAI_VERSION}" > out/templates/version.txt ls -R out/ - name: Upload artifact uses: actions/upload-artifact@v3 env: - NAME_EDITOR: ${{env.NAME_PREFIX}}.${{matrix.target}}.windows.${{matrix.arch}}${{ matrix.build-mono == true && '.mono' || '' }} - NAME_TEMPLATES: ${{env.NAME_PREFIX}}.export-templates${{ matrix.build-mono == true && '.mono' || '' }} + NAME_EDITOR: ${{env.NAME_PREFIX}}.${{matrix.opts.target}}.windows.${{matrix.opts.arch}}${{ matrix.opts.build-mono == true && '.mono' || '' }} + NAME_TEMPLATES: ${{env.NAME_PREFIX}}.export-templates${{ matrix.opts.build-mono == true && '.mono' || '' }} with: - name: ${{ startsWith(matrix.target, 'template') && env.NAME_TEMPLATES || env.NAME_EDITOR }} + name: ${{ startsWith(matrix.opts.target, 'template') && env.NAME_TEMPLATES || env.NAME_EDITOR }} path: out/* From 6bcffe712dcd17568a52f7c80baffdae6f5c8b68 Mon Sep 17 00:00:00 2001 From: Serhii Snitsaruk Date: Fri, 29 Dec 2023 14:40:10 +0100 Subject: [PATCH 2/6] GHA: Refactor Linux build workflow for the test builds --- .github/workflows/all_builds.yml | 1 + .github/workflows/linux.yml | 55 +++++++++---- .github/workflows/test_builds.yml | 123 +++++------------------------- 3 files changed, 58 insertions(+), 121 deletions(-) diff --git a/.github/workflows/all_builds.yml b/.github/workflows/all_builds.yml index 75dd9b1..fd8332c 100644 --- a/.github/workflows/all_builds.yml +++ b/.github/workflows/all_builds.yml @@ -61,6 +61,7 @@ jobs: with: godot-treeish: ${{ needs.cache-sha.outputs.godot-sha }} limboai-treeish: ${{ needs.cache-sha.outputs.limboai-sha }} + test-build: false macos-build: name: ๐ŸŽ macOS diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 800e9dd..310d92d 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -10,6 +10,10 @@ on: description: A tag, branch or commit hash in the LimboAI repository. type: string default: master + test-build: + description: Is this a test build? In other words, should we only build a classical editor? + type: boolean + default: false workflow_dispatch: inputs: @@ -21,6 +25,10 @@ on: description: A tag, branch or commit hash in the LimboAI repository. type: string default: master + test-build: + description: Is this a test build? In other words, should we only build a classical editor? + type: boolean + default: false # Global Settings env: @@ -32,73 +40,88 @@ env: jobs: linux-builds: runs-on: "ubuntu-20.04" - name: ${{ matrix.name }} + name: ${{ matrix.opts.name }} strategy: fail-fast: false matrix: - include: + opts: - name: Editor (x86_64, release) target: editor arch: x86_64 build-mono: false + should-build: true - name: Template (x86_64, release) target: template_release arch: x86_64 build-mono: false + should-build: true - name: Template (x86_64, debug) target: template_debug arch: x86_64 build-mono: false + should-build: ${{ !inputs.test-build }} # - name: Editor (x86_32, release) # target: editor # arch: x86_32 # build-mono: false + # should-build: ${{ !inputs.test-build }} - name: Template (x86_32, release) target: template_release arch: x86_32 build-mono: false + should-build: ${{ !inputs.test-build }} - name: Template (x86_32, debug) target: template_debug arch: x86_32 build-mono: false + should-build: ${{ !inputs.test-build }} - name: Editor .NET (x86_64, release) target: editor arch: x86_64 build-mono: true + should-build: ${{ !inputs.test-build }} - name: Template .NET (x86_64, release) target: template_release arch: x86_64 build-mono: true + should-build: ${{ !inputs.test-build }} - name: Template .NET (x86_64, debug) target: template_debug arch: x86_64 build-mono: true + should-build: ${{ !inputs.test-build }} # - name: Editor .NET (x86_32, release) # target: editor # arch: x86_32 # build-mono: true + # should-build: ${{ !inputs.test-build }} - name: Template .NET (x86_32, release) target: template_release arch: x86_32 build-mono: true + should-build: ${{ !inputs.test-build }} - name: Template .NET (x86_32, debug) target: template_debug arch: x86_32 build-mono: true + should-build: ${{ !inputs.test-build }} + + exclude: + - { opts: {should-build: false }} env: - BIN: godot.linuxbsd.${{matrix.target}}.${{matrix.arch}}${{ matrix.build-mono == true && '.mono' || '' }} + BIN: godot.linuxbsd.${{matrix.opts.target}}.${{matrix.opts.arch}}${{ matrix.opts.build-mono == true && '.mono' || '' }} steps: - name: Clone Godot @@ -118,7 +141,7 @@ jobs: # About sed see: https://github.com/godotengine/buildroot/issues/6 - name: Set up buildroot x86_64 - if: matrix.arch == 'x86_64' + if: matrix.opts.arch == 'x86_64' run: | wget https://download.tuxfamily.org/godotengine/toolchains/linux/x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2 tar -xjf x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2 @@ -129,7 +152,7 @@ jobs: cd .. - name: Set up buildroot x86_32 - if: matrix.arch == 'x86_32' + if: matrix.opts.arch == 'x86_32' run: | wget https://download.tuxfamily.org/godotengine/toolchains/linux/i686-godot-linux-gnu_sdk-buildroot.tar.bz2 tar -xjf i686-godot-linux-gnu_sdk-buildroot.tar.bz2 @@ -153,17 +176,17 @@ jobs: SCONS_CACHE: ${{github.workspace}}/.scons_cache/ run: | PATH=${GITHUB_WORKSPACE}/buildroot/bin:$PATH - scons platform=linuxbsd target=${{matrix.target}} arch=${{matrix.arch}} module_mono_enabled=${{matrix.build-mono}} ${{env.SCONSFLAGS}} + scons platform=linuxbsd target=${{matrix.opts.target}} arch=${{matrix.opts.arch}} module_mono_enabled=${{matrix.opts.build-mono}} ${{env.SCONSFLAGS}} - name: Generate C# glue - if: matrix.build-mono && matrix.target == 'editor' + if: matrix.opts.build-mono && matrix.opts.target == 'editor' env: GODOT_VERSION_STATUS: limboai run: | ./bin/$BIN --headless --generate-mono-glue ./modules/mono/glue || true - name: Build .NET solutions - if: matrix.build-mono && matrix.target == 'editor' + if: matrix.opts.build-mono && matrix.opts.target == 'editor' env: GODOT_VERSION_STATUS: limboai run: | @@ -171,7 +194,7 @@ jobs: - name: Prepare artifact env: - OUTDIR: ${{ startsWith(matrix.target, 'template') && 'out/templates' || 'out/' }} + OUTDIR: ${{ startsWith(matrix.opts.target, 'template') && 'out/templates' || 'out/' }} run: | strip ./bin/godot.* chmod +x ./bin/godot.* @@ -182,7 +205,7 @@ jobs: # Zipping the editor artifact to retain executable bit; # workaround for: https://github.com/actions/upload-artifact/issues/38 - name: Zip the editor artifact - if: matrix.target == 'editor' + if: matrix.opts.target == 'editor' shell: bash run: | pushd out/ @@ -192,19 +215,19 @@ jobs: popd - name: Rename templates - if: startsWith(matrix.target, 'template') + if: startsWith(matrix.opts.target, 'template') env: - BUILD_TYPE: ${{ endsWith(matrix.target, 'release') && 'release' || 'debug' }} + BUILD_TYPE: ${{ endsWith(matrix.opts.target, 'release') && 'release' || 'debug' }} run: | - mv out/templates/${BIN} out/templates/linux_${BUILD_TYPE}.${{matrix.arch}} + mv out/templates/${BIN} out/templates/linux_${BUILD_TYPE}.${{matrix.opts.arch}} echo "${GODOT_VERSION}.limboai+${LIMBOAI_VERSION}" > out/templates/version.txt ls -R out/ - name: Upload artifact uses: actions/upload-artifact@v3 env: - NAME_EDITOR: ${{env.NAME_PREFIX}}.${{matrix.target}}.linux.${{matrix.arch}}${{ matrix.build-mono == true && '.mono' || '' }} - NAME_TEMPLATES: ${{env.NAME_PREFIX}}.export-templates${{ matrix.build-mono == true && '.mono' || '' }} + NAME_EDITOR: ${{env.NAME_PREFIX}}.${{matrix.opts.target}}.linux.${{matrix.opts.arch}}${{ matrix.opts.build-mono == true && '.mono' || '' }} + NAME_TEMPLATES: ${{env.NAME_PREFIX}}.export-templates${{ matrix.opts.build-mono == true && '.mono' || '' }} with: - name: ${{ startsWith(matrix.target, 'template') && env.NAME_TEMPLATES || env.NAME_EDITOR }} + name: ${{ startsWith(matrix.opts.target, 'template') && env.NAME_TEMPLATES || env.NAME_EDITOR }} path: out/* diff --git a/.github/workflows/test_builds.yml b/.github/workflows/test_builds.yml index da91250..be4c288 100644 --- a/.github/workflows/test_builds.yml +++ b/.github/workflows/test_builds.yml @@ -29,59 +29,16 @@ on: type: string default: 4.2.1-stable -# Global settings -env: - SCONSFLAGS: verbose=yes warnings=extra werror=yes - SCONS_CACHE_LIMIT: 7168 - DOTNET_NOLOGO: true - DOTNET_CLI_TELEMETRY_OPTOUT: true - jobs: - linux-test-builds: + unit-tests: + name: ๐Ÿงช Unit tests runs-on: "ubuntu-20.04" - name: ${{ matrix.name }} - strategy: - fail-fast: false - matrix: - include: - - name: ๐Ÿง Unit tests - target: editor - arch: x86_64 - production: false - dev_build: true - tests: true - build-mono: false - artifact: false - - - name: ๐Ÿง Editor (x86_64, release) - target: editor - arch: x86_64 - production: true - dev_build: false - tests: false - build-mono: false - artifact: true - - - name: ๐Ÿง Template (x86_64, release) - target: template_release - arch: x86_64 - production: true - dev_build: false - tests: false - build-mono: false - artifact: true - - # - name: ๐Ÿง Template (x86_64, debug) - # target: template_debug - # arch: x86_64 - # production: true - # dev_build: false - # tests: false - # build-mono: false - # artifact: true + # Settings env: - BIN: godot.linuxbsd.${{matrix.target}}${{matrix.dev_build == true && '.dev' || ''}}.${{matrix.arch}}${{matrix.build-mono == true && '.mono' || ''}} + 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 steps: - name: Clone Godot @@ -95,12 +52,8 @@ jobs: with: path: modules/limboai - # Inits GODOT_VERSION, LIMBOAI_VERSION and NAME_PREFIX environment variables. - - uses: ./modules/limboai/.github/actions/init-version - # About sed see: https://github.com/godotengine/buildroot/issues/6 - name: Set up buildroot x86_64 - if: matrix.arch == 'x86_64' run: | wget https://download.tuxfamily.org/godotengine/toolchains/linux/x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2 tar -xjf x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2 @@ -110,16 +63,6 @@ jobs: ./relocate-sdk.sh cd .. - - name: Set up buildroot x86_32 - if: matrix.arch == 'x86_32' - run: | - wget https://download.tuxfamily.org/godotengine/toolchains/linux/i686-godot-linux-gnu_sdk-buildroot.tar.bz2 - tar -xjf i686-godot-linux-gnu_sdk-buildroot.tar.bz2 - mv i686-godot-linux-gnu_sdk-buildroot buildroot - cd buildroot - ./relocate-sdk.sh - cd .. - - name: Set up scons cache uses: actions/cache@v3 with: @@ -144,12 +87,6 @@ jobs: python --version scons --version - - name: Set up .NET SDK - if: matrix.build-mono - uses: actions/setup-dotnet@v2 - with: - dotnet-version: '6.0.x' - - name: Setup GCC problem matcher uses: ammaraskar/gcc-problem-matcher@master @@ -158,49 +95,25 @@ jobs: SCONS_CACHE: ${{github.workspace}}/.scons_cache/ run: | PATH=${GITHUB_WORKSPACE}/buildroot/bin:$PATH - scons platform=linuxbsd target=${{matrix.target}} arch=${{matrix.arch}} production=${{matrix.production}} dev_build=${{matrix.dev_build}} tests=${{matrix.tests}} module_mono_enabled=${{matrix.build-mono}} ${{env.SCONSFLAGS}} + scons platform=linuxbsd ${{env.SCONSFLAGS}} ls -l bin/ - - name: Generate C# glue - if: matrix.build-mono - run: | - bin/${{ env.BIN }} --headless --generate-mono-glue ./modules/mono/glue || true - - - name: Build .NET solutions - if: matrix.build-mono - run: | - ./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=linuxbsd - - # Execute unit tests for the editor - - name: Unit tests - if: matrix.tests + - name: Verify build run: | bin/${{ env.BIN }} --version bin/${{ env.BIN }} --help + + - name: Unit tests + run: | bin/${{ env.BIN }} --test --headless - - name: Strip binaries - if: matrix.dev_build == false - run: strip ./bin/godot.* - - - name: Prepare artifact - if: matrix.artifact - env: - OUTDIR: ${{ startsWith(matrix.target, 'template') && 'out/templates' || 'out/' }} - run: | - chmod +x ./bin/godot.* - mkdir -p ${{env.OUTDIR}} - mv ./bin/godot.* ${{env.OUTDIR}} - - - name: Upload artifact - if: matrix.artifact - uses: actions/upload-artifact@v3 - env: - NAME_EDITOR: ${{env.NAME_PREFIX}}.${{matrix.target}}${{matrix.dev_build == true && '.dev' || ''}}.linux.${{matrix.arch}}${{matrix.build-mono == true && '.mono' || ''}} - NAME_TEMPLATES: ${{env.NAME_PREFIX}}.export-templates${{matrix.build-mono == true && '.mono' || ''}} - with: - name: ${{ startsWith(matrix.target, 'template') && env.NAME_TEMPLATES || env.NAME_EDITOR }} - path: out/* + linux-test-build: + name: ๐Ÿง Linux test build + uses: ./.github/workflows/linux.yml + with: + godot-treeish: ${{ inputs.godot-treeish }} + limboai-treeish: ${{ github.sha }} + test-build: true windows-test-build: name: ๐ŸชŸ Windows test build From 56c3c2657232a5aa26880e0fcdd14d3291893fc4 Mon Sep 17 00:00:00 2001 From: Serhii Snitsaruk Date: Fri, 29 Dec 2023 14:58:45 +0100 Subject: [PATCH 3/6] GHA: Add a macOS build to test builds workflow --- .github/workflows/macos.yml | 40 ++++++++++++++++++++++++------- .github/workflows/test_builds.yml | 8 +++++++ 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 38dd193..f7bd244 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -10,6 +10,10 @@ on: description: A tag, branch or commit hash in the LimboAI repository. type: string default: master + test-build: + description: Is this a test build? In other words, should we only build a classical editor? + type: boolean + default: false workflow_dispatch: inputs: @@ -21,6 +25,10 @@ on: description: A tag, branch or commit hash in the LimboAI repository. type: string default: master + test-build: + description: Is this a test build? In other words, should we only build a classical editor? + type: boolean + default: false # Global Settings @@ -33,49 +41,55 @@ env: jobs: macos-builds: runs-on: "macos-latest" - name: ${{ matrix.name }} + name: ${{ matrix.opts.name }} strategy: fail-fast: false matrix: - include: + opts: - name: Editor (x86_64, release) target: editor arch: x86_64 build-mono: false artifact-name: macos-editor + should-build: true - name: Template (x86_64, release) target: template_release arch: x86_64 build-mono: false artifact-name: macos-templates + should-build: ${{ !inputs.test-build }} - name: Template (x86_64, debug) target: template_debug arch: x86_64 build-mono: false artifact-name: macos-templates + should-build: ${{ !inputs.test-build }} - name: Editor (arm64, release) target: editor arch: arm64 build-mono: false artifact-name: macos-editor + should-build: ${{ !inputs.test-build }} - name: Template (arm64, release) target: template_release arch: arm64 build-mono: false artifact-name: macos-templates + should-build: ${{ !inputs.test-build }} - name: Template (arm64, debug) target: template_debug arch: arm64 build-mono: false artifact-name: macos-templates + should-build: ${{ !inputs.test-build }} - # ! Disabled for now: .NET version fail to build + # ! Disabled for now: .NET version fails to build # - name: .NET Editor (x86_64, release) # target: editor @@ -83,18 +97,21 @@ jobs: # build-mono: true # artifact-name: macos-mono-editor # cache-name: macos-editor + # should-build: ${{ !inputs.test-build }} # - name: .NET Template (x86_64, release) # target: template_release # arch: x86_64 # build-mono: true # artifact-name: macos-mono-templates + # should-build: ${{ !inputs.test-build }} # - name: .NET Template (x86_64, debug) # target: template_debug # arch: x86_64 # build-mono: true # artifact-name: macos-mono-templates + # should-build: ${{ !inputs.test-build }} # - name: .NET Editor (arm64, release) # target: editor @@ -102,21 +119,27 @@ jobs: # build-mono: true # artifact-name: macos-mono-editor # cache-name: macos-editor + # should-build: ${{ !inputs.test-build }} # - name: .NET Template (arm64, release) # target: template_release # arch: arm64 # build-mono: true # artifact-name: macos-mono-templates + # should-build: ${{ !inputs.test-build }} # - name: .NET Template (arm64, debug) # target: template_debug # arch: arm64 # build-mono: true # artifact-name: macos-mono-templates + # should-build: ${{ !inputs.test-build }} + + exclude: + - { opts: {should-build: false }} env: - BIN: godot.macos.${{matrix.target}}.${{matrix.arch}}${{ matrix.build-mono == true && '.mono' || '' }} + BIN: godot.macos.${{matrix.opts.target}}.${{matrix.opts.arch}}${{ matrix.opts.build-mono == true && '.mono' || '' }} steps: @@ -170,17 +193,17 @@ jobs: env: SCONS_CACHE: ${{github.workspace}}/.scons_cache/ run: | - scons -j2 platform=macos target=${{matrix.target}} arch=${{matrix.arch}} module_mono_enabled=${{matrix.build-mono}} ${{env.SCONSFLAGS}} + scons -j2 platform=macos target=${{matrix.opts.target}} arch=${{matrix.opts.arch}} module_mono_enabled=${{matrix.opts.build-mono}} ${{env.SCONSFLAGS}} # ! Disabled for now: .NET version fail to build # - name: Generate C# glue - # if: matrix.build-mono && matrix.target == 'editor' + # if: matrix.opts.build-mono && matrix.opts.target == 'editor' # run: | # ./bin/$BIN --headless --generate-mono-glue ./modules/mono/glue || true # - name: Build .NET solutions - # if: matrix.build-mono && matrix.target == 'editor' + # if: matrix.opts.build-mono && matrix.opts.target == 'editor' # run: | # ./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=macos @@ -192,13 +215,14 @@ jobs: - name: Upload artifact uses: actions/upload-artifact@v3 with: - name: ${{ matrix.artifact-name }} + name: ${{ matrix.opts.artifact-name }} path: bin/* make-macos-bundle: runs-on: "macos-latest" name: Make macOS Bundles needs: macos-builds + if: ${{ !inputs.test-build }} steps: diff --git a/.github/workflows/test_builds.yml b/.github/workflows/test_builds.yml index be4c288..7f76ee3 100644 --- a/.github/workflows/test_builds.yml +++ b/.github/workflows/test_builds.yml @@ -122,3 +122,11 @@ jobs: godot-treeish: ${{ inputs.godot-treeish }} limboai-treeish: ${{ github.sha }} test-build: true + + macos-build: + name: ๐ŸŽ macOS test build + uses: ./.github/workflows/macos.yml + with: + godot-treeish: ${{ inputs.godot-treeish }} + limboai-treeish: ${{ github.sha }} + test-build: true From 6ed5bc8203f000719787672dffd6ebb06b43a554 Mon Sep 17 00:00:00 2001 From: Serhii Snitsaruk Date: Fri, 29 Dec 2023 15:16:26 +0100 Subject: [PATCH 4/6] GHA: Fix wrong binary name in unit tests --- .github/workflows/test_builds.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test_builds.yml b/.github/workflows/test_builds.yml index 7f76ee3..1ae3d0f 100644 --- a/.github/workflows/test_builds.yml +++ b/.github/workflows/test_builds.yml @@ -38,7 +38,7 @@ jobs: 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 + BIN: godot.linuxbsd.editor.dev.x86_64 steps: - name: Clone Godot @@ -95,11 +95,11 @@ jobs: SCONS_CACHE: ${{github.workspace}}/.scons_cache/ run: | PATH=${GITHUB_WORKSPACE}/buildroot/bin:$PATH - scons platform=linuxbsd ${{env.SCONSFLAGS}} - ls -l bin/ + scons ${{env.SCONSFLAGS}} - name: Verify build run: | + ls -l bin/ bin/${{ env.BIN }} --version bin/${{ env.BIN }} --help @@ -123,7 +123,7 @@ jobs: limboai-treeish: ${{ github.sha }} test-build: true - macos-build: + macos-test-build: name: ๐ŸŽ macOS test build uses: ./.github/workflows/macos.yml with: From fb36b6902d49a6bd6262f9009e401d6220cccfad Mon Sep 17 00:00:00 2001 From: Serhii Snitsaruk Date: Fri, 29 Dec 2023 15:22:33 +0100 Subject: [PATCH 5/6] GHA: Include Windows .NET editor in test builds --- .github/workflows/linux.yml | 4 ++-- .github/workflows/macos.yml | 4 ++-- .github/workflows/windows.yml | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 310d92d..55f88d7 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -11,7 +11,7 @@ on: type: string default: master test-build: - description: Is this a test build? In other words, should we only build a classical editor? + description: Should we perform only a limited number of test builds? type: boolean default: false @@ -26,7 +26,7 @@ on: type: string default: master test-build: - description: Is this a test build? In other words, should we only build a classical editor? + description: Should we perform only a limited number of test builds? type: boolean default: false diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index f7bd244..76667c5 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -11,7 +11,7 @@ on: type: string default: master test-build: - description: Is this a test build? In other words, should we only build a classical editor? + description: Should we perform only a limited number of test builds? type: boolean default: false @@ -26,7 +26,7 @@ on: type: string default: master test-build: - description: Is this a test build? In other words, should we only build a classical editor? + description: Should we perform only a limited number of test builds? type: boolean default: false diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 19af404..1ca84a7 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -11,7 +11,7 @@ on: type: string default: master test-build: - description: Is this a test build? In other words, should we only build a classical editor? + description: Should we perform only a limited number of test builds? type: boolean default: false @@ -26,7 +26,7 @@ on: type: string default: master test-build: - description: Is this a test build? In other words, should we only build a classical editor? + description: Should we perform only a limited number of test builds? type: boolean default: false @@ -86,7 +86,7 @@ jobs: target: editor arch: x86_64 build-mono: true - should-build: ${{ !inputs.test-build }} + should-build: true - name: Template .NET (x86_64, release) target: template_release From c364378e30466ecc503534a56ad803123b784650 Mon Sep 17 00:00:00 2001 From: Serhii Snitsaruk Date: Fri, 29 Dec 2023 16:09:26 +0100 Subject: [PATCH 6/6] GHA: In test builds, build also a macOS arm64 binary and make a bundle --- .github/workflows/macos.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 76667c5..dfcf088 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -73,7 +73,7 @@ jobs: arch: arm64 build-mono: false artifact-name: macos-editor - should-build: ${{ !inputs.test-build }} + should-build: true - name: Template (arm64, release) target: template_release @@ -222,7 +222,6 @@ jobs: runs-on: "macos-latest" name: Make macOS Bundles needs: macos-builds - if: ${{ !inputs.test-build }} steps: @@ -274,12 +273,14 @@ jobs: path: out/editor/* - name: Download templates artifact + if: ${{ !inputs.test-build }} uses: actions/download-artifact@v3 with: name: macos-templates path: bin/ - name: Make templates bundle + if: ${{ !inputs.test-build }} run: | rm -rf out/ ls bin/ @@ -306,6 +307,7 @@ jobs: failOnError: false - name: Upload templates bundle + if: ${{ !inputs.test-build }} uses: actions/upload-artifact@v3 with: name: ${{env.NAME_PREFIX}}.export-templates