[CI] [GHA] Setup pip cache directory per Python on Windows; do not use cache for setup-python
action
#2585
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Manylinux 2014 | |
on: | |
workflow_dispatch: | |
pull_request: | |
merge_group: | |
push: | |
branches: | |
- master | |
- 'releases/**' | |
concurrency: | |
# github.ref is not unique in post-commit | |
group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-manylinux-2014 | |
cancel-in-progress: true | |
permissions: read-all | |
env: | |
PIP_CACHE_PATH: /mount/caches/pip/linux | |
jobs: | |
Smart_CI: | |
runs-on: ubuntu-latest | |
outputs: | |
affected_components: "${{ steps.smart_ci.outputs.affected_components }}" | |
changed_components: "${{ steps.smart_ci.outputs.changed_components }}" | |
skip_workflow: "${{ steps.smart_ci.outputs.skip_workflow }}" | |
steps: | |
- name: checkout action | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
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 }} | |
ref_name: ${{ github.ref_name }} | |
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' | |
- name: Show affected components | |
run: | | |
echo "${{ toJSON(steps.smart_ci.outputs.affected_components) }}" | |
shell: bash | |
Docker: | |
needs: Smart_CI | |
if: "!needs.smart_ci.outputs.skip_workflow" | |
runs-on: aks-linux-4-cores-16gb-docker-build | |
container: | |
image: openvinogithubactions.azurecr.io/docker_build:0.2 | |
volumes: | |
- /mount:/mount | |
outputs: | |
images: "${{ steps.handle_docker.outputs.images }}" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: ./.github/actions/handle_docker | |
id: handle_docker | |
with: | |
images: | | |
ov_build/ubuntu_22_04_x64_docker | |
ov_build/manylinux2014_x86_64 | |
registry: 'openvinogithubactions.azurecr.io' | |
dockerfiles_root_dir: '.github/dockerfiles' | |
changed_components: ${{ needs.smart_ci.outputs.changed_components }} | |
Build: | |
needs: [Docker] | |
timeout-minutes: 120 | |
defaults: | |
run: | |
shell: bash | |
runs-on: aks-linux-16-cores-32gb-manylinux | |
if: ${{ github.repository_owner == 'openvinotoolkit' }} | |
container: | |
image: ${{ fromJSON(needs.docker.outputs.images).ov_build.ubuntu_22_04_x64_docker }} | |
volumes: | |
- /mount:/mount | |
options: -e SCCACHE_AZURE_BLOB_CONTAINER -e SCCACHE_AZURE_CONNECTION_STRING -e DOCKER_CONFIG -v ${{ github.workspace }}:${{ github.workspace }} | |
env: | |
CMAKE_BUILD_TYPE: 'Release' | |
ARCH: 'x86_64' | |
OPENVINO_REPO: ${{ github.workspace }}/src | |
INSTALL_DIR: ${{ github.workspace }}/install/openvino | |
INSTALL_WHEELS_DIR: ${{ github.workspace }}/install/wheels | |
BUILD_DIR: ${{ github.workspace }}/build | |
DOCKER_CONFIG: "/mount/.docker" | |
CMAKE_CXX_COMPILER_LAUNCHER: sccache | |
CMAKE_C_COMPILER_LAUNCHER: sccache | |
SCCACHE_IGNORE_SERVER_IO_ERROR: 1 | |
SCCACHE_SERVER_PORT: 35555 | |
SCCACHE_CACHE_SIZE: 50G | |
SCCACHE_AZURE_KEY_PREFIX: manylinux_2014 | |
ARTIFACTS_SHARE: "/mount/build-artifacts" | |
MANIFEST_PATH: ${{ github.workspace }}/manifest.yml | |
PRODUCT_TYPE: public_manylinux2014_x86_64_release | |
steps: | |
- name: Clone OpenVINO | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
path: ${{ env.OPENVINO_REPO }} | |
submodules: 'true' | |
- name: System info | |
uses: ./src/.github/actions/system_info | |
- name: Generate product manifest and set CI_BUILD_NUMBER & CI_BUILD_DEV_TAG | |
id: create_manifest | |
uses: ./src/.github/actions/create_manifest | |
with: | |
repos: | | |
${{ env.OPENVINO_REPO }} | |
product_type: ${{ env.PRODUCT_TYPE }} | |
target_arch: ${{ env.ARCH }} | |
build_type: ${{ env.CMAKE_BUILD_TYPE }} | |
save_to: ${{ env.MANIFEST_PATH }} | |
- name: Create docker build cache | |
run: | | |
docker volume create ov_build_cache | |
- name: Build OpenVINO | |
run: | | |
docker run --rm \ | |
-v ${{ env.OPENVINO_REPO }}:/work/src \ | |
-v ov_build_cache:/work/build \ | |
-v ${{ env.INSTALL_DIR }}:/work/install \ | |
-e SCCACHE_AZURE_BLOB_CONTAINER \ | |
-e SCCACHE_AZURE_CONNECTION_STRING \ | |
-e SCCACHE_SERVER_PORT \ | |
-e SCCACHE_IGNORE_SERVER_IO_ERROR \ | |
-e SCCACHE_CACHE_SIZE \ | |
-e SCCACHE_AZURE_KEY_PREFIX \ | |
-e CMAKE_CXX_COMPILER_LAUNCHER \ | |
-e CMAKE_C_COMPILER_LAUNCHER \ | |
-e CI_BUILD_NUMBER \ | |
-e CI_BUILD_DEV_TAG \ | |
-w /work/src \ | |
${{ fromJSON(needs.docker.outputs.images).ov_build.manylinux2014_x86_64 }} \ | |
/bin/bash -c " | |
cmake -DENABLE_CPPLINT=OFF -DENABLE_NCC_STYLE=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_PYTHON=OFF -DENABLE_WHEEL=OFF -S /work/src -B /work/build && | |
cmake --build /work/build --parallel $(nproc) --config ${{ env.CMAKE_BUILD_TYPE }} && | |
cmake --install /work/build --config ${{ env.CMAKE_BUILD_TYPE }} --prefix /work/install | |
" | |
- name: Pack Artifacts | |
run: mkdir -p ${{ env.BUILD_DIR }} && tar -cvf - * | pigz > ${{ env.BUILD_DIR }}/openvino_package.tar.gz | |
working-directory: ${{ env.INSTALL_DIR }} | |
- name: Build Python API(Python 3.9-3.13) | |
run: | | |
SUPPORTED_PYTHON_VERSIONS=("39" "310" "311" "312" "313") | |
for PY_VER in "${SUPPORTED_PYTHON_VERSIONS[@]}"; do | |
python_path=/opt/python/cp${PY_VER}-cp${PY_VER}/bin | |
docker run --rm \ | |
-v ${{ env.OPENVINO_REPO }}:/work/src \ | |
-v ${{ env.INSTALL_WHEELS_DIR }}:/work/wheels \ | |
-v ${{ env.PIP_CACHE_PATH }}:/work/pip_cache \ | |
-v ov_build_cache:/work/build \ | |
-e SCCACHE_AZURE_BLOB_CONTAINER \ | |
-e SCCACHE_AZURE_CONNECTION_STRING \ | |
-e SCCACHE_SERVER_PORT \ | |
-e SCCACHE_IGNORE_SERVER_IO_ERROR \ | |
-e SCCACHE_CACHE_SIZE \ | |
-e SCCACHE_AZURE_KEY_PREFIX \ | |
-e CMAKE_CXX_COMPILER_LAUNCHER \ | |
-e CMAKE_C_COMPILER_LAUNCHER \ | |
-e CI_BUILD_NUMBER \ | |
-e CI_BUILD_DEV_TAG \ | |
-w /work/src \ | |
${{ fromJSON(needs.docker.outputs.images).ov_build.manylinux2014_x86_64 }} \ | |
/bin/bash -c " | |
export PATH=${python_path}:\$PATH | |
PIP_VER=$(python3 -c "import pip; print(pip.__version__)") | |
export "PIP_CACHE_DIR=/work/pip_cache/${PIP_VER}" | |
python3 -m pip install -r /work/src/src/bindings/python/wheel/requirements-dev.txt && | |
cmake -DOpenVINODeveloperPackage_DIR=/work/build -DENABLE_PYTHON=ON -DENABLE_WHEEL=ON -S /work/src/src/bindings/python -B /work/build_py${PY_VER} && | |
cmake --build /work/build_py${PY_VER} --parallel $(nproc) --target ie_wheel --config ${{ env.CMAKE_BUILD_TYPE }} && | |
cmake --install /work/build_py${PY_VER} --config ${{ env.CMAKE_BUILD_TYPE }} --prefix /work/wheels --component python_wheels | |
" | |
done | |
# | |
# Upload build artifacts | |
# | |
- name: Upload openvino package | |
if: ${{ always() }} | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: openvino_package | |
path: ${{ env.BUILD_DIR }}/openvino_package.tar.gz | |
if-no-files-found: 'error' | |
- name: Upload openvino wheels | |
if: ${{ always() }} | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: openvino_wheels | |
path: ${{ env.INSTALL_WHEELS_DIR }}/wheels/*.whl | |
if-no-files-found: 'error' | |
- name: Store artifacts to a shared drive | |
id: store_artifacts | |
if: ${{ always() }} | |
uses: ./src/.github/actions/store_artifacts | |
with: | |
artifacts: | | |
${{ env.BUILD_DIR }}/openvino_package.tar.gz | |
${{ env.MANIFEST_PATH }} | |
${{ env.INSTALL_WHEELS_DIR }}/wheels | |
storage_dir: ${{ env.PRODUCT_TYPE }} | |
storage_root: ${{ env.ARTIFACTS_SHARE }} | |
Overall_Status: | |
name: ci/gha_overall_status_manylinux2014 | |
needs: [Smart_CI, Build] | |
if: ${{ always() }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check status of all jobs | |
if: >- | |
${{ | |
contains(needs.*.result, 'failure') || | |
contains(needs.*.result, 'cancelled') | |
}} | |
run: exit 1 |