name: 🍎 macOS Builds on: workflow_call: # Global Settings env: # Used for the cache key. Add version suffix to force clean build. GODOT_BASE_BRANCH: 4.3 SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes concurrency: group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-macos cancel-in-progress: true jobs: build-macos: runs-on: "macos-latest" name: ${{ matrix.name }} strategy: fail-fast: false matrix: include: - name: Editor (target=editor, tests=yes) cache-name: macos-editor target: editor tests: true bin: "./bin/godot.macos.editor.universal" - name: Template (target=template_release) cache-name: macos-template target: template_release tests: true sconsflags: debug_symbols=no tests=yes bin: "./bin/godot.macos.template_release.universal" steps: - uses: actions/checkout@v4 with: submodules: recursive - name: Restore Godot build cache uses: ./.github/actions/godot-cache-restore with: cache-name: ${{ matrix.cache-name }} continue-on-error: true - name: Setup Python and SCons uses: ./.github/actions/godot-deps - name: Setup Vulkan SDK run: | sh misc/scripts/install_vulkan_sdk_macos.sh - name: Compilation (x86_64) uses: ./.github/actions/godot-build with: sconsflags: ${{ env.SCONSFLAGS }} arch=x86_64 platform: macos target: ${{ matrix.target }} tests: ${{ matrix.tests }} - name: Compilation (arm64) uses: ./.github/actions/godot-build with: sconsflags: ${{ env.SCONSFLAGS }} arch=arm64 platform: macos target: ${{ matrix.target }} tests: ${{ matrix.tests }} - name: Save Godot build cache uses: ./.github/actions/godot-cache-save with: cache-name: ${{ matrix.cache-name }} continue-on-error: true - name: Prepare artifact run: | lipo -create ./bin/godot.macos.${{ matrix.target }}.x86_64 ./bin/godot.macos.${{ matrix.target }}.arm64 -output ./bin/godot.macos.${{ matrix.target }}.universal rm ./bin/godot.macos.${{ matrix.target }}.x86_64 ./bin/godot.macos.${{ matrix.target }}.arm64 strip bin/godot.* chmod +x bin/godot.* - name: Upload artifact uses: ./.github/actions/upload-artifact with: name: ${{ matrix.cache-name }} - name: Unit tests if: ${{ matrix.tests }} run: | ${{ matrix.bin }} --version ${{ matrix.bin }} --help ${{ matrix.bin }} --test --force-colors