Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
206 changes: 206 additions & 0 deletions .github/workflows/OCV-PR-Linux-ORT.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
name: OCV PR Linux ORT

on:
pull_request:
branches:
- main
paths:
- '.github/workflows/OCV-PR-Linux-ORT.yaml'
# TODO: are following paths necessary?
# - 'checkout-and-merge/*'
# - 'configure-and-build/*'
# - 'run-tests/*'
# - 'scripts/runner.py'
# - 'scripts/test-plan.json'
workflow_call:
inputs:
workflow_branch:
description: "Branch for ci-gha-workflow repository"
default: "main"
required: false
type: string

concurrency:
group: OCV-PR-Linux-ORT-${{ github.ref }}
cancel-in-progress: true

jobs:

branch_eval:
runs-on: ubuntu-24.04
outputs:
branches: ${{ steps.determine-branches.outputs.branches }}
steps:
- id: determine-branches
shell: bash
run: |
# Industry Standard: Explicitly allow 5.x only.
# Logic: If repo is ci-gha-workflow OR the target PR branch is 5.x
if [[ "${{ github.event.repository.name }}" == "ci-gha-workflow" || "${{ github.base_ref }}" == "5.x" ]]; then
echo "branches=['5.x']" >> "$GITHUB_OUTPUT"
else
echo "branches=[]" >> "$GITHUB_OUTPUT"
fi

Ubuntu:
# runs-on: opencv-ru-lin-riscv
runs-on: opencv-cn-lin-x86-64
needs:
- branch_eval
if: ${{ needs.branch_eval.outputs.branches != '[]' }}
strategy:
# NOTE: Debugging
# fail-fast: true
# max-parallel: 3
fail-fast: false
max-parallel: 3
matrix:
version:
- '24.04'
- '22.04'
- '20.04'
Comment thread
abhishek-gola marked this conversation as resolved.
Outdated
# TODO: enable later
# - '24.04_asan'
branch: ${{ fromJSON(needs.branch_eval.outputs.branches )}}
include:
- version: '24.04'
image: '24.04:20251127'
jpegxl: true
avif: true
avx2: true
gphoto2: true
aravis: true
# TODO: enable later
# - version: '24.04_asan'
# image: '24.04:20250505'
# asan: true
# jpegxl: true
# avif: true
- version: '22.04'
image: '22.04:20251015'
avif: true
plugins: true
- version: '20.04'
image: '20.04:20251015'
limited_api: true
defaults:
run:
shell: bash
container:
image: 'quay.io/opencv-ci/opencv-ubuntu-${{ matrix.image }}'
volumes:
# NOTE: RU config
# - /mnt/cache/git_cache:/opt/git_cache
# - /mnt/cache/ci_cache/opencv:/opt/.ccache
# - /mnt/cache/binaries_cache:/opt/binaries_cache
# - vol_dnn_models:/opt/dnn-models
# NOTE: CN config
- /home/opencv-cn/git_cache:/opt/git_cache
- /home/opencv-cn/ci_cache/opencv/${{ matrix.version }}:/opt/.ccache
- /home/opencv-cn/binaries_cache/${{ matrix.version }}:/opt/binaries_cache
- /home/opencv-cn/dnn-models:/opt/dnn-models
# NOTE: RU config
# options: '--user root:root'
env:
ANT_HOME: '/usr/share/ant'
DNN_MODELS: '/opt/dnn-models'
CCACHE_DIR: '/opt/.ccache'
CCACHE_MAXSIZE: '8G'
OPENCV_DOWNLOAD_PATH: '/opt/binaries_cache'
CMAKE_OPT: >-
-DBUILD_DOCS=ON
-DBUILD_EXAMPLES=ON
Comment thread
asmorkalov marked this conversation as resolved.
Outdated
-DOPENCV_ENABLE_NONFREE=ON
Comment thread
asmorkalov marked this conversation as resolved.
Outdated
-DWITH_IMGCODEC_GIF=ON
Comment thread
asmorkalov marked this conversation as resolved.
Outdated
-DWITH_ONNXRUNTIME=ON
${{ matrix.jpegxl && '-DWITH_JPEGXL=ON' }}
${{ matrix.avif && '-DWITH_AVIF=ON' }}
${{ matrix.gphoto2 && '-DWITH_GPHOTO2=ON' }}
${{ matrix.aravis && '-DWITH_ARAVIS=ON' }}
${{ matrix.avx2 && '-DCPU_BASELINE=AVX2'}}
${{ matrix.plugins && '-DVIDEOIO_PLUGIN_LIST=all -DHIGHGUI_PLUGIN_LIST=all' }}
${{ matrix.limited_api && '-DPYTHON3_LIMITED_API=ON' }}
Comment thread
asmorkalov marked this conversation as resolved.
Outdated
${{ matrix.asan && '-DENABLE_OMIT_FRAME_POINTER=OFF -DCMAKE_CXX_FLAGS="-fsanitize=address"' }}
HOME: ${{ contains(matrix.image, '24.04') && '/home/ubuntu' || '/home/ci' }}
MAIN_BUILD_DIR: "${{ (github.event.repository.name != 'opencv_contrib') && 'build' || 'build-contrib' }}"
# NOTE: CN config
OPENCV_FOR_THREADS_NUM: 8
CMAKE_BUILD_PARALLEL_LEVEL: 8
# NOTE: RU config
# OPENCV_FOR_THREADS_NUM: 10
# CMAKE_BUILD_PARALLEL_LEVEL: 20

# ==========

steps:

- name: Checkout workflow repository
uses: actions/checkout@v4
with:
repository: opencv/ci-gha-workflow
ref: "${{ github.repository == 'opencv/ci-gha-workflow' && github.ref || inputs.workflow_branch }}"

- name: Checkout and merge OpenCV
uses: ./checkout-and-merge
with:
target_branch: "${{ matrix.branch }}"
author: "${{ github.event.pull_request.user.login }}"
source_branch: "${{ github.event.repository.name == 'ci-gha-workflow' && '' || github.head_ref }}"
gitcache: '/opt/git_cache'
home: '${{ env.HOME }}'
workdir: '${{ env.HOME }}'

- name: Update extra dnn models
timeout-minutes: 60
working-directory: '${{ env.HOME }}'
run: |
ls -lR ${{ env.DNN_MODELS }}
python3 opencv_extra/testdata/dnn/download_models.py \
--cleanup \
--dst '${{ env.DNN_MODELS }}/dnn'
echo "OPENCV_DNN_TEST_DATA_PATH=${{ env.DNN_MODELS }}" >> $GITHUB_ENV

- if: ${{ github.event.repository.name != 'opencv_contrib' }}
name: Configure and build OpenCV
uses: ./configure-and-build
with:
workdir: '${{ env.HOME }}'
builddir: 'build'
generator: 'Ninja'
options: '${{ env.CMAKE_OPT }}'

- name: Configure and build OpenCV with contrib
uses: ./configure-and-build
with:
workdir: '${{ env.HOME }}'
builddir: 'build-contrib'
generator: 'Ninja'
options: '-DOPENCV_EXTRA_MODULES_PATH=opencv_contrib/modules ${{ env.CMAKE_OPT }}'
Comment thread
abhishek-gola marked this conversation as resolved.
Outdated

- name: Run OpenCV tests
uses: ./run-tests
env:
OPENCV_TEST_DATA_PATH: '${{ env.HOME }}/opencv_extra/testdata'
OPENCV_TEST_REQUIRE_DATA: 1
OPENCV_TEST_CHECK_OPTIONAL_DATA: 1
PYTHONPATH: '${{ env.HOME }}/${{ env.MAIN_BUILD_DIR }}/python_loader:$PYTHONPATH'
# TODO: enable later
# ASAN_OPTIONS: 'detect_leaks=0'
with:
workdir: '${{ env.HOME }}'
builddir: '${{ env.MAIN_BUILD_DIR }}'
logdir: '${{ env.HOME }}/${{ env.MAIN_BUILD_DIR }}'
plan: "test-plan-${{ matrix.branch }}-ort.json"
# NOTE: Just keeping this construction here for possible future use:
# ${{ (github.event.repository.name == 'opencv_contrib') && format('''linux-contrib-{0}''', matrix.branch) || '' }}
suite: "[ ${{ (github.event.repository.name == 'opencv_contrib') && '''linux-contrib''' || '''linux''' }} ]"
filter: "[ 'ubuntu-common', ${{ matrix.avx2 && '''ubuntu-avx2''' }} ]"
enable_python: "true"
enable_java: "true"
suffix: '${{ matrix.version }}_${{ matrix.branch }}'

- if: ${{ always() && env.WARNINGS == '1' }}
name: Warnings check
run: |
echo "::error Warnings have been found!"
exit 1
24 changes: 24 additions & 0 deletions scripts/test-plan-5.x-ort.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"suites": {
"linux": [
"opencv_test_dnn"
],
"linux-contrib": []
},
"filters": {
"ubuntu-common": {},
"ubuntu-avx2": {}
},
"options": {
"default": {
"args": {
"test": "--skip_unstable=1 --gtest_filter=*ORT*"
Comment thread
abhishek-gola marked this conversation as resolved.
Outdated
},
"env": {
"opencv_test_dnn": {
"OPENCV_FORCE_DNN_ENGINE": "4"
}
}
}
}
}
Loading