diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml new file mode 100644 index 000000000..6fdb59220 --- /dev/null +++ b/.github/workflows/mac.yml @@ -0,0 +1,149 @@ +name: macOS (Python 3.11) +on: + workflow_dispatch: + pull_request: + push: + branches: + - master + - 'releases/**' + +concurrency: + # github.ref is not unique in post-commit + group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-mac-main + cancel-in-progress: true + +env: + PYTHON_VERSION: '3.11' + +jobs: + Build_and_test: + name: Build and Test + timeout-minutes: 150 + defaults: + run: + shell: bash + runs-on: 'macos-13-large' + env: + CMAKE_BUILD_TYPE: 'Release' + MACOSX_DEPLOYMENT_TARGET: '11.0' + OSX_ARCHITECTURES: 'x86_64' + CMAKE_CXX_COMPILER_LAUNCHER: ccache + CMAKE_C_COMPILER_LAUNCHER: ccache + OPENVINO_REPO: ${{ github.workspace }}/openvino + OPENVINO_CONTRIB_REPO: ${{ github.workspace }}/openvino_contrib + TEST_DATA: ${{ github.workspace }}/testdata + INSTALL_DIR: ${{ github.workspace }}/openvino_install + INSTALL_DIR_JS: ${{ github.workspace }}/openvino_install/js + INSTALL_TEST_DIR: ${{ github.workspace }}/tests_install + BUILD_DIR: ${{ github.workspace }}/build + CCACHE_DIR: ${{ github.workspace }}/ccache + CCACHE_MAXSIZE: '2G' + GRADLE_VER: '7.1.1' + steps: + - name: Clone OpenVINO + uses: actions/checkout@v4 + with: + repository: 'openvinotoolkit/openvino' + path: 'openvino' + submodules: 'true' + ref: 'master' + + - name: Clone OpenVINO Contrib + uses: actions/checkout@v4 + with: + path: 'openvino_contrib' + + - name: Clone Testdata + uses: actions/checkout@v4 + with: + repository: 'openvinotoolkit/testdata' + path: 'testdata' + lfs: 'true' + submodules: 'true' + + # + # Dependencies + # + + - name: Install build dependencies + run: brew install coreutils ninja scons automake gradle ccache + + - name: Setup Python ${{ env.PYTHON_VERSION }} + uses: actions/setup-python@v5 + with: + python-version: ${{ env.PYTHON_VERSION }} + + - name: Install python dependencies + run: python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/wheel/requirements-dev.txt + + # + # Build + # + + - name: Setup ccache + uses: actions/cache@v4 + with: + # Should save cache only if run in the master branch of the base repo + # github.ref_name is 'ref/PR_#' in case of the PR, and 'branch_name' when executed on push + save-always: ${{ github.ref_name == 'master' && 'true' || 'false' }} + path: ${{ env.CCACHE_DIR }} + key: ${{ runner.os }}-${{ runner.arch }}-ccache-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-${{ runner.arch }}-ccache + + - name: CMake configure + run: | + cmake \ + -GNinja \ + -DCMAKE_VERBOSE_MAKEFILE=ON \ + -DCMAKE_BUILD_TYPE=${{ env.CMAKE_BUILD_TYPE }} \ + -DBUILD_nvidia_plugin=OFF \ + -DOPENVINO_EXTRA_MODULES=${{ env.OPENVINO_CONTRIB_REPO }}/modules \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=${{ env.MACOSX_DEPLOYMENT_TARGET }} \ + -DCMAKE_OSX_ARCHITECTURES=${{ env.OSX_ARCHITECTURES }} \ + -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \ + -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \ + -DENABLE_OV_PADDLE_FRONTEND=OFF \ + -DENABLE_OV_TF_FRONTEND=OFF \ + -DENABLE_OV_TF_LITE_FRONTEND=OFF \ + -DENABLE_OV_PYTORCH_FRONTEND=OFF \ + -DENABLE_CPPLINT=OFF \ + -DENABLE_INTEL_NPU=OFF \ + -S ${{ env.OPENVINO_REPO }} \ + -B ${{ env.BUILD_DIR }} + + - name: Cmake build + run: cmake --build ${{ env.BUILD_DIR }} --parallel + + - name: Show ccache stats + run: ccache --show-stats + + - name: Cmake install + run: cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -P ${{ env.BUILD_DIR }}/cmake_install.cmake + + - name: Java tests + working-directory: ${{ env.OPENVINO_CONTRIB_REPO }}/modules/java_api + run: | + . ${{ env.INSTALL_DIR }}/setupvars.sh gradle clean build --info + + for d in CPU HETERO:CPU; do + gradle test -Prun_tests -DMODELS_PATH=${{ env.TEST_DATA }} -Ddevice=$d --info; + done + + - name: Check wheel installation + run: | + source ${{ env.INSTALL_DIR }}/setupvars.sh + python3 -m pip install -r ${{ env.OPENVINO_CONTRIB_REPO }}/modules/custom_operations/tests/requirements.txt + + pushd ${{ env.INSTALL_DIR }}/tools + wheel_name=$(find . -name 'openvino-*.whl') + python3 -m pip install $wheel_name + popd + + - name: Upload Test Results + uses: actions/upload-artifact@v4 + if: ${{ !cancelled() }} + with: + name: test-results-java + path: ${{ env.OPENVINO_CONTRIB_REPO }}/modules/java_api/build/test-results + if-no-files-found: 'warn'