name: PR:4.x U20 on: pull_request: branches: - 4.x env: EXTRA_CMAKE_OPTIONS: '-DBUILD_DOCS=ON -DPYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 -DBUILD_EXAMPLES=ON -DOPENCV_ENABLE_NONFREE=ON -DENABLE_CCACHE=OFF' OPENCV_TEST_DATA_PATH: '/opencv_extra/testdata' OPENCV_DOCKER_WORKDIR: '/__w/opencv/opencv' PR_AUTHOR: ${{ github.event.pull_request.user.login }} PR_AUTHOR_FORK: ${{ github.event.pull_request.head.repo.full_name }} SOURCE_BRANCH_NAME: ${{ github.head_ref }} TARGET_BRANCH_NAME: ${{ github.base_ref }} ANT_HOME: '/usr/share/ant' PYTHONPATH: /opencv-build/python_loader:$PYTHONPATH jobs: BuildAndTest: runs-on: ubuntu-20.04 defaults: run: shell: bash container: image: quay.io/asenyaev/opencv-ubuntu:20.04 steps: - name: PR info run: | echo "PR Author: ${{ env.PR_AUTHOR }}" echo "Source branch name: ${{ env.SOURCE_BRANCH_NAME }}" echo "Target branch name: ${{ env.TARGET_BRANCH_NAME }}" - name: Clean run: find . -mindepth 1 -delete - name: Fetch opencv uses: actions/checkout@v3 with: repository: opencv/opencv ref: ${{ env.TARGET_BRANCH_NAME }} fetch-depth: 0 - name: Merge opencv with ${{ env.SOURCE_BRANCH_NAME }} branch run: | cd ${{ env.OPENCV_DOCKER_WORKDIR }} git config --global --add safe.directory ${{ env.OPENCV_DOCKER_WORKDIR }} git config user.email "opencv.ci" git config user.name "opencv.ci" git pull -v "https://github.com/${{ env.PR_AUTHOR_FORK }}" "${{ env.SOURCE_BRANCH_NAME }}" - name: Clone opencv_extra run: git clone --single-branch --branch ${{ env.TARGET_BRANCH_NAME }} https://github.com/opencv/opencv_extra.git /opencv_extra - name: Merge opencv_extra with ${{ env.SOURCE_BRANCH_NAME }} branch run: | OPENCV_EXTRA_FORK=$(git ls-remote --heads "https://github.com/${{ env.PR_AUTHOR }}/opencv_extra" "${{ env.SOURCE_BRANCH_NAME }}") || true if [[ ! -z "$OPENCV_EXTRA_FORK" ]]; then echo "Merge opencv_extra with ${{ env.SOURCE_BRANCH_NAME }} branch" cd /opencv_extra git config user.email "opencv.ci" git config user.name "opencv.ci" git pull -v "https://github.com/${{ env.PR_AUTHOR }}/opencv_extra" "${{ env.SOURCE_BRANCH_NAME }}" else echo "No merge since ${{ env.PR_AUTHOR }}/opencv_extra does not have branch ${{ env.SOURCE_BRANCH_NAME }}" fi - name: Configure OpenCV run: | cd /opencv-build cmake -G Ninja ${{ env.EXTRA_CMAKE_OPTIONS }} ${{ env.OPENCV_DOCKER_WORKDIR }} - name: Build OpenCV run: | cd /opencv-build ninja - name: Accuracy:calib3d run: cd /opencv-build && xvfb-run -a bin/opencv_test_calib3d - name: Accuracy:core run: cd /opencv-build && xvfb-run -a bin/opencv_test_core - name: Accuracy:dnn run: cd /opencv-build && xvfb-run -a bin/opencv_test_dnn - name: Accuracy:features2d run: cd /opencv-build && xvfb-run -a bin/opencv_test_features2d - name: Accuracy:flann run: cd /opencv-build && xvfb-run -a bin/opencv_test_flann - name: Accuracy:gapi run: cd /opencv-build && xvfb-run -a bin/opencv_test_gapi - name: Accuracy:highgui run: cd /opencv-build && xvfb-run -a bin/opencv_test_highgui - name: Accuracy:imgcodecs run: cd /opencv-build && xvfb-run -a bin/opencv_test_imgcodecs - name: Accuracy:imgproc run: cd /opencv-build && xvfb-run -a bin/opencv_test_imgproc - name: Accuracy:ml run: cd /opencv-build && xvfb-run -a bin/opencv_test_ml - name: Accuracy:objdetect run: cd /opencv-build && xvfb-run -a bin/opencv_test_objdetect - name: Accuracy:photo run: cd /opencv-build && xvfb-run -a bin/opencv_test_photo - name: Accuracy:stitching run: cd /opencv-build && xvfb-run -a bin/opencv_test_stitching - name: Accuracy:video run: cd /opencv-build && xvfb-run -a bin/opencv_test_video - name: Accuracy:videoio run: cd /opencv-build && xvfb-run -a bin/opencv_test_videoio - name: Performance:calib3d run: cd /opencv-build && xvfb-run -a bin/opencv_perf_calib3d --perf_impl=plain --perf_min_samples=1 --perf_force_samples=1 --perf_verify_sanity --skip_unstable=1 - name: Performance:core run: cd /opencv-build && xvfb-run -a bin/opencv_perf_core --perf_impl=plain --perf_min_samples=1 --perf_force_samples=1 --perf_verify_sanity --skip_unstable=1 - name: Performance:dnn run: cd /opencv-build && xvfb-run -a bin/opencv_perf_dnn --perf_impl=plain --perf_min_samples=1 --perf_force_samples=1 --perf_verify_sanity --skip_unstable=1 - name: Performance:features2d run: cd /opencv-build && xvfb-run -a bin/opencv_perf_features2d --perf_impl=plain --perf_min_samples=1 --perf_force_samples=1 --perf_verify_sanity --skip_unstable=1 - name: Performance:gapi run: cd /opencv-build && xvfb-run -a bin/opencv_perf_gapi --perf_impl=plain --perf_min_samples=1 --perf_force_samples=1 --perf_verify_sanity --skip_unstable=1 - name: Performance:imgcodecs run: cd /opencv-build && xvfb-run -a bin/opencv_perf_imgcodecs --perf_impl=plain --perf_min_samples=1 --perf_force_samples=1 --perf_verify_sanity --skip_unstable=1 - name: Performance:imgproc run: cd /opencv-build && xvfb-run -a bin/opencv_perf_imgproc --perf_impl=plain --perf_min_samples=1 --perf_force_samples=1 --perf_verify_sanity --skip_unstable=1 - name: Performance:objdetect run: cd /opencv-build && xvfb-run -a bin/opencv_perf_objdetect --perf_impl=plain --perf_min_samples=1 --perf_force_samples=1 --perf_verify_sanity --skip_unstable=1 - name: Performance:photo run: cd /opencv-build && xvfb-run -a bin/opencv_perf_photo --perf_impl=plain --perf_min_samples=1 --perf_force_samples=1 --perf_verify_sanity --skip_unstable=1 - name: Performance:stitching run: cd /opencv-build && xvfb-run -a bin/opencv_perf_stitching --perf_impl=plain --perf_min_samples=1 --perf_force_samples=1 --perf_verify_sanity --skip_unstable=1 - name: Performance:video run: cd /opencv-build && xvfb-run -a bin/opencv_perf_video --perf_impl=plain --perf_min_samples=1 --perf_force_samples=1 --perf_verify_sanity --skip_unstable=1 - name: Performance:videoio run: cd /opencv-build && xvfb-run -a bin/opencv_perf_videoio --perf_impl=plain --perf_min_samples=1 --perf_force_samples=1 --perf_verify_sanity --skip_unstable=1 - name: Python3 run: | cd ${{ env.OPENCV_DOCKER_WORKDIR }}/modules/python/test python3 ./test.py --repo ../../../ -v - name: Java run: cd /opencv-build && xvfb-run -a python3 ${{ env.OPENCV_DOCKER_WORKDIR }}/modules/ts/misc/run.py . -a -t java - name: Save Unit Test Results uses: actions/upload-artifact@v3 if: always() with: name: junit-html path: /opencv-build/java_test/testResults/junit-noframes.html - name: Pylint run: cd /opencv-build && cmake --build . --config release --target check_pylint -- -j4 BuildContrib: runs-on: ubuntu-20.04 defaults: run: shell: bash container: image: quay.io/asenyaev/opencv-ubuntu:20.04 steps: - name: PR info run: | echo "PR Author: ${{ env.PR_AUTHOR }}" echo "Source branch name: ${{ env.SOURCE_BRANCH_NAME }}" echo "Target branch name: ${{ env.TARGET_BRANCH_NAME }}" - name: Clean run: find . -mindepth 1 -delete - name: Fetch opencv uses: actions/checkout@v3 with: repository: opencv/opencv ref: ${{ env.TARGET_BRANCH_NAME }} fetch-depth: 0 - name: Merge opencv with a test branch run: | cd ${{ env.OPENCV_DOCKER_WORKDIR }} git config --global --add safe.directory ${{ env.OPENCV_DOCKER_WORKDIR }} git config user.email "opencv.ci" git config user.name "opencv.ci" git pull -v "https://github.com/${{ env.PR_AUTHOR_FORK }}" "${{ env.SOURCE_BRANCH_NAME }}" - name: Clone opencv_contrib run: git clone --single-branch --branch ${{ env.TARGET_BRANCH_NAME }} https://github.com/opencv/opencv_contrib.git /opencv_contrib - name: Merge opencv_contrib with ${{ env.SOURCE_BRANCH_NAME }} branch run: | OPENCV_CONTRIB_FORK=$(git ls-remote --heads "https://github.com/${{ env.PR_AUTHOR }}/opencv_contrib" "${{ env.SOURCE_BRANCH_NAME }}") || true if [[ ! -z "$OPENCV_CONTRIB_FORK" ]]; then echo "Merge opencv_contrib with ${{ env.SOURCE_BRANCH_NAME }} branch" cd /opencv_contrib git config user.email "opencv.ci" git config user.name "opencv.ci" git pull -v "https://github.com/${{ env.PR_AUTHOR }}/opencv_contrib" "${{ env.SOURCE_BRANCH_NAME }}" else echo "No merge since ${{ env.PR_AUTHOR }}/opencv_contrib does not have branch ${{ env.SOURCE_BRANCH_NAME }}" fi - name: Configure OpenCV Contrib run: | cd /opencv-contrib-build cmake -G Ninja ${{ env.EXTRA_CMAKE_OPTIONS }} -DOPENCV_EXTRA_MODULES_PATH=/opencv_contrib/modules ${{ env.OPENCV_DOCKER_WORKDIR }} - name: Build OpenCV Contrib run: | cd /opencv-contrib-build ninja