-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[CI][GHA] Manylinux x86 build (#27430)
### Details: - Enabled manilinux x86 build based on manylinux 2014 image - OpenVINO tarball package - Wheels for 3.9-3.13 Pythons ### Tickets: - *148719* --------- Co-authored-by: Alina Kladieva <[email protected]> Co-authored-by: Ilya Lavrenov <[email protected]>
- Loading branch information
1 parent
d5dcb04
commit a97ff61
Showing
4 changed files
with
254 additions
and
1 deletion.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
pr-27384 | ||
pr-27430 |
20 changes: 20 additions & 0 deletions
20
.github/dockerfiles/ov_build/manylinux2014_x86_64/Dockerfile
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
ARG REGISTRY="quay.io" | ||
FROM openvinogithubactions.azurecr.io/quayio/pypa/manylinux2014_x86_64 | ||
|
||
USER root | ||
|
||
# Install build dependencies | ||
ADD install_build_dependencies.sh /install_build_dependencies.sh | ||
RUN chmod +x /install_build_dependencies.sh && /install_build_dependencies.sh | ||
|
||
# Install sscache | ||
ARG SCCACHE_VERSION="v0.7.5" | ||
ENV SCCACHE_HOME="/opt/sccache" \ | ||
SCCACHE_PATH="/opt/sccache/sccache" | ||
|
||
RUN mkdir ${SCCACHE_HOME} && cd ${SCCACHE_HOME} && \ | ||
SCCACHE_ARCHIVE="sccache-${SCCACHE_VERSION}-x86_64-unknown-linux-musl.tar.gz" && \ | ||
curl -SLO https://github.com/mozilla/sccache/releases/download/${SCCACHE_VERSION}/${SCCACHE_ARCHIVE} && \ | ||
tar -xzf ${SCCACHE_ARCHIVE} --strip-components=1 && rm ${SCCACHE_ARCHIVE} | ||
|
||
ENV PATH="$SCCACHE_HOME:$PATH" |
42 changes: 42 additions & 0 deletions
42
.github/dockerfiles/ov_build/ubuntu_22_04_x64_docker/Dockerfile
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
ARG REGISTRY="docker.io" | ||
FROM ${REGISTRY}/library/ubuntu:22.04 | ||
|
||
USER root | ||
|
||
# APT configuration | ||
RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf && \ | ||
echo 'APT::Get::Assume-Yes "true";' >> /etc/apt/apt.conf && \ | ||
echo 'APT::Get::Fix-Broken "true";' >> /etc/apt/apt.conf && \ | ||
echo 'APT::Get::no-install-recommends "true";' >> /etc/apt/apt.conf | ||
|
||
ENV DEBIAN_FRONTEND="noninteractive" \ | ||
TZ="Europe/London" | ||
|
||
RUN apt-get update && \ | ||
apt-get install software-properties-common && \ | ||
add-apt-repository --yes --no-update ppa:git-core/ppa && \ | ||
add-apt-repository --yes --no-update ppa:deadsnakes/ppa && \ | ||
apt-get update && \ | ||
apt-get install \ | ||
curl \ | ||
git \ | ||
gpg-agent \ | ||
tzdata \ | ||
# parallel gzip | ||
pigz \ | ||
python3 \ | ||
python3-pip \ | ||
&& \ | ||
rm -rf /var/lib/apt/lists/* | ||
|
||
# Install docker | ||
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ | ||
gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \ | ||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \ | ||
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ | ||
tee /etc/apt/sources.list.d/docker.list > /dev/null | ||
|
||
RUN apt-get update && \ | ||
apt-get install -y docker-ce docker-ce-cli containerd.io | ||
|
||
ENV DOCKER_BUILDKIT=1 |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,191 @@ | ||
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' | ||
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 | ||
|
||
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: 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 \ | ||
-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 \ | ||
-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' |