name: macos-ci on: workflow_dispatch: push: branches: - main tags-ignore: - '**' paths-ignore: - ".gitignore" - "**.md" # ignore other platforms - "platform/android/**" - "platform/glfw/**" - "platform/node/**" - "platform/qt/**" # ignore CI for other platforms - ".github/FUNDING.yml" - ".github/actions/**" - ".github/workflows/android-ci.yml" - ".github/workflows/android-ci-pull.yml" - ".github/workflows/android-docker-base.yml" - ".github/workflows/android-docker-ndk-r21b.yml" - ".github/workflows/android-release.yml" - ".github/workflows/gh-pages-android-api.yml" - ".github/workflows/gh-pages-ios-api.yml" - ".github/workflows/ios-ci.yml" - ".github/workflows/ios-pre-release.yml" - ".github/workflows/ios-release.yml" - ".github/workflows/macos-release.yml" - ".github/workflows/node-ci.yml" - ".github/workflows/node-release.yml" - ".github/workflows/qt-ci-windows.yml" - ".github/workflows/qt-ci.yml" - ".github/workflows/update-gl-js.yml" pull_request: branches: - main paths-ignore: - ".gitignore" - "**.md" # ignore other platforms - "platform/android/**" - "platform/glfw/**" - "platform/ios/**" - "platform/node/**" - "platform/qt/**" # ignore CI for other platforms - ".github/FUNDING.yml" - ".github/workflows/android-ci.yml" - ".github/workflows/android-ci-pull.yml" - ".github/workflows/android-docker-base.yml" - ".github/workflows/android-docker-ndk-r21b.yml" - ".github/workflows/gh-pages-android-api.yml" - ".github/workflows/gh-pages-ios-api.yml" - ".github/workflows/ios-ci.yml" - ".github/workflows/ios-pre-release.yml" - ".github/workflows/ios-release.yml" - ".github/workflows/macos-release.yml" - ".github/workflows/node-ci.yml" - ".github/workflows/node-release.yml" - ".github/workflows/qt-ci-windows.yml" - ".github/workflows/qt-ci.yml" - ".github/workflows/update-gl-js.yml" 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: Build macos test run: | make macos-test - name: Check public symbols run: make darwin-check-public-symbols - name: Lint plist files run: make macos-lint - name: Darwin Style Code check run: make darwin-style-code