273 lines
8.9 KiB
YAML
273 lines
8.9 KiB
YAML
name: macOS (Python 3.11)
|
|
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
# at 00:00 on workdays
|
|
- cron: '0 0 * * 1,2,3,4,5'
|
|
# pull_request:
|
|
# paths-ignore:
|
|
# - '**/docs/**'
|
|
# - 'docs/**'
|
|
# - '**/**.md'
|
|
# - '**.md'
|
|
# - '**/layer_tests_summary/**'
|
|
# - '**/conformance/**'
|
|
# push:
|
|
# paths-ignore:
|
|
# - '**/docs/**'
|
|
# - 'docs/**'
|
|
# - '**/**.md'
|
|
# - '**.md'
|
|
# - '**/layer_tests_summary/**'
|
|
# - '**/conformance/**'
|
|
# 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:
|
|
|
|
Smart_CI:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
affected_components: "${{ steps.smart_ci.outputs.affected_components }}"
|
|
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}"
|
|
steps:
|
|
- name: checkout action
|
|
uses: actions/checkout@v4
|
|
with:
|
|
sparse-checkout: .github/actions/smart-ci
|
|
|
|
- name: Get affected components
|
|
id: smart_ci
|
|
uses: ./.github/actions/smart-ci
|
|
with:
|
|
repository: ${{ github.repository }}
|
|
pr: ${{ github.event.number }}
|
|
commit_sha: ${{ github.sha }}
|
|
component_pattern: "category: (.*)"
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
skip_when_only_listed_labels_set: 'docs'
|
|
skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg'
|
|
|
|
Build:
|
|
needs: Smart_CI
|
|
timeout-minutes: 150
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
runs-on: 'macos-13-large'
|
|
env:
|
|
CMAKE_BUILD_TYPE: 'Release'
|
|
CMAKE_GENERATOR: 'Ninja Multi-Config'
|
|
MACOSX_DEPLOYMENT_TARGET: '10.12'
|
|
CMAKE_CXX_COMPILER_LAUNCHER: ccache
|
|
CMAKE_C_COMPILER_LAUNCHER: ccache
|
|
OPENVINO_REPO: ${{ github.workspace }}/openvino
|
|
OPENVINO_CONTRIB_REPO: ${{ github.workspace }}/openvino_contrib
|
|
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
|
|
steps:
|
|
- name: Clone OpenVINO
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: 'openvino'
|
|
submodules: 'true'
|
|
|
|
- name: Clone OpenVINO Contrib
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: 'openvinotoolkit/openvino_contrib'
|
|
path: 'openvino_contrib'
|
|
|
|
#
|
|
# Print system info
|
|
#
|
|
|
|
- name: System info
|
|
uses: ./openvino/.github/actions/system_info
|
|
|
|
#
|
|
# Dependencies
|
|
#
|
|
|
|
- name: Install build dependencies
|
|
run: brew install coreutils ninja scons
|
|
|
|
- name: Setup Python ${{ env.PYTHON_VERSION }}
|
|
uses: ./openvino/.github/actions/setup_python
|
|
with:
|
|
version: ${{ env.PYTHON_VERSION }}
|
|
should-setup-pip-paths: 'false'
|
|
self-hosted-runner: 'false'
|
|
|
|
- name: Install python dependencies
|
|
run: |
|
|
# For Python API
|
|
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/wheel/requirements-dev.txt
|
|
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/requirements.txt
|
|
|
|
# For running Python API tests
|
|
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/bindings/python/src/compatibility/openvino/requirements-dev.txt
|
|
|
|
# For running ONNX frontend unit tests
|
|
python3 -m pip install --force-reinstall -r ${{ env.OPENVINO_REPO }}/src/frontends/onnx/tests/requirements.txt
|
|
|
|
# For running TensorFlow frontend unit tests
|
|
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/tensorflow/tests/requirements.txt
|
|
|
|
# For running Paddle frontend unit tests
|
|
python3 -m pip install -r ${{ env.OPENVINO_REPO }}/src/frontends/paddle/tests/requirements.txt
|
|
|
|
#
|
|
# Build
|
|
#
|
|
|
|
- name: Setup ccache
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
with:
|
|
max-size: "2000M"
|
|
# 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: ${{ github.ref_name == 'master' && 'true' || 'false' }}
|
|
verbose: 2
|
|
key: ${{ runner.os }}-${{ runner.arch }}-main
|
|
restore-keys: |
|
|
${{ runner.os }}-${{ runner.arch }}-main
|
|
|
|
- name: CMake configure
|
|
run: |
|
|
cmake \
|
|
-G "${{ env.CMAKE_GENERATOR }}" \
|
|
-DENABLE_CPPLINT=OFF \
|
|
-DENABLE_NCC_STYLE=OFF \
|
|
-DENABLE_TESTS=ON \
|
|
-DCMAKE_COMPILE_WARNING_AS_ERROR=OFF \
|
|
-DENABLE_STRICT_DEPENDENCIES=OFF \
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CMAKE_CXX_COMPILER_LAUNCHER }} \
|
|
-DCMAKE_C_COMPILER_LAUNCHER=${{ env.CMAKE_C_COMPILER_LAUNCHER }} \
|
|
-S ${{ env.OPENVINO_REPO }} \
|
|
-B ${{ env.BUILD_DIR }}
|
|
|
|
- name: Cmake build - OpenVINO
|
|
run: cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }}
|
|
|
|
- name: Show ccache stats
|
|
run: ccache --show-stats
|
|
|
|
- name: Cmake install - OpenVINO
|
|
run: |
|
|
cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -P ${{ env.BUILD_DIR }}/cmake_install.cmake
|
|
cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_TEST_DIR }} -DCOMPONENT=tests -P ${{ env.BUILD_DIR }}/cmake_install.cmake
|
|
cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCOMPONENT=python_wheels -P ${{ env.BUILD_DIR }}/cmake_install.cmake
|
|
|
|
- name: Pack Artifacts
|
|
run: |
|
|
pushd ${{ env.INSTALL_DIR }}
|
|
tar -czvf ${{ env.BUILD_DIR }}/openvino_package.tar.gz *
|
|
popd
|
|
|
|
pushd ${{ env.INSTALL_TEST_DIR }}
|
|
tar -czvf ${{ env.BUILD_DIR }}/openvino_tests.tar.gz *
|
|
popd
|
|
|
|
- name: Cmake & Build - OpenVINO Contrib
|
|
run: |
|
|
cmake \
|
|
-DBUILD_nvidia_plugin=OFF \
|
|
-DBUILD_java_api=OFF \
|
|
-DCUSTOM_OPERATIONS="calculate_grid;complex_mul;fft;grid_sample;sparse_conv;sparse_conv_transpose" \
|
|
-DOPENVINO_EXTRA_MODULES=${{ env.OPENVINO_CONTRIB_REPO }}/modules \
|
|
-S ${{ env.OPENVINO_REPO }} \
|
|
-B ${{ env.BUILD_DIR }}
|
|
cmake --build ${{ env.BUILD_DIR }} --parallel --config ${{ env.CMAKE_BUILD_TYPE }}
|
|
|
|
- name: CMake configure, build and install - OpenVINO JS API
|
|
if: fromJSON(needs.smart_ci.outputs.affected_components).JS_API
|
|
run: |
|
|
cmake \
|
|
-DCPACK_GENERATOR=NPM \
|
|
-S ${{ env.OPENVINO_REPO }} \
|
|
-B ${{ env.BUILD_DIR }}
|
|
|
|
cmake --build ${{ env.BUILD_DIR }} --parallel
|
|
|
|
cmake -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR_JS }} -P ${{ env.BUILD_DIR }}/cmake_install.cmake
|
|
#
|
|
# Upload build artifacts
|
|
#
|
|
|
|
- name: Upload openvino package
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: openvino_package
|
|
path: ${{ env.BUILD_DIR }}/openvino_package.tar.gz
|
|
if-no-files-found: 'error'
|
|
|
|
- name: Upload openvino tests package
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: openvino_tests
|
|
path: ${{ env.BUILD_DIR }}/openvino_tests.tar.gz
|
|
if-no-files-found: 'error'
|
|
|
|
- name: Upload openvino js package
|
|
if: fromJSON(needs.smart_ci.outputs.affected_components).JS_API
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: openvino_js_package
|
|
path: ${{ env.INSTALL_DIR_JS }}
|
|
if-no-files-found: 'error'
|
|
|
|
Samples:
|
|
needs: [ Build, Smart_CI ]
|
|
if: fromJSON(needs.smart_ci.outputs.affected_components).samples
|
|
uses: ./.github/workflows/job_samples_tests.yml
|
|
with:
|
|
runner: 'macos-13'
|
|
affected-components: ${{ needs.smart_ci.outputs.affected_components }}
|
|
|
|
JS_API:
|
|
name: OpenVINO JS API
|
|
needs: [ Build, Smart_CI ]
|
|
if: fromJSON(needs.smart_ci.outputs.affected_components).JS_API
|
|
uses: ./.github/workflows/job_openvino_js.yml
|
|
with:
|
|
runner: 'macos-13'
|
|
|
|
CXX_Unit_Tests:
|
|
name: C++ unit tests
|
|
needs: [ Build, Smart_CI ]
|
|
uses: ./.github/workflows/job_cxx_unit_tests.yml
|
|
with:
|
|
runner: 'macos-13'
|
|
affected-components: ${{ needs.smart_ci.outputs.affected_components }}
|
|
|
|
Python_Unit_Tests:
|
|
name: Python unit tests
|
|
needs: [ Build, Smart_CI ]
|
|
uses: ./.github/workflows/job_python_unit_tests.yml
|
|
with:
|
|
runner: 'macos-13'
|
|
affected-components: ${{ needs.smart_ci.outputs.affected_components }}
|
|
|
|
CPU_Functional_Tests:
|
|
name: CPU functional tests
|
|
# if: fromJSON(needs.smart_ci.outputs.affected_components).CPU.test
|
|
if: ${{ 'false' }} # Ticket: 122001
|
|
needs: [ Build, Smart_CI ]
|
|
uses: ./.github/workflows/job_cpu_functional_tests.yml
|
|
with:
|
|
runner: 'macos-13'
|