From 419ba2bb670c3e3f4b7b01eebc233498c56b19ad Mon Sep 17 00:00:00 2001 From: Kiriti Gowda Date: Thu, 10 Apr 2025 13:26:28 -0700 Subject: [PATCH] Jenkins - Add Code Cov (#140) * Jenkins - Add Code Cov * Add codecov token * CI - fix script * LLVM - location fix --------- Co-authored-by: Sam Wu <22262939+samjwu@users.noreply.github.com> [ROCm/rocjpeg commit: ab3965285703e46a04169001b5f7243e0df2804e] --- projects/rocjpeg/.jenkins/common.groovy | 94 ++++++++++++++++--------- 1 file changed, 62 insertions(+), 32 deletions(-) diff --git a/projects/rocjpeg/.jenkins/common.groovy b/projects/rocjpeg/.jenkins/common.groovy index 88035311cc..f2ea037942 100644 --- a/projects/rocjpeg/.jenkins/common.groovy +++ b/projects/rocjpeg/.jenkins/common.groovy @@ -12,7 +12,7 @@ def runCompileCommand(platform, project, jobName, boolean debug=false, boolean s echo Build rocJPEG - ${buildTypeDir} cd ${project.paths.project_build_prefix} mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir} - cmake ${buildTypeArg} ../.. + cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-fprofile-instr-generate -fcoverage-mapping" ../.. make -j\$(nproc) sudo make install sudo make package @@ -27,47 +27,77 @@ def runTestCommand (platform, project) { String libLocation = '' String libvaDriverPath = "" + String packageManager = 'apt -y' + String toolsPackage = 'llvm-amdgpu-dev' + String llvmLocation = '/opt/amdgpu/lib/x86_64-linux-gnu/llvm-20.1/bin' if (platform.jenkinsLabel.contains('rhel')) { libLocation = ':/usr/local/lib' + packageManager = 'yum -y' + toolsPackage = 'llvm-amdgpu-devel' + llvmLocation = '/opt/amdgpu/lib64/llvm-20.1/bin' } else if (platform.jenkinsLabel.contains('sles')) { libLocation = ':/usr/local/lib' libvaDriverPath = "export LIBVA_DRIVERS_PATH=/opt/amdgpu/lib64/dri" + packageManager = 'zypper -n' + toolsPackage = 'llvm-amdgpu-devel' + llvmLocation = '/opt/amdgpu/lib64/llvm-20.1/bin' } - def command = """#!/usr/bin/env bash - set -ex - export HOME=/home/jenkins - ${libvaDriverPath} - echo make test - cd ${project.paths.project_build_prefix}/build/release - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} make test ARGS="-VV --rerun-failed --output-on-failure" - echo rocjpeg-sample - jpegDecode - mkdir -p rocjpeg-sample && cd rocjpeg-sample - cmake /opt/rocm/share/rocjpeg/samples/jpegDecode/ - make -j8 - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i /opt/rocm/share/rocjpeg/images/ - echo rocjpeg additional tests - wget http://math-ci.amd.com/userContent/computer-vision/rocJPEG/jpeg_samples.zip - unzip jpeg_samples.zip - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt yuv_planar - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt y - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt rgb - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt rgb_planar - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -crop 0,0,100,100 - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt yuv_planar -crop 0,0,100,100 - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt y -crop 0,0,100,100 - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt rgb -crop 0,0,100,100 - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt rgb_planar -crop 0,0,100,100 - echo rocjpeg-test package verification - cd ../ && mkdir -p rocjpeg-test && cd rocjpeg-test - cmake /opt/rocm/share/rocjpeg/test/ - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ctest -VV --rerun-failed --output-on-failure - """ + String commitSha + String repoUrl + (commitSha, repoUrl) = util.getGitHubCommitInformation(project.paths.project_src_prefix) - platform.runCommand(this, command) + withCredentials([string(credentialsId: "mathlibs-codecov-token-rocjpeg", variable: 'CODECOV_TOKEN')]) + { + def command = """#!/usr/bin/env bash + set -ex + export HOME=/home/jenkins + ${libvaDriverPath} + echo make test + cd ${project.paths.project_build_prefix}/build + export LLVM_PROFILE_FILE=\"\$(pwd)/rawdata/rocjpeg-%p.profraw\" + echo \$LLVM_PROFILE_FILE + cd release + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} make test ARGS="-VV --rerun-failed --output-on-failure" + echo rocjpeg-sample - jpegDecode + mkdir -p rocjpeg-sample && cd rocjpeg-sample + cmake /opt/rocm/share/rocjpeg/samples/jpegDecode/ + make -j8 + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i /opt/rocm/share/rocjpeg/images/ + echo rocjpeg additional tests + wget http://math-ci.amd.com/userContent/computer-vision/rocJPEG/jpeg_samples.zip + unzip jpeg_samples.zip + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt yuv_planar + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt y + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt rgb + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt rgb_planar + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -crop 0,0,100,100 + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt yuv_planar -crop 0,0,100,100 + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt y -crop 0,0,100,100 + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt rgb -crop 0,0,100,100 + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./jpegdecode -i jpeg_samples -fmt rgb_planar -crop 0,0,100,100 + echo rocjpeg-test package verification + cd ../ && mkdir -p rocjpeg-test && cd rocjpeg-test + cmake /opt/rocm/share/rocjpeg/test/ + LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ctest -VV --rerun-failed --output-on-failure + cd ../../ + echo \$(pwd) + sudo ${packageManager} install lcov ${toolsPackage} + ${llvmLocation}/llvm-profdata merge -sparse rawdata/*.profraw -o rocjpeg.profdata + ${llvmLocation}/llvm-cov export -object release/lib/librocjpeg.so --instr-profile=rocjpeg.profdata --format=lcov > coverage.info + lcov --remove coverage.info '/opt/*' --output-file coverage.info + lcov --list coverage.info + lcov --summary coverage.info + curl -Os https://uploader.codecov.io/latest/linux/codecov + chmod +x codecov + ./codecov -v -U \$http_proxy -t ${CODECOV_TOKEN} --file coverage.info --name rocDecode --sha ${commitSha} + """ + + platform.runCommand(this, command) + } // Unit tests - TBD }