name: macos-ci on: workflow_dispatch: push: branches: - main tags: - 'macos-*' paths: - 'platform/ios/**' - 'platform/darwin/**' - ".github/workflows/macos-ci.yml" - "bin/**" - "expression-test/**" - "include/**" - "metrics/**" - "platform/default/**" - "render-test/**" - "scripts/**" - "src/**" - "test/**" - "vendor/**" - maplibre-gl-js - ".gitmodules" - "!**/*.md" pull_request: branches: - main paths: - 'platform/ios/**' - 'platform/darwin/**' - ".github/workflows/macos-ci.yml" - "bin/**" - "expression-test/**" - "include/**" - "metrics/**" - "platform/default/**" - "render-test/**" - "scripts/**" - "src/**" - "test/**" - "vendor/**" - maplibre-gl-js - ".gitmodules" - "!**/*.md" concurrency: # cancel jobs on PRs only group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} jobs: build: name: MacOS CI Tests runs-on: [self-hosted, macOS, ARM64] env: BUILDTYPE: Debug HOMEBREW_NO_AUTO_UPDATE: 1 HOMEBREW_NO_INSTALL_CLEANUP: 1 defaults: run: working-directory: platform/ios shell: bash steps: - uses: actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - name: Install macos dependencies run: | brew list cmake || brew install cmake brew list ccache || brew install ccache brew list pkg-config || brew install pkg-config brew list glfw || brew install glfw - name: Cache node modules uses: actions/cache@v3 env: cache-name: cache-node-modules with: path: /user/local/lib/node_modules key: ${{ runner.macos }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.macos }}-build-${{ env.cache-name }}- ${{ runner.macos }}-build- ${{ runner.macos }}- - uses: actions/setup-node@v3 with: node-version: 18 - name: npm install run: npm ci --ignore-scripts - name: Prepare ccache run: ccache --clear - name: Cache ccache uses: actions/cache@v3 env: cache-name: ccache-v1 with: path: ~/.ccache' key: ${{ env.cache-name }}-${{ runner.macos }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }}-${{ github.head_ref }} restore-keys: | ${{ env.cache-name }}-${{ runner.macos }}-${{ github.job }}-${{ github.ref }}-${{ github.sha }} ${{ env.cache-name }}-${{ runner.macos }}-${{ github.job }}-${{ github.ref }} ${{ env.cache-name }}-${{ runner.macos }}-${{ github.job }} - name: Clear ccache statistics run: | ccache --zero-stats ccache --max-size=2G ccache --show-stats - name: Run macOS Objective-C tests run: | make macos-test - name: npm install # C++ tests are run with root as working directory run: npm ci --ignore-scripts working-directory: . - name: Run macOS C++ unit tests run: | cmake -S . -B $BUILD_DIR cmake --build $BUILD_DIR --target mbgl-test-runner ctest -VV --test-dir $BUILD_DIR -R mbgl-test-runner env: BUILD_DIR: ../../../maplibre-gl-native-macostestbuild - name: Check public symbols run: make darwin-check-public-symbols - name: Lint plist files run: make macos-lint