name: Mac_CI on: push: branches: - main - rel-* pull_request: branches: - main - rel-* workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true env: python_version: 3.11 xcode_version: 15.2 jobs: ARM64: runs-on: macos-14 timeout-minutes: 60 steps: - uses: actions/setup-python@v5 with: python-version: ${{ env.python_version }} - name: Verify ARM64 machine shell: python run: | import platform assert platform.machine() == "arm64", "This job expects to be run on an ARM64 machine." - name: Use Xcode ${{ env.xcode_version }} shell: bash run: | XCODE_DEVELOPER_DIR="/Applications/Xcode_${{ env.xcode_version }}.app/Contents/Developer" sudo xcode-select --switch "${XCODE_DEVELOPER_DIR}" - uses: actions/checkout@v4 - name: Build and test shell: bash run: | python ./tools/ci_build/build.py \ --build_dir ./build \ --update \ --build --parallel \ --test \ --build_shared_lib \ --build_objc \ --use_coreml \ --use_xnnpack \ --use_binskim_compliant_compile_flags Objective-C-StaticAnalysis: runs-on: macos-14 timeout-minutes: 30 steps: - uses: actions/setup-python@v5 with: python-version: ${{ env.python_version }} - name: Use Xcode ${{ env.xcode_version }} shell: bash run: | XCODE_DEVELOPER_DIR="/Applications/Xcode_${{ env.xcode_version }}.app/Contents/Developer" sudo xcode-select --switch "${XCODE_DEVELOPER_DIR}" - uses: actions/checkout@v4 - name: Generate compile_commands.json and ONNX protobuf files shell: bash run: | python ./tools/ci_build/build.py \ --build_dir ./build \ --cmake_generator "Unix Makefiles" \ --config Debug \ --build_shared_lib \ --use_coreml \ --build_objc \ --enable_training_apis \ --cmake_extra_defines CMAKE_EXPORT_COMPILE_COMMANDS=ON \ --use_binskim_compliant_compile_flags \ --update \ --build --parallel \ --target onnx_proto - name: Analyze Objective-C/C++ source code shell: bash run: | CLANG_TIDY_CHECKS="-*,clang-analyzer-*" "$(brew --prefix llvm@15)/bin/clang-tidy" \ -p=./build/Debug \ --checks="${CLANG_TIDY_CHECKS}" \ --warnings-as-errors="${CLANG_TIDY_CHECKS}" \ --header-filter="objectivec/include|objectivec|onnxruntime/core" \ ./objectivec/*.mm \ ./onnxruntime/core/platform/apple/logging/apple_log_sink.mm \ ./onnxruntime/core/providers/coreml/model/*.mm