docs/dev/ci/github_actions/openvino_provider.md
This is a custom GitHub Action that provides pre-built OpenVINO artifacts for a given revision — either a specific commit, the latest available from a branch, or a publicly available package. It is designed for use in GitHub Action workflows of third-party repositories that depend on OpenVINO and require validation against it, avoiding the need to rebuild OpenVINO from source.
A simple example: calling OpenVINO provider in a separate job within a workflow:
openvino_download:
name: Download prebuilt OpenVINO
outputs:
status: ${{ steps.openvino_download.outcome }}
ov_wheel_source: ${{ steps.openvino_download.outputs.ov_wheel_source }}
ov_version: ${{ steps.openvino_download.outputs.ov_version }}
docker_tag: ${{ steps.get_docker_tag.outputs.docker_tag }}
timeout-minutes: 10
defaults:
run:
shell: bash
runs-on: aks-linux-medium
container:
image: 'openvinogithubactions.azurecr.io/openvino_provider:0.1.0'
volumes:
- /mount:/mount
- ${{ github.workspace }}:${{ github.workspace }}
steps:
- uses: openvinotoolkit/openvino/.github/actions/openvino_provider@master
id: openvino_download
with:
platform: 'ubuntu22'
revision: latest_available_commit
revision - specifies which OpenVINO version to download artifacts for. Accepted values:
latest_available_commit - returns the latest complete post-commit artifacts built via OpenVINO GHA workflows.<specific commit hash> / HEAD - returns post-commit artifacts for a specific commit hash or HEAD,
if available.latest_nightly - fetches the latest available nightly artifacts from
storage.openvinotoolkit.org<specific package version> (e.g. 2025.1 or 2024.4.0rc2) - for any other release/pre-release/custom package
from storage.openvinotoolkit.orgNote: OpenVINO provider execution is supported on Linux GitHub runners only; though it can provide build artifacts for Windows as well - they can be propagated to Windows runners via GitHub storage (see example in openvino_tokenizers). To download post-commit artifacts,
the job with the action must run on an Azure-hosted Linux runner, e.g. runs-on: aks-linux-medium
in the example above.
platform - specifies the operating system for which artifacts should be downloaded.
Available options are listed in the input description
here.arch - specifies the target architecture (defaults to x86_64). Valid values are listed
in the input description here.install_dir - if specified, downloads artifacts to a given local path; otherwise artifacts are getting installed
to a root of GitHub workspace and then uploaded to GitHub artifacts storage
(uploading to GitHub storage is useful when reusing artifacts in multiple different jobs or propagating
them to incompatible runners such as Windows or GitHub-hosted ones, where this action cannot run).Information about downloaded artifacts is provided via action's outputs:
ov_artifact_name - the name under which artifacts are uploaded to GitHub storage
(only applicable when a local install_dir is not set).ov_wheel_source - a string to pass as an option to pip install command to specify the location of
OpenVINO Python wheels (either --find-links or --extra-index-url).ov_version - the OpenVINO version associated with the downloaded artifacts
(can be used to explicitly specify the version during installation; or for reporting purposes). openvino_tokenizers_tests:
name: OpenVINO tokenizers tests
needs: [ openvino_download ]
defaults:
run:
shell: bash
runs-on: ubuntu-22.04
steps:
...
- name: Download OpenVINO package
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
with:
name: ${{ needs.openvino_download.outputs.ov_artifact_name }}
path: ${{ env.INSTALL_DIR }}
merge-multiple: true
- name: Install OpenVINO Python wheel from pre-built artifacts
run: |
python3 -m pip install openvino==${{ needs.openvino_download.outputs.ov_version }} ${{ needs.openvino_download.outputs.ov_wheel_source }}
working-directory: ${{ env.INSTALL_DIR }}
For details on available inputs and outputs, refer to the action definition: .github/actions/openvino_provider/action.yml.
See also a real-life example in the openvino_tokenizers repo: