Update imageio[pyav] requirement from <=2.37.2 to <=2.37.3 in /tools/… #122
This file contains hidden or 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: Windows (VS 2022, Python 3.11) | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| merge_group: | |
| push: | |
| branches: | |
| - master | |
| - 'releases/**' | |
| permissions: read-all # Required by https://github.com/ossf/scorecard/blob/e23b8ad91fd6a64a0a971ca4fc0a4d1650725615/docs/checks.md#token-permissions | |
| concurrency: | |
| # github.ref is not unique in post-commit | |
| group: ${{ github.event_name == 'push' && github.run_id || github.ref }}-windows | |
| cancel-in-progress: true | |
| env: | |
| PYTHON_VERSION: '3.11' | |
| TARGET_BRANCH: 'master' | |
| PYTHONIOENCODING: utf8 | |
| CMAKE_CXX_COMPILER_LAUNCHER: ccache | |
| CMAKE_C_COMPILER_LAUNCHER: ccache | |
| CCACHE_MAXSIZE: 500Mi | |
| HF_HOME: C:/mount/caches/huggingface/win | |
| OV_CACHE: C:/mount/caches/huggingface/.ov_cache/win/775cf1/ | |
| OPENVINO_LOG_LEVEL: 2 # Windows fails with out of memory because of too verbose logging | |
| ARTIFACTS_SHARE: '/mount/build-artifacts' | |
| BASE_PRODUCT_TYPE: public_windows_vs2022 | |
| GENAI_WHEELS_ARTIFACT_NAME: 'genai_wheels' | |
| GENAI_ARCHIVE_ARTIFACT_BASE_NAME: 'genai_cpack' | |
| jobs: | |
| smart_ci: | |
| name: 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@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| timeout-minutes: 15 | |
| with: | |
| sparse-checkout: .github | |
| - name: Get affected components | |
| id: smart_ci | |
| uses: openvinotoolkit/openvino/.github/actions/smart-ci@36a8f092d3250e7a2a365f0445e61297d91c358e | |
| with: | |
| repository: ${{ github.repository }} | |
| pr: ${{ github.event.number }} | |
| commit_sha: ${{ github.sha }} | |
| ref_name: ${{ github.ref_name }} | |
| component_pattern: "category: ((?!Python API|CPP API).*)" | |
| repo_token: ${{ secrets.GITHUB_TOKEN }} | |
| skip_when_only_listed_labels_set: 'GH Pages Docs' | |
| skip_when_only_listed_files_changed: '*.md,*.rst,*.png,*.jpg,*.svg,*.gif' | |
| - name: Show affected components | |
| run: echo "${{ toJSON(steps.smart_ci.outputs.affected_components) }}" | |
| shell: bash | |
| openvino_download: | |
| needs: smart_ci | |
| if: ${{ github.event_name != 'merge_group' && needs.smart_ci.outputs.skip_workflow != 'True' }} | |
| name: Download prebuilt OpenVINO | |
| outputs: | |
| status: ${{ steps.openvino_download.outcome }} | |
| ov_artifact_name: ${{ steps.openvino_download.outputs.ov_artifact_name }} | |
| ov_wheel_source: ${{ steps.openvino_download.outputs.ov_wheel_source }} | |
| ov_version: ${{ steps.openvino_download.outputs.ov_version }} | |
| 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 }} | |
| continue-on-error: true | |
| steps: | |
| - uses: openvinotoolkit/openvino/.github/actions/openvino_provider@master | |
| id: openvino_download | |
| with: | |
| platform: windows | |
| commit_packages_to_provide: wheels,openvino_node_npm_package.zip | |
| revision: latest_available_commit | |
| # Set specific revision and uncomment to use OV from its PR build: | |
| # branch_name: master | |
| # event_name: pull_request | |
| genai_build_cpack: | |
| name: genai cpack (${{ matrix.build-type }}) | |
| strategy: | |
| matrix: | |
| build-type: [Release, Debug] | |
| needs: [ openvino_download ] | |
| timeout-minutes: 80 | |
| defaults: | |
| run: | |
| shell: pwsh | |
| runs-on: aks-win-8-cores-16gb-build | |
| env: | |
| CMAKE_GENERATOR: 'Ninja' # Ninja is the only Windows native generator supported by ccache | |
| OV_INSTALL_DIR: ${{ github.workspace }}\install\ov | |
| GENAI_INSTALL_DIR: ${{ github.workspace }}\install\genai | |
| INSTALL_TOOLS_DIR: ${{ github.workspace }}\tools | |
| INSTALL_TESTS_DIR: ${{ github.workspace }}\tests | |
| SRC_DIR: ${{ github.workspace }}\src\genai | |
| BUILD_DIR: ${{ github.workspace }}\build\genai | |
| CCACHE_DIR: ${{ github.workspace }}\ccache | |
| MANIFEST_PATH: ${{ github.workspace }}\manifest.yml | |
| steps: | |
| - name: Clone genai | |
| uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| submodules: recursive | |
| path: ${{ env.SRC_DIR }} | |
| - name: Setup Python 3.10 | |
| if: ${{ matrix.build-type != 'Debug' }} | |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 | |
| with: | |
| python-version: '3.10' | |
| - name: Setup Python 3.11 | |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 | |
| with: | |
| python-version: '3.11' | |
| - name: Setup Python 3.12 | |
| if: ${{ matrix.build-type != 'Debug' }} | |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 | |
| with: | |
| python-version: '3.12' | |
| - name: Setup Python 3.13 | |
| if: ${{ matrix.build-type != 'Debug' }} | |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 | |
| with: | |
| python-version: '3.13' | |
| - name: Download OpenVINO package | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| name: ${{ needs.openvino_download.outputs.ov_artifact_name }} | |
| path: ${{ env.OV_INSTALL_DIR }} | |
| merge-multiple: true | |
| # | |
| # Build | |
| # | |
| - name: Download and install ninja | |
| run: | | |
| Invoke-WebRequest https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip -OutFile ninja-win.zip -MaximumRetryCount 10 | |
| Expand-Archive -Force ninja-win.zip | |
| # Add it to the GitHub Path so it would be available in the subsequent steps | |
| Add-Content -Path $env:GITHUB_PATH -Value "${{ github.workspace }}/ninja-win" | |
| - name: Download and install ccache | |
| run: | | |
| Invoke-WebRequest -Uri 'https://github.com/ccache/ccache/releases/download/v4.9.1/ccache-4.9.1-windows-x86_64.zip' -OutFile 'ccache.zip' | |
| Expand-Archive -Path 'ccache.zip' -DestinationPath 'C:\temp\ccache' | |
| Move-Item -Path 'C:\temp\ccache\*' -Destination 'C:\ccache' | |
| Add-Content -Path $env:GITHUB_PATH -Value "C:\ccache" | |
| - name: Setup ccache | |
| id: ccache-restore | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| key: ${{ runner.os }}-${{ runner.arch }}-ccache-${{ env.TARGET_BRANCH }}-${{ matrix.build-type }}-cpack-${{ github.sha }} | |
| restore-keys: | | |
| ${{ runner.os }}-${{ runner.arch }}-ccache-${{ env.TARGET_BRANCH }}-${{ matrix.build-type }}-cpack | |
| path: ${{ env.CCACHE_DIR }} | |
| - name: Generate product manifest | |
| id: create_manifest | |
| uses: openvinotoolkit/openvino/.github/actions/create_manifest@master | |
| with: | |
| repos: ${{ env.SRC_DIR }} | |
| product_type: ${{ env.BASE_PRODUCT_TYPE }}_${{ matrix.build-type }} | |
| target_arch: 'x86_64' | |
| build_type: ${{ matrix.build-type }} | |
| save_to: ${{ env.MANIFEST_PATH }} | |
| - name: Clean ccache stats | |
| run: ccache --zero-stats --show-config | |
| - name: Configure Developer Command Prompt for Microsoft Visual C++ | |
| uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 | |
| with: | |
| toolset: 14.42 # v2022 | |
| - name: CMake Build | |
| shell: pwsh | |
| run: | | |
| ${{ env.OV_INSTALL_DIR }}/setupvars.ps1 | |
| if ( "${{ matrix.build-type }}" -ne "Debug" ) { | |
| $pyVersions = '3.10', '3.11', '3.12', '3.13' | |
| } else { | |
| $pyVersions = '3.11' | |
| } | |
| foreach ($pyVersion in $pyVersions) { | |
| Remove-Item -Path "${{ env.BUILD_DIR }}/CMakeCache.txt" -Force -ErrorAction SilentlyContinue | |
| $pythonCommand = "py -$pyVersion -c `"import sys; print(f'{sys.executable}')`"" | |
| $pythonExecutablePath = & cmd /c $pythonCommand | |
| cmake -DPython3_EXECUTABLE="$pythonExecutablePath" -DOpenVINODeveloperPackage_DIR=${{ env.OV_INSTALL_DIR }}/developer_package/cmake -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -S ${{ env.SRC_DIR }} -B ${{ env.BUILD_DIR }} && | |
| cmake --build ${{ env.BUILD_DIR }} --parallel $ENV:NUMBER_OF_PROCESSORS --config ${{ matrix.build-type }} --verbose && | |
| cmake --install ${{ env.BUILD_DIR }} --config=${{ matrix.build-type }} --prefix=${{ env.GENAI_INSTALL_DIR }} | |
| if ($LASTEXITCODE -ne 0) { | |
| Write-Host "Failed to build bindings for Python $pyVersion" | |
| exit 1 | |
| } | |
| } | |
| cmake --install ${{ env.BUILD_DIR }} --config=${{ matrix.build-type }} --prefix=${{ env.INSTALL_TOOLS_DIR }} --component tools_bin | |
| cmake --install ${{ env.BUILD_DIR }} --config=${{ matrix.build-type }} --prefix=${{ env.INSTALL_TESTS_DIR }} --component tests | |
| env: | |
| CMAKE_TLS_VERIFY: 0 | |
| - name: Show ccache stats | |
| run: ccache --show-stats | |
| # | |
| # Upload build artifacts | |
| # | |
| - name: Pack Artifacts | |
| run: | | |
| $file=Get-ChildItem -Path "${{ env.GENAI_INSTALL_DIR }}" | |
| $compress = @{ | |
| Path = $file | |
| CompressionLevel = "Optimal" | |
| DestinationPath = "${{ env.BUILD_DIR }}/${{ env.GENAI_ARCHIVE_ARTIFACT_BASE_NAME }}.zip" | |
| } | |
| Compress-Archive @compress | |
| - name: Save ccache | |
| if: always() && steps.ccache-restore.outputs.cache-hit != 'true' && github.event_name == 'push' | |
| uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
| path: ${{ env.CCACHE_DIR }} | |
| - name: Upload cpack package | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | |
| with: | |
| name: genai_cpack_${{ matrix.build-type }} | |
| path: ${{ env.BUILD_DIR }}/*.zip | |
| if-no-files-found: 'error' | |
| - name: Upload Tools | |
| if: always() | |
| uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | |
| with: | |
| name: genai_tools_${{ matrix.build-type }} | |
| path: ${{ env.INSTALL_TOOLS_DIR }} | |
| if-no-files-found: 'error' | |
| - name: Upload Tests | |
| if: always() | |
| uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | |
| with: | |
| name: genai_tests_${{ matrix.build-type }} | |
| path: ${{ env.INSTALL_TESTS_DIR }} | |
| if-no-files-found: 'error' | |
| - name: Upload manifest | |
| if: always() | |
| uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | |
| with: | |
| name: manifest_${{ matrix.build-type }} | |
| path: ${{ env.MANIFEST_PATH }} | |
| if-no-files-found: 'error' | |
| genai_build_wheels: | |
| name: Build Tokenizers & WWB Wheels | |
| needs: [ openvino_download ] | |
| timeout-minutes: 30 | |
| defaults: | |
| run: | |
| shell: pwsh | |
| runs-on: aks-win-8-cores-16gb-build | |
| env: | |
| CMAKE_GENERATOR: Ninja | |
| OV_INSTALL_DIR: ${{ github.workspace }}\ov | |
| SRC_DIR: ${{ github.workspace }}\src | |
| BUILD_DIR: ${{ github.workspace }}\build | |
| INSTALL_DIR: ${{ github.workspace }}\genai | |
| WHEELS_DIR: ${{ github.workspace }}\genai\wheels | |
| CCACHE_DIR: ${{ github.workspace }}\ccache | |
| steps: | |
| - name: Clone openvino.genai | |
| uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| submodules: recursive | |
| path: ${{ env.SRC_DIR }} | |
| - name: Setup Python 3.11 | |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 | |
| with: | |
| python-version: '3.11' | |
| cache: 'pip' | |
| - name: Download OpenVINO package | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| name: ${{ needs.openvino_download.outputs.ov_artifact_name }} | |
| path: ${{ env.OV_INSTALL_DIR }} | |
| merge-multiple: true | |
| - name: Download and install ninja | |
| run: | | |
| Invoke-WebRequest https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip -OutFile ninja-win.zip -MaximumRetryCount 10 | |
| Expand-Archive -Force ninja-win.zip | |
| # Add it to the GitHub Path so it would be available in the subsequent steps | |
| Add-Content -Path $env:GITHUB_PATH -Value "${{ github.workspace }}/ninja-win" | |
| - name: Download and install ccache | |
| run: | | |
| Invoke-WebRequest -Uri 'https://github.com/ccache/ccache/releases/download/v4.9.1/ccache-4.9.1-windows-x86_64.zip' -OutFile 'ccache.zip' | |
| Expand-Archive -Path 'ccache.zip' -DestinationPath 'C:\temp\ccache' | |
| Move-Item -Path 'C:\temp\ccache\*' -Destination 'C:\ccache' | |
| Add-Content -Path $env:GITHUB_PATH -Value "C:\ccache" | |
| - name: Setup ccache | |
| id: ccache-restore | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| key: ${{ runner.os }}-${{ runner.arch }}-ccache-${{ env.TARGET_BRANCH }}-Release-wheels-${{ github.sha }} | |
| restore-keys: | | |
| ${{ runner.os }}-${{ runner.arch }}-ccache-${{ env.TARGET_BRANCH }}-Release-wheels | |
| path: ${{ env.CCACHE_DIR }} | |
| - name: Clean ccache stats | |
| run: ccache --zero-stats --show-config | |
| - name: Configure Developer Command Prompt for Microsoft Visual C++ | |
| uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 | |
| with: | |
| toolset: 14.42 # v2022 | |
| - name: Build Tokenizers Wheel | |
| run: | | |
| python -m pip wheel -v --no-deps --wheel-dir ${{ env.WHEELS_DIR }} ` | |
| --config-settings=override=cmake.generator='Ninja' ` | |
| --config-settings=override=cmake.build_path='${{ env.BUILD_DIR }}/tokenizers' ` | |
| ${{ needs.openvino_download.outputs.ov_wheel_source }} ` | |
| ${{ env.SRC_DIR }}/thirdparty/openvino_tokenizers | |
| working-directory: ${{ env.OV_INSTALL_DIR }} | |
| - name: Build WWB Wheel | |
| run: python -m pip wheel -v --no-deps --wheel-dir ${{ env.WHEELS_DIR }} ${{ env.SRC_DIR }}/tools/who_what_benchmark | |
| working-directory: ${{ env.OV_INSTALL_DIR }} | |
| - name: Show ccache stats | |
| run: ccache --show-stats | |
| - name: Save ccache | |
| if: always() && steps.ccache-restore.outputs.cache-hit != 'true' && github.event_name == 'push' | |
| uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
| path: ${{ env.CCACHE_DIR }} | |
| - name: Upload wheels | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | |
| with: | |
| name: genai_wheels | |
| path: ${{ env.INSTALL_DIR }} | |
| if-no-files-found: 'error' | |
| genai_build_genai_wheel: | |
| name: Build GenAI Wheel - Python ${{ matrix.python-version }} | |
| needs: [ openvino_download ] | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ['3.10', '3.11', '3.12', '3.13'] | |
| defaults: | |
| run: | |
| shell: pwsh | |
| runs-on: aks-win-8-cores-16gb-build | |
| env: | |
| CMAKE_GENERATOR: Ninja | |
| OV_INSTALL_DIR: ${{ github.workspace }}\ov | |
| SRC_DIR: ${{ github.workspace }}\src | |
| BUILD_DIR: ${{ github.workspace }}\build | |
| INSTALL_DIR: ${{ github.workspace }}\genai | |
| WHEELS_DIR: ${{ github.workspace }}\genai\wheels | |
| CCACHE_DIR: ${{ github.workspace }}\ccache | |
| OpenVINODeveloperPackage_DIR: ${{ github.workspace }}\install\ov\developer_package\cmake | |
| steps: | |
| - name: Clone openvino.genai | |
| uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| submodules: recursive | |
| path: ${{ env.SRC_DIR }} | |
| - name: Setup Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: 'pip' | |
| - name: Download OpenVINO package | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| name: ${{ needs.openvino_download.outputs.ov_artifact_name }} | |
| path: ${{ env.OV_INSTALL_DIR }} | |
| merge-multiple: true | |
| - name: Download and install ninja | |
| run: | | |
| Invoke-WebRequest https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-win.zip -OutFile ninja-win.zip -MaximumRetryCount 10 | |
| Expand-Archive -Force ninja-win.zip | |
| # Add it to the GitHub Path so it would be available in the subsequent steps | |
| Add-Content -Path $env:GITHUB_PATH -Value "${{ github.workspace }}/ninja-win" | |
| - name: Download and install ccache | |
| run: | | |
| Invoke-WebRequest -Uri 'https://github.com/ccache/ccache/releases/download/v4.9.1/ccache-4.9.1-windows-x86_64.zip' -OutFile 'ccache.zip' | |
| Expand-Archive -Path 'ccache.zip' -DestinationPath 'C:\temp\ccache' | |
| Move-Item -Path 'C:\temp\ccache\*' -Destination 'C:\ccache' | |
| Add-Content -Path $env:GITHUB_PATH -Value "C:\ccache" | |
| - name: Setup ccache | |
| id: ccache-restore | |
| uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| key: ${{ runner.os }}-${{ runner.arch }}-ccache-${{ env.TARGET_BRANCH }}-Release-genai-wheel-${{ matrix.python-version }}-${{ github.sha }} | |
| restore-keys: | | |
| ${{ runner.os }}-${{ runner.arch }}-ccache-${{ env.TARGET_BRANCH }}-Release-genai-wheel-${{ matrix.python-version }} | |
| path: ${{ env.CCACHE_DIR }} | |
| - name: Set CI environment | |
| id: create_manifest | |
| uses: openvinotoolkit/openvino/.github/actions/create_manifest@master | |
| with: | |
| repos: ${{ env.SRC_DIR }} | |
| product_type: ${{ env.BASE_PRODUCT_TYPE }}_Release | |
| target_arch: 'x86_64' | |
| build_type: Release | |
| save_to: ${{ github.workspace }} | |
| - name: Clean ccache stats | |
| run: ccache --zero-stats --show-config | |
| - name: Configure Developer Command Prompt for Microsoft Visual C++ | |
| uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 | |
| with: | |
| toolset: 14.42 # v2022 | |
| - name: Build genai wheel | |
| run: | | |
| $pythonCommand = "py -${{ matrix.python-version }} -c `"import sys; print(f'{sys.executable}')`"" | |
| $pythonExecutablePath = & cmd /c $pythonCommand | |
| & $pythonExecutablePath -m pip wheel -v --no-deps --wheel-dir ${{ env.WHEELS_DIR }} ` | |
| --config-settings=override=cmake.generator='Ninja' ` | |
| --config-settings=override=cmake.build_path='${{ env.BUILD_DIR }}/genai' ` | |
| --config-settings='override=wheel.build_tag="${{ github.run_number }}"' ` | |
| ${{ needs.openvino_download.outputs.ov_wheel_source }} ` | |
| ${{ env.SRC_DIR }} | |
| working-directory: ${{ env.OV_INSTALL_DIR }} | |
| - name: Show ccache stats | |
| run: ccache --show-stats | |
| - name: Save ccache | |
| if: always() && steps.ccache-restore.outputs.cache-hit != 'true' && github.event_name == 'push' | |
| uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 | |
| with: | |
| key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
| path: ${{ env.CCACHE_DIR }} | |
| - name: Upload GenAI wheel | |
| if: ${{ always() }} | |
| uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | |
| with: | |
| name: genai_wheel_python_${{ matrix.python-version }} | |
| path: ${{ env.INSTALL_DIR }} | |
| if-no-files-found: 'error' | |
| store_artifacts: | |
| name: Store build artifacts | |
| strategy: | |
| matrix: | |
| build-type: [Release] | |
| needs: [openvino_download, genai_build_wheels, genai_build_genai_wheel, genai_build_cpack] | |
| timeout-minutes: 10 | |
| defaults: | |
| run: | |
| shell: bash | |
| runs-on: aks-linux-medium | |
| container: | |
| image: openvinogithubactions.azurecr.io/library/python:3.12-slim | |
| volumes: | |
| - /mount:/mount | |
| - ${{ github.workspace }}:${{ github.workspace }} | |
| env: | |
| WHEEL_PACKAGE: ${{ github.workspace }}/wheels | |
| MANIFEST_PATH: ${{ github.workspace }}/manifest.yml | |
| steps: | |
| - name: Download genai package | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| name: ${{ env.GENAI_ARCHIVE_ARTIFACT_BASE_NAME }}_${{ matrix.build-type }} | |
| path: ${{ github.workspace }} | |
| - name: Download manifest and wheels | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| pattern: '{genai_wheels,genai_wheel_python_*,manifest_${{ matrix.build-type }}}' | |
| path: ${{ github.workspace }} | |
| merge-multiple: true | |
| - name: Store ${{ matrix.build_type }} artifacts to a shared drive | |
| id: store_artifacts | |
| if: ${{ always() }} | |
| uses: openvinotoolkit/openvino/.github/actions/store_artifacts@master | |
| with: | |
| artifacts: | | |
| ${{ github.workspace }}/${{ env.GENAI_ARCHIVE_ARTIFACT_BASE_NAME }}.zip | |
| ${{ env.WHEEL_PACKAGE }} | |
| ${{ env.MANIFEST_PATH }} | |
| storage_dir: ${{ env.BASE_PRODUCT_TYPE }}_${{ matrix.build-type }} | |
| storage_root: ${{ env.ARTIFACTS_SHARE }} | |
| product_name: ${{ github.event.repository.name }} | |
| genai_build_samples: | |
| name: Build Samples - ${{ matrix.build-type }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build-type: [Release, Debug] | |
| needs: [ openvino_download, genai_build_cpack ] | |
| timeout-minutes: 70 | |
| defaults: | |
| run: | |
| shell: pwsh | |
| runs-on: aks-win-4-cores-8gb-build | |
| env: | |
| OV_INSTALL_DIR: ${{ github.workspace }}/install/ov | |
| SRC_DIR: ${{ github.workspace }}/src | |
| BUILD_DIR: ${{ github.workspace }}/build | |
| INSTALL_DIR: ${{ github.workspace }}/install/genai | |
| steps: | |
| - name: Clone openvino.genai | |
| uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| path: ${{ env.SRC_DIR }} | |
| - name: Download Build Artifacts | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| pattern: "{${{ needs.openvino_download.outputs.ov_artifact_name }},genai_cpack_${{ matrix.build-type }}}" | |
| path: ${{ env.OV_INSTALL_DIR }} | |
| merge-multiple: true | |
| - name: Extract Artifacts | |
| run: Expand-Archive -Path ${{ env.OV_INSTALL_DIR }}/${{ env.GENAI_ARCHIVE_ARTIFACT_BASE_NAME }}.zip -DestinationPath ${{ env.OV_INSTALL_DIR }} | |
| - name: Build Samples (Release) | |
| if: ${{ 'Release' == matrix.build-type }} | |
| run: | | |
| & ${{ env.OV_INSTALL_DIR }}/samples/cpp/build_samples.ps1 -i ${{ env.INSTALL_DIR }} | |
| & ${{ env.OV_INSTALL_DIR }}/samples/c/build_samples.ps1 -i ${{ env.INSTALL_DIR }} | |
| - name: Build Samples (Debug) | |
| if: ${{ 'Release' != matrix.build-type }} | |
| run: | | |
| . "${{ env.OV_INSTALL_DIR }}/setupvars.ps1" | |
| cmake -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -S ${{ env.OV_INSTALL_DIR }}/samples/cpp -B ${{ env.BUILD_DIR }} | |
| cmake --build ${{ env.BUILD_DIR }} --config ${{ matrix.build-type }} --parallel $ENV:NUMBER_OF_PROCESSORS | |
| cmake --install ${{ env.BUILD_DIR }} --config ${{ matrix.build-type }} --component samples_bin --prefix ${{ env.INSTALL_DIR }} | |
| - name: Upload Samples Build Package | |
| if: always() | |
| uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | |
| with: | |
| name: genai_samples_${{ matrix.build-type }} | |
| path: ${{ env.INSTALL_DIR }} | |
| if-no-files-found: 'error' | |
| genai_build_nodejs: | |
| name: Build Node.js bindings | |
| needs: [ openvino_download ] | |
| timeout-minutes: 90 | |
| defaults: | |
| run: | |
| shell: pwsh | |
| runs-on: aks-win-4-cores-8gb-build | |
| env: | |
| OV_INSTALL_DIR: ${{ github.workspace }}/ov | |
| SRC_DIR: ${{ github.workspace }}/openvino.genai | |
| INSTALL_DIR: ${{ github.workspace }}/openvino.genai/src/js/bin | |
| BUILD_DIR: ${{ github.workspace }}/build | |
| steps: | |
| - name: Clone openvino.genai | |
| uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| submodules: recursive | |
| path: ${{ env.SRC_DIR }} | |
| - name: Download OpenVINO package | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| name: ${{ needs.openvino_download.outputs.ov_artifact_name }} | |
| path: ${{ env.OV_INSTALL_DIR }} | |
| merge-multiple: true | |
| - name: Setup Python ${{ env.PYTHON_VERSION }} | |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| cache: 'pip' | |
| - name: Build GenAI Node.js bindings | |
| run: | | |
| . "${{ env.OV_INSTALL_DIR }}/setupvars.ps1" | |
| cmake -DCMAKE_BUILD_TYPE=Release ` | |
| -DENABLE_JS=ON -DCPACK_GENERATOR=NPM ` | |
| -DENABLE_PYTHON=OFF -DENABLE_WHEEL=OFF ` | |
| -S ${{ env.SRC_DIR }} -B ${{ env.BUILD_DIR }} | |
| cmake --build ${{ env.BUILD_DIR }} --config Release --parallel --verbose | |
| cmake --install ${{ env.BUILD_DIR }} --config Release --prefix ${{ env.INSTALL_DIR }} | |
| - name: Upload Node.js bindings Build Package | |
| if: always() | |
| uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | |
| with: | |
| name: genai_nodejs_bindings | |
| path: ${{ env.INSTALL_DIR }} | |
| if-no-files-found: 'error' | |
| genai_tests_wheel: | |
| name: Python (${{ matrix.test.name}}) Tests (wheel) | |
| needs: [ smart_ci, openvino_download, genai_build_wheels, genai_build_genai_wheel ] | |
| timeout-minutes: ${{ matrix.test.timeout }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| test: | |
| - name: 'Whisper' | |
| # TODO: skip some tests temporary untill https://github.com/huggingface/datasets/issues/7647 dataset is fixed | |
| cmd: 'python -m pytest -s -v tests/python_tests/test_whisper_pipeline.py tests/python_tests/test_whisper_pipeline_static.py -k "not test_smoke[sample_from_dataset0 and not test_whisper_constructors[sample_from_dataset0 and not test_max_new_tokens[sample_from_dataset0 and not test_language_mode[language and not test_task_mode[sample_from_dataset0 and not test_language_autodetect[sample_from_dataset0 and not test_whisper_config_constructor and not test_language_autodetect[sample_from_dataset1 and not test_language_autodetect[sample_from_dataset2 and not test_initial_prompt_hotwords[sample_from_dataset0 and not test_random_sampling[sample_from_dataset0"' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).whisper.test }} | |
| timeout: 120 | |
| - name: 'Cacheopt E2E (Part 1)' | |
| cmd: 'python -m pytest -s -v tests/python_tests/test_kv_cache_eviction/test_kv_cache_eviction_1.py' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).continuous_batching.test }} | |
| timeout: 180 | |
| - name: 'Cacheopt E2E (Part 2)' | |
| cmd: 'python -m pytest -s -v tests/python_tests/test_kv_cache_eviction/test_kv_cache_eviction_2.py' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).continuous_batching.test }} | |
| timeout: 360 | |
| - name: 'LLM & VLM' | |
| cmd: 'python -m pytest -s -v tests/python_tests/test_llm_pipeline.py tests/python_tests/test_llm_pipeline_static.py tests/python_tests/test_vlm_pipeline.py tests/python_tests/test_structured_output.py tests/python_tests/test_image_generation.py tests/python_tests/test_image_generation_multi_call.py --override-ini cache_dir=/mount/caches/pytest/' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).visual_language.test || fromJSON(needs.smart_ci.outputs.affected_components).LLM.test || fromJSON(needs.smart_ci.outputs.affected_components).Image_generation.test }} | |
| timeout: 180 | |
| - name: 'Video Generation' | |
| cmd: 'python -m pytest -s -v tests/python_tests/test_video_generation.py --override-ini cache_dir=/mount/caches/pytest/' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).video_generation.test }} | |
| timeout: 60 | |
| - name: 'GGUF Reader tests' | |
| cmd: 'python -m pytest -s -v tests/python_tests/test_gguf_reader.py' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).GGUF.test || fromJSON(needs.smart_ci.outputs.affected_components).LLM.test }} | |
| timeout: 360 | |
| - name: 'Tokenizer tests' | |
| cmd: 'python -m pytest -s -v tests/python_tests/test_tokenizer.py' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).tokenizers.test }} | |
| timeout: 60 | |
| - name: 'API tests' | |
| cmd: 'python -m pytest -s -v tests/python_tests/test_continuous_batching.py -k "not eagle3" tests/python_tests/test_generation_config.py tests/python_tests/test_sampling.py tests/python_tests/test_text_streamer.py' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).continuous_batching.test || fromJSON(needs.smart_ci.outputs.affected_components).sampling.test || fromJSON(needs.smart_ci.outputs.affected_components).text_streamer.test }} | |
| timeout: 60 | |
| - name: 'Rag tests' | |
| cmd: 'python -m pytest -s -v tests/python_tests/test_rag.py' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).RAG.test }} | |
| timeout: 30 | |
| - name: 'WWB tests' | |
| cmd: 'python -m pytest -s -v tools/who_what_benchmark/tests -m "not nanollava"' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).WWB.test }} | |
| timeout: 120 | |
| - name: 'EAGLE3 speculative decoding tests' | |
| cmd: | | |
| python -m pytest -v ./tests/python_tests/test_continuous_batching.py -k "eagle3" | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).speculative_decoding.test }} | |
| timeout: 90 | |
| - name: 'WWB tests (nanollava)' | |
| cmd: | | |
| python -m pip install transformers==4.48.0 diffusers==0.35.2 | |
| python -m pytest -v ./tools/who_what_benchmark/tests -m nanollava | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).WWB.test }} | |
| timeout: 90 | |
| - name: 'VLM (MiniCPM-o-2_6)' | |
| cmd: | | |
| python -m pip install transformers==4.51.3 | |
| python -m pytest -s -v tests/python_tests/test_vlm_pipeline.py --override-ini cache_dir=/mount/caches/pytest/ -k "MiniCPM-o-2_6" | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).visual_language.test }} | |
| timeout: 60 | |
| - name: 'VLM (qwen3-vl)' | |
| cmd: | | |
| python -m pip install transformers==4.57.0 git+https://github.com/huggingface/optimum-intel.git@0566b76f094d4c3084e06d29a248b39a1bff3fa4 | |
| python -m pytest -s -v tests/python_tests/test_vlm_pipeline.py --override-ini cache_dir=/mount/caches/pytest/ -k "qwen3-vl" | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).visual_language.test }} | |
| timeout: 60 | |
| defaults: | |
| run: | |
| shell: pwsh | |
| runs-on: aks-win-16-cores-32gb-test | |
| env: | |
| INSTALL_DIR: ${{ github.workspace }}/install | |
| SRC_DIR: ${{ github.workspace }}/src | |
| BUILD_DIR: ${{ github.workspace }}/build | |
| steps: | |
| - name: Clone openvino.genai | |
| if: ${{ matrix.test.run_condition }} | |
| uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| path: ${{ env.SRC_DIR }} | |
| submodules: recursive | |
| - name: Download Build Artifacts | |
| if: ${{ matrix.test.run_condition }} | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| pattern: "{${{ needs.openvino_download.outputs.ov_artifact_name }},genai_wheels,genai_wheel_python_*}" | |
| path: ${{ env.INSTALL_DIR }} | |
| merge-multiple: true | |
| - name: Setup Python ${{ env.PYTHON_VERSION }} | |
| if: ${{ matrix.test.run_condition }} | |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| cache: 'pip' | |
| - name: Install GenAI Wheels | |
| if: ${{ matrix.test.run_condition }} | |
| uses: ./src/.github/actions/install_wheel | |
| with: | |
| packages: "openvino;openvino_tokenizers[transformers];openvino_genai;whowhatbench" | |
| requirements_files: "${{ env.SRC_DIR }}/tests/python_tests/requirements.txt" | |
| local_wheel_dir: ${{ env.INSTALL_DIR }}/wheels | |
| - name: Tests | |
| if: ${{ matrix.test.run_condition }} | |
| run: ${{ matrix.test.cmd }} | |
| working-directory: ${{ env.SRC_DIR }} | |
| genai_samples_tests: | |
| name: Samples ${{ matrix.test.name }} (${{ matrix.build-type }}) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build-type: [Release] | |
| test: | |
| - name: 'LLM' | |
| marker: 'llm' | |
| cmd: 'tests/python_tests/samples' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).LLM_samples.test }} | |
| runner: 'aks-win-16-cores-32gb-test' | |
| - name: 'Whisper' | |
| marker: 'whisper' | |
| cmd: 'tests/python_tests/samples' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).Whisper_samples.test }} | |
| runner: 'aks-win-4-cores-8gb-test' | |
| - name: 'dreamlike_anime_1_0' | |
| marker: 'dreamlike_anime_1_0' | |
| cmd: 'tests/python_tests/samples' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).Image_generation_samples.test }} | |
| runner: 'aks-win-8-cores-32gb-test' | |
| - name: 'LCM_Dreamshaper_v7_int8_ov' | |
| marker: 'LCM_Dreamshaper_v7_int8_ov' | |
| cmd: 'tests/python_tests/samples' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).Image_generation_samples.test }} | |
| runner: 'aks-win-8-cores-16gb-test' | |
| - name: 'Rag' | |
| marker: 'rag' | |
| cmd: 'tests/python_tests/samples' | |
| runner: 'aks-win-4-cores-8gb-test' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).RAG_samples.test }} | |
| - name: 'Speech generation' | |
| marker: 'speech_generation' | |
| cmd: 'tests/python_tests/samples' | |
| runner: 'aks-win-4-cores-8gb-test' | |
| run_condition: ${{ fromJSON(needs.smart_ci.outputs.affected_components).Speech_generation_samples.test }} | |
| needs: [ smart_ci, openvino_download, genai_build_cpack, genai_build_wheels, genai_build_genai_wheel, genai_build_samples, genai_build_nodejs ] | |
| timeout-minutes: 120 | |
| defaults: | |
| run: | |
| shell: pwsh | |
| runs-on: ${{ matrix.test.runner }} | |
| env: | |
| INSTALL_DIR: ${{ github.workspace }}/install | |
| SRC_DIR: ${{ github.workspace }}/src | |
| BUILD_DIR: ${{ github.workspace }}/build | |
| # The debug logging includes messages about the time it takes to read the GGUF model. | |
| # These messages differ from run to run, so we cannot compare the results of the CPP, Python, and JavaScript parts. | |
| OPENVINO_LOG_LEVEL: 1 | |
| steps: | |
| - name: Clone openvino.genai | |
| if: ${{ matrix.test.run_condition }} | |
| uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| path: ${{ env.SRC_DIR }} | |
| - name: Download Build Artifacts | |
| if: ${{ matrix.test.run_condition }} | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| pattern: "{${{ needs.openvino_download.outputs.ov_artifact_name }},genai_cpack_${{ matrix.build-type }},genai_samples_${{ matrix.build-type }},genai_wheels,genai_wheel_python_*}" | |
| path: ${{ env.INSTALL_DIR }} | |
| merge-multiple: true | |
| - name: Extract Artifacts | |
| if: ${{ matrix.test.run_condition }} | |
| run: Expand-Archive -Path ${{ env.INSTALL_DIR }}/${{ env.GENAI_ARCHIVE_ARTIFACT_BASE_NAME }}.zip -DestinationPath ${{ env.INSTALL_DIR }} | |
| - name: Download GenAI JS Bildings Artifacts | |
| if: ${{ matrix.test.run_condition }} | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| name: genai_nodejs_bindings | |
| path: ${{ env.SRC_DIR }}/src/js/bin | |
| merge-multiple: true | |
| - name: Setup Python ${{ env.PYTHON_VERSION }} | |
| if: ${{ matrix.test.run_condition }} | |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| cache: 'pip' | |
| - name: Install GenAI wheels | |
| if: ${{ matrix.test.run_condition }} | |
| uses: ./src/.github/actions/install_wheel | |
| with: | |
| packages: "openvino;openvino_tokenizers[transformers];openvino_genai[testing]" | |
| requirements_files: "${{ env.SRC_DIR }}/samples/requirements.txt" | |
| local_wheel_dir: ${{ env.INSTALL_DIR }}/wheels | |
| - name: Setup NodeJS | |
| if: ${{ matrix.test.run_condition }} | |
| uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 | |
| with: | |
| node-version: 21 | |
| - name: Install GenAI NPM package | |
| if: ${{ matrix.test.run_condition }} | |
| working-directory: ${{ env.SRC_DIR }}/src/js | |
| run: | | |
| npm install $(Resolve-Path -Path "${{ env.INSTALL_DIR }}/openvino_node_npm_package/openvino-node-*") --ignore-scripts | |
| Copy-Item -Recurse ${{ env.INSTALL_DIR }}/openvino_node_npm_package/bin node_modules/openvino-node/bin | |
| npm install --verbose | |
| - name: Install NPM dependencies for samples | |
| if: ${{ matrix.test.run_condition }} | |
| working-directory: ${{ env.SRC_DIR }}/samples/js/text_generation | |
| run: | | |
| npm install ${{ env.SRC_DIR }}/src/js | |
| npm install --verbose | |
| - name: Test Samples (Python and C++) | |
| if: ${{ matrix.test.run_condition }} | |
| run: python -m pytest -vs ${{ env.SRC_DIR }}/${{ matrix.test.cmd }} -m "${{ matrix.test.marker }}" | |
| env: | |
| PATH: "${{ env.INSTALL_DIR }}/runtime/bin/intel64/${{ matrix.build-type }};${{ env.INSTALL_DIR }}/runtime/3rdparty/tbb/bin;%PATH%" # Required for C++ samples | |
| SAMPLES_PY_DIR: "${{ env.INSTALL_DIR }}/samples/python" | |
| SAMPLES_JS_DIR: "${{ env.SRC_DIR }}/samples/js" | |
| SAMPLES_CPP_DIR: "${{ env.INSTALL_DIR }}/samples_bin" | |
| SAMPLES_C_DIR: "${{ env.INSTALL_DIR }}/samples_bin" | |
| genai_tools_tests: | |
| name: Tools tests (${{ matrix.build-type }}) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| build-type: [Release] | |
| needs: [ smart_ci, openvino_download, genai_build_cpack, genai_build_wheels, genai_build_genai_wheel ] | |
| if: ${{ fromJSON(needs.smart_ci.outputs.affected_components).continuous_batching }} | |
| timeout-minutes: 90 | |
| defaults: | |
| run: | |
| shell: pwsh | |
| runs-on: aks-win-8-cores-16gb-test | |
| env: | |
| INSTALL_DIR: ${{ github.workspace }}/install | |
| SRC_DIR: ${{ github.workspace }}/src | |
| BUILD_DIR: ${{ github.workspace }}/build | |
| steps: | |
| - name: Clone openvino.genai | |
| uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| path: ${{ env.SRC_DIR }} | |
| - name: Download Build Artifacts | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| pattern: "{${{ needs.openvino_download.outputs.ov_artifact_name }},genai_cpack_${{ matrix.build-type }},genai_tools_${{ matrix.build-type }},genai_tests_${{ matrix.build-type }},genai_wheels,genai_wheel_python_*}" | |
| path: ${{ env.INSTALL_DIR }} | |
| merge-multiple: true | |
| - name: Extract Artifacts | |
| run: Expand-Archive -Path ${{ env.INSTALL_DIR }}/${{ env.GENAI_ARCHIVE_ARTIFACT_BASE_NAME }}.zip -DestinationPath ${{ env.INSTALL_DIR }} | |
| - name: Setup Python ${{ env.PYTHON_VERSION }} | |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| cache: 'pip' | |
| - name: Install GenAI wheels | |
| uses: ./src/.github/actions/install_wheel | |
| with: | |
| packages: "openvino;openvino_tokenizers[transformers];openvino_genai[testing]" | |
| requirements_files: "${{ env.SRC_DIR }}/samples/requirements.txt" | |
| local_wheel_dir: ${{ env.INSTALL_DIR }}/wheels | |
| - name: gtests unit tests | |
| run: | | |
| . "${{ env.INSTALL_DIR }}/setupvars.ps1" | |
| & "${{ env.INSTALL_DIR }}/tests/tests_continuous_batching.exe" --gtest_filter="-AddSecondInputTest.*" | |
| - name: Test C++ Tools | |
| run: | | |
| . "${{ env.INSTALL_DIR }}/setupvars.ps1" | |
| python -m pytest -vs ${{ env.SRC_DIR }}/tests/python_tests/samples/test_continuous_batching_tools.py -m "samples" | |
| env: | |
| SAMPLES_CPP_DIR: "${{ env.INSTALL_DIR }}/samples_bin" | |
| genai_nodejs_tests: | |
| name: Node.js bindings tests | |
| needs: [ smart_ci, openvino_download, genai_build_wheels, genai_build_genai_wheel, genai_build_nodejs ] | |
| if: ${{ fromJSON(needs.smart_ci.outputs.affected_components).JS_API }} | |
| timeout-minutes: 20 | |
| defaults: | |
| run: | |
| shell: pwsh | |
| runs-on: windows-2022 | |
| env: | |
| SRC_DIR: ${{ github.workspace }}/openvino.genai | |
| INSTALL_DIR: ${{ github.workspace }}/install | |
| NODE_VERSION: 21 | |
| steps: | |
| - name: Clone openvino.genai | |
| uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 | |
| with: | |
| path: ${{ env.SRC_DIR }} | |
| submodules: recursive | |
| - name: Download build artifacts (OpenVINO + wheels) | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| pattern: "{${{ needs.openvino_download.outputs.ov_artifact_name }},genai_wheels,genai_wheel_python_*}" | |
| path: ${{ env.INSTALL_DIR }} | |
| merge-multiple: true | |
| - name: Download GenAI JS Bildings Artifacts | |
| uses: akashchi/download-artifact@d59a9c15fec3fdb7c9adf09464124d00f9c11415 | |
| with: | |
| name: genai_nodejs_bindings | |
| path: ${{ env.SRC_DIR }}/src/js/bin | |
| merge-multiple: true | |
| - name: Setup Node ${{ env.NODE_VERSION }} | |
| uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| - name: Setup Python | |
| uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 | |
| with: | |
| python-version: '3.11' | |
| cache: 'pip' | |
| # JS pacakges uses the OpenVINO and OpenVINO GenAI libraries from the bin directory. | |
| # Here we emulate the installation of the openvino-node package from NPM. The latest | |
| # release of the openvino-node package is installed, and we need to update the binaries | |
| # in the node_modules/openvino-node/bin directory to work correctly with GenAI | |
| - name: Install npm package tests dependencies | |
| working-directory: ${{ env.SRC_DIR }}/src/js | |
| run: | | |
| npm install $(Resolve-Path -Path "${{ env.INSTALL_DIR }}/openvino_node_npm_package/openvino-node-*") --ignore-scripts | |
| Copy-Item -Recurse ${{ env.INSTALL_DIR }}/openvino_node_npm_package/bin node_modules/openvino-node/bin | |
| npm install --verbose | |
| - name: Install OpenVINO GenAI Python packages (from wheels) | |
| uses: ./openvino.genai/.github/actions/install_wheel | |
| with: | |
| packages: "openvino;openvino_tokenizers[transformers];openvino_genai" | |
| requirements_files: "${{ env.SRC_DIR }}/tests/python_tests/requirements.txt" | |
| local_wheel_dir: ${{ env.INSTALL_DIR }}/wheels | |
| - name: Run npm package tests | |
| working-directory: ${{ env.SRC_DIR }}/src/js | |
| run: npm test | |
| Overall_Status: | |
| name: ci/gha_overall_status_windows | |
| needs: [smart_ci, openvino_download, genai_build_cpack, genai_build_wheels, genai_build_genai_wheel, genai_build_samples, genai_tests_wheel, genai_tools_tests, genai_samples_tests, genai_build_nodejs, genai_nodejs_tests] | |
| 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 |