RISC-V: combine nightly builds into single job #173
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: OCV Nightly RISC-V | |
on: | |
pull_request: | |
branches: | |
- main | |
paths: | |
- '.github/workflows/OCV-Nightly-RISCV.yaml' | |
workflow_dispatch: | |
schedule: | |
- cron: '0 0 * * 6' | |
concurrency: | |
group: OCV-Nightly-RISCV-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
SRC_OPENCV: '/home/ci/opencv' | |
SRC_OPENCV_CONTRIB: '/home/ci/opencv_contrib' | |
SRC_OPENCV_EXTRA: '/home/ci/opencv_extra' | |
BUILD_DIR: '/home/ci/build' | |
CCACHE_DIR: '/home/ci/.ccache' | |
GIT_CACHE_DOCKER: '/home/ci/git_cache' | |
OPENCV_DOWNLOAD_PATH: '/home/ci/binaries_cache' | |
OPENCV_TEST_DATA_PATH: '/home/ci/opencv_extra/testdata' | |
jobs: | |
RISC-V: | |
runs-on: opencv-ru-lin-riscv | |
concurrency: | |
group: OCV-Nightly-RISCV-${{ matrix.version }}-${{ matrix.remote && matrix.host || 'local' }} | |
cancel-in-progress: false | |
strategy: | |
fail-fast: false | |
max-parallel: 3 | |
matrix: | |
version: | |
- '071' | |
- 'main' | |
- 'nds' | |
- 'sc' | |
branch: ['4.x', '5.x'] | |
include: | |
- version: '071' | |
image: '20240117' | |
remote: true | |
host: 'lichee1' | |
- version: 'main' | |
image: '20240709' | |
remote: true | |
host: 'canmv1' | |
- version: 'nds' | |
image: '20240709' | |
- version: 'sc' | |
image: '20250216' | |
defaults: | |
run: | |
shell: bash | |
container: | |
image: 'quay.io/opencv-ci/opencv-ubuntu-22.04-riscv-${{ matrix.version }}:${{ matrix.image }}' | |
volumes: | |
- /mnt/cache/git_cache:/opt/git_cache | |
- /mnt/cache/ci_cache/opencv:/opt/.ccache | |
- /mnt/cache/binaries_cache:/opt/binaries_cache | |
- /home/build/.ssh:/root/.ssh | |
options: '--user root:root' | |
env: | |
CCACHE_DIR: '/opt/.ccache' | |
CCACHE_MAXSIZE: '3G' | |
OPENCV_DOWNLOAD_PATH: '/opt/binaries_cache' | |
CMAKE_OPT: >- | |
-DBUILD_EXAMPLES=ON | |
-DOPENCV_ENABLE_NONFREE=ON | |
-DBUILD_SHARED_LIBS=OFF | |
-DWITH_OPENCL=OFF | |
${{ matrix.version == '071' && '-DCMAKE_TOOLCHAIN_FILE=${HOME}/opencv/platforms/linux/riscv64-071-gcc.toolchain.cmake -DCORE=C910V' || '' }} | |
${{ matrix.version == 'main' && '-DCMAKE_TOOLCHAIN_FILE=${HOME}/opencv/platforms/linux/riscv64-clang.toolchain.cmake -DCPU_BASELINE=RVV -DCPU_BASELINE_REQUIRE=RVV -DRISCV_RVV_SCALABLE=ON' || '' }} | |
${{ matrix.version == 'nds' && '-DCMAKE_TOOLCHAIN_FILE=${HOME}/opencv/platforms/linux/riscv64-andes-gcc.toolchain.cmake -DRISCV_GCC_INSTALL_ROOT=/opt/andes -DWITH_NDSRVP=ON' || '' }} | |
${{ matrix.version == 'sc' && '-DCMAKE_TOOLCHAIN_FILE=${HOME}/opencv/platforms/linux/riscv64-clang.toolchain.cmake -DRISCV_CLANG_BUILD_ROOT=/opt/sc-dt/llvm -DRISCV_GCC_INSTALL_ROOT=/opt/sc-dt/riscv-gcc -DCPU_BASELINE=RVV -DCPU_BASELINE_REQUIRE=RVV -DRISCV_RVV_SCALABLE=ON' || '' }} | |
HOME: '/home/ci' | |
OPENCV_FOR_THREADS_NUM: 10 | |
CMAKE_BUILD_PARALLEL_LEVEL: 20 | |
REMOTE_HOST: ${{ matrix.host }} | |
REMOTE_BIN: './bin' | |
REMOTE_DATA: './testdata' | |
steps: | |
- name: Checkout workflow repository | |
uses: actions/checkout@v4 | |
with: | |
repository: opencv/ci-gha-workflow | |
ref: "${{ github.repository == 'opencv/ci-gha-workflow' && github.ref || 'main' }}" | |
- name: Checkout and merge OpenCV | |
uses: ./checkout-and-merge | |
with: | |
target_branch: "${{ matrix.branch }}" | |
author: '' | |
source_branch: '' | |
gitcache: '/opt/git_cache' | |
home: '${{ env.HOME }}' | |
workdir: '${{ env.HOME }}' | |
- name: Configure and build OpenCV with contrib | |
uses: ./configure-and-build | |
with: | |
workdir: '${{ env.HOME }}' | |
builddir: 'build' | |
generator: 'Ninja' | |
options: '-DOPENCV_EXTRA_MODULES_PATH=opencv_contrib/modules ${{ env.CMAKE_OPT }}' | |
- if: ${{ matrix.remote }} | |
name: Deploy to remote host | |
timeout-minutes: 10 | |
id: deploy | |
run: | | |
rsync -az --stats ${{ env.HOME }}/build/bin/ ${REMOTE_HOST}:${REMOTE_BIN} --delete | |
rsync -az --stats ${{ env.HOME }}/opencv_extra/testdata/ ${REMOTE_HOST}:${REMOTE_DATA} --delete | |
- 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 | |
with: | |
workdir: "${{ matrix.remote && '' || env.HOME }}" | |
builddir: "${{ matrix.remote && '' || 'build' }}" | |
plan: "test-plan-riscv-${{ matrix.branch }}.json" | |
suite: "[ 'default' ]" | |
filter: "[ '${{ matrix.version }}' ]" | |
options: "${{ matrix.version }}" | |
enable_python: "false" | |
enable_java: "false" | |
suffix: '${{ matrix.version }}_${{ matrix.branch }}' | |
- if: ${{ always() && env.WARNINGS == '1' }} | |
name: Warnings check | |
run: | | |
echo "::error Warnings have been found!" | |
exit 1 |