From 71f930b8763552b9913b38d6c4407b225bb581ed Mon Sep 17 00:00:00 2001 From: Sam Wu <22262939+samjwu@users.noreply.github.com> Date: Fri, 18 Jul 2025 12:17:37 -0600 Subject: [PATCH] CI - Remove .jenkins (#615) migrating to rocJenkins [ROCm/rocdecode commit: 91044fc8325dc6a7cce2b491e11abdfb3b0bd9f7] --- projects/rocdecode/.jenkins/common.groovy | 348 ------------------ projects/rocdecode/.jenkins/precheckin.groovy | 78 ---- 2 files changed, 426 deletions(-) delete mode 100644 projects/rocdecode/.jenkins/common.groovy delete mode 100644 projects/rocdecode/.jenkins/precheckin.groovy diff --git a/projects/rocdecode/.jenkins/common.groovy b/projects/rocdecode/.jenkins/common.groovy deleted file mode 100644 index 48c74fd94f..0000000000 --- a/projects/rocdecode/.jenkins/common.groovy +++ /dev/null @@ -1,348 +0,0 @@ -// This file is for internal AMD use. -// If you are interested in running your own Jenkins, please raise a github issue for assistance. - -def runCompileCommand(platform, project, jobName, boolean debug=false, boolean staticLibrary=false) { - project.paths.construct_build_prefix() - - String buildTypeArg = debug ? '-DCMAKE_BUILD_TYPE=Debug' : '-DCMAKE_BUILD_TYPE=Release' - String buildTypeDir = debug ? 'debug' : 'release' - - def command = """#!/usr/bin/env bash - set -ex - echo Build rocDecode - ${buildTypeDir} - cd ${project.paths.project_build_prefix} - mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir} - cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-fprofile-instr-generate -fcoverage-mapping" ../.. - make -j\$(nproc) - sudo make install - sudo make package - objdump -x /opt/rocm/lib/librocdecode.so | grep NEEDED - ldd -v /opt/rocm/lib/librocdecode.so - """ - - platform.runCommand(this, command) -} - -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' - boolean runHevcStability = true; - boolean runAv1Test = true; - - 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' - } - - if (platform.jenkinsLabel.contains('gfx90a') || platform.jenkinsLabel.contains('gfx908')) { - runHevcStability = false; - runAv1Test = false; - } - - String commitSha - String repoUrl - (commitSha, repoUrl) = util.getGitHubCommitInformation(project.paths.project_src_prefix) - - withCredentials([string(credentialsId: "mathlibs-codecov-token-rocdecode", variable: 'CODECOV_TOKEN')]) - { - def prereq = """ - if [ -d "\${JENKINS_HOME_DIR}/rocDecode" ]; then - # Count the number of files in the folder - FILE_COUNT=\$(find \${JENKINS_HOME_DIR}/rocDecode/AvcConformance -type f | wc -l) - # Check if there are 254 files - if [ "\$FILE_COUNT" -ne 254 ]; then - echo "wrong file count" - ls - cd \${JENKINS_HOME_DIR}/rocDecode - rm AvcConformance.zip - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeConformance/AvcConformance.zip - unzip -o AvcConformance.zip - fi - if ${runAv1Test}; then - FILE_COUNT=\$(find \${JENKINS_HOME_DIR}/rocDecode/Av1Conformance_v1.0 -type f | wc -l) - # Check if there are 326 files - if [ "\$FILE_COUNT" -ne 326 ]; then - echo "wrong file count" - ls - cd \${JENKINS_HOME_DIR}/rocDecode - rm Av1Conformance_v1.0.zip - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeConformance/Av1Conformance_v1.0.zip - unzip -o Av1Conformance_v1.0.zip - fi - fi - FILE_COUNT=\$(find \${JENKINS_HOME_DIR}/rocDecode/Vp9Conformance -type f | wc -l) - # Check if there are 216 files - if [ "\$FILE_COUNT" -ne 216 ]; then - echo "wrong file count" - ls - cd \${JENKINS_HOME_DIR}/rocDecode - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeConformance/Vp9Conformance.zip - unzip -o Vp9Conformance.zip - fi - FILE_COUNT=\$(find \${JENKINS_HOME_DIR}/rocDecode/HevcConformance -type f | wc -l) - # Check if there are 270 files - if [ "\$FILE_COUNT" -ne 270 ]; then - echo "wrong file count" - ls - cd \${JENKINS_HOME_DIR}/rocDecode - rm HevcConformance.zip - wget http://math-ci.amd.com/userContent/computer-vision/HevcConformance/*zip*/HevcConformance.zip - unzip -o HevcConformance.zip - fi - FILE_COUNT=\$(find \${JENKINS_HOME_DIR}/rocDecode/AvcStability -type f | wc -l) - # Check if there are 22 files - if [ "\$FILE_COUNT" -ne 22 ]; then - echo "wrong file count" - ls - cd \${JENKINS_HOME_DIR}/rocDecode - rm AvcStability.zip - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeStability/AvcStability.zip - unzip -o AvcStability.zip - fi - if ${runAv1Test}; then - FILE_COUNT=\$(find \${JENKINS_HOME_DIR}/rocDecode/Av1Stability -type f | wc -l) - # Check if there are 215 files - if [ "\$FILE_COUNT" -ne 215 ]; then - echo "wrong file count" - ls - cd \${JENKINS_HOME_DIR}/rocDecode - rm Av1Stability.zip - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeStability/Av1Stability.zip - unzip -o Av1Stability.zip - fi - fi - if ${runHevcStability}; then - FILE_COUNT=\$(find \${JENKINS_HOME_DIR}/rocDecode/HevcStability -type f | wc -l) - # Check if there are 44 files - if [ "\$FILE_COUNT" -ne 44 ]; then - echo "wrong file count" - ls - cd \${JENKINS_HOME_DIR}/rocDecode - rm HevcStability.zip - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeStability/HevcStability.zip - unzip -o HevcStability.zip - fi - fi - FILE_COUNT=\$(find \${JENKINS_HOME_DIR}/rocDecode/Vp9Stability -type f | wc -l) - # Check if there are 18 files - if [ "\$FILE_COUNT" -ne 18 ]; then - echo "wrong file count" - ls - cd \${JENKINS_HOME_DIR}/rocDecode - rm Vp9Stability.zip - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeStability/Vp9Stability.zip - unzip -o Vp9Stability.zip - fi - if [ ! -f \${JENKINS_HOME_DIR}/rocDecode/data1.img ]; then - echo "File does not exist." - cd \${JENKINS_HOME_DIR}/rocDecode - wget http://math-ci.amd.com/userContent/computer-vision/data1.img - fi - else - echo "The folder path does not exist." - mkdir -p \${JENKINS_HOME_DIR}/rocDecode - cd \${JENKINS_HOME_DIR}/rocDecode - wget http://math-ci.amd.com/userContent/computer-vision/data1.img - wget http://math-ci.amd.com/userContent/computer-vision/HevcConformance/*zip*/HevcConformance.zip - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeConformance/Vp9Conformance.zip - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeConformance/AvcConformance.zip - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeStability/AvcStability.zip - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeStability/Vp9Stability.zip - unzip -o HevcConformance.zip - unzip -o Vp9Conformance.zip - unzip -o AvcConformance.zip - unzip -o AvcStability.zip - unzip -o Vp9Stability.zip - if ${runAv1Test}; then - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeConformance/Av1Conformance_v1.0.zip - unzip -o Av1Conformance_v1.0.zip - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeStability/Av1Stability.zip - unzip -o Av1Stability.zip - fi - if ${runHevcStability}; then - wget http://math-ci.amd.com/userContent/computer-vision/rocDecodeStability/HevcStability.zip - unzip -o HevcStability.zip - fi - fi - """ - def command = """#!/usr/bin/env bash - set -ex - export HOME=/home/jenkins - ${libvaDriverPath} - echo make test starts - cd ${project.paths.project_build_prefix}/build - export LLVM_PROFILE_FILE=\"\$(pwd)/rawdata/rocdecode-%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 make test ends - echo rocdecode-sample - videoDecode starts - mkdir -p rocdecode-sample && cd rocdecode-sample - cmake /opt/rocm/share/rocdecode/samples/videoDecode/ - make -j8 - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./videodecode -i /opt/rocm/share/rocdecode/video/AMD_driving_virtual_20-H265.mp4 - echo rocdecode-sample - videoDecode ends - echo rocdecode-test package verification starts - cd ../ && mkdir -p rocdecode-test && cd rocdecode-test - cmake /opt/rocm/share/rocdecode/test/ - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ctest -VV --rerun-failed --output-on-failure - echo rocdecode-test package verification ends - echo rocdecode conformance tests start - cd ../ && mkdir -p conformance && cd conformance - pip3 install pandas - echo HEVC conformance test starts - mkdir hevc-conformance && cd hevc-conformance - python3 /opt/rocm/share/rocdecode/test/testScripts/run_rocDecode_Conformance.py --videodecode_exe ./../../rocdecode-sample/videodecode --files_directory \${JENKINS_HOME_DIR}/rocDecode/HevcConformance --results_directory . - echo HEVC conformance test ends - cd ../ - echo AVC conformance test starts - mkdir avc-conformance && cd avc-conformance - python3 /opt/rocm/share/rocdecode/test/testScripts/run_rocDecode_Conformance.py --videodecode_exe ./../../rocdecode-sample/videodecode --files_directory \${JENKINS_HOME_DIR}/rocDecode/AvcConformance --results_directory . - echo AVC conformance test ends - cd ../ - echo VP9 conformance test starts - mkdir vp9-conformance && cd vp9-conformance - python3 /opt/rocm/share/rocdecode/test/testScripts/run_rocDecode_Conformance.py --videodecode_exe ./../../rocdecode-sample/videodecode --files_directory \${JENKINS_HOME_DIR}/rocDecode/Vp9Conformance --results_directory . - echo VP9 conformance test ends - if ${runAv1Test}; then - cd ../ - echo AV1 conformance test starts - mkdir av1-conformance && cd av1-conformance - python3 /opt/rocm/share/rocdecode/test/testScripts/run_rocDecode_Conformance.py --videodecode_exe ./../../rocdecode-sample/videodecode --files_directory \${JENKINS_HOME_DIR}/rocDecode/Av1Conformance_v1.0 --results_directory . - echo AV1 conformance test ends - fi - echo rocdecode stability tests start - cd ../../ && mkdir -p stability && cd stability - echo AVC stability test starts - mkdir avc-stability && cd avc-stability - python3 /opt/rocm/share/rocdecode/test/testScripts/run_rocDecodeSamples.py --videodecode_exe ./../../rocdecode-sample/videodecode --files_directory \${JENKINS_HOME_DIR}/rocDecode/AvcStability --results_directory . --check_decode_status 1 - echo AVC stability test ends - if ${runHevcStability}; then - echo HEVC stability test starts - cd ../ && mkdir hevc-stability && cd hevc-stability - python3 /opt/rocm/share/rocdecode/test/testScripts/run_rocDecodeSamples.py --videodecode_exe ./../../rocdecode-sample/videodecode --files_directory \${JENKINS_HOME_DIR}/rocDecode/HevcStability --results_directory . --check_decode_status 1 - echo HEVC stability test ends - fi - if ${runAv1Test}; then - echo AV1 stability test starts - cd ../ && mkdir av1-stability && cd av1-stability - python3 /opt/rocm/share/rocdecode/test/testScripts/run_rocDecodeSamples.py --videodecode_exe ./../../rocdecode-sample/videodecode --files_directory \${JENKINS_HOME_DIR}/rocDecode/Av1Stability --results_directory . --check_decode_status 1 --use_ffmpeg_demuxer 0 - echo AV1 stability test ends - fi - echo VP9 stability test starts - cd ../ && mkdir vp9-stability && cd vp9-stability - python3 /opt/rocm/share/rocdecode/test/testScripts/run_rocDecodeSamples.py --videodecode_exe ./../../rocdecode-sample/videodecode --files_directory \${JENKINS_HOME_DIR}/rocDecode/Vp9Stability --results_directory . --check_decode_status 1 - echo VP9 stability test ends - cd ../../ - echo rocdecode-sample - videoDecode with data1 video test starts - cd rocdecode-sample - cp \${JENKINS_HOME_DIR}/rocDecode/data1.img \$PWD - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./videodecode -i ./data1.img - echo rocdecode-sample - videoDecode with data1 video test ends - echo rocdecode-sample - videoDecodePerf with data1 video test starts - mkdir -p rocdecode-perf && cd rocdecode-perf - cmake /opt/rocm/share/rocdecode/samples/videoDecodePerf/ - make -j8 - LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib${libLocation} ./videodecodeperf -i ./../data1.img - echo rocdecode-sample - videoDecodePerf with data1 video test ends - echo \$(pwd) - cd ../../../ - echo \$(pwd) - sudo ${packageManager} install lcov ${toolsPackage} - ${llvmLocation}/llvm-profdata merge -sparse rawdata/*.profraw -o rocdecode.profdata - ${llvmLocation}/llvm-cov export -object release/lib/librocdecode.so --instr-profile=rocdecode.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, prereq) - platform.runCommand(this, command) - } -} - -def runPackageCommand(platform, project) { - - def packageHelper = platform.makePackage(platform.jenkinsLabel, "${project.paths.project_build_prefix}/build/release") - - String packageType = '' - String packageInfo = '' - String packageDetail = '' - String packageInstall = '' - String osType = '' - String packageRunTime = '' - - if (platform.jenkinsLabel.contains('centos') || platform.jenkinsLabel.contains('rhel') || platform.jenkinsLabel.contains('sles')) { - packageType = 'rpm' - packageInfo = 'rpm -qlp' - packageDetail = 'rpm -qi' - packageInstall = 'rpm -i' - packageRunTime = 'rocdecode-*' - - if (platform.jenkinsLabel.contains('sles')) { - osType = 'sles' - } - else if (platform.jenkinsLabel.contains('rhel8')) { - osType = 'rhel8' - } - else if (platform.jenkinsLabel.contains('rhel9')) { - osType = 'rhel9' - } - } - else - { - packageType = 'deb' - packageInfo = 'dpkg -c' - packageDetail = 'dpkg -I' - packageInstall = 'dpkg -i' - packageRunTime = 'rocdecode_*' - - if (platform.jenkinsLabel.contains('ubuntu20')) { - osType = 'ubuntu20' - } - else if (platform.jenkinsLabel.contains('ubuntu22')) { - osType = 'ubuntu22' - } - } - - def command = """#!/usr/bin/env bash - set -ex - export HOME=/home/jenkins - echo Make rocDecode Package - cd ${project.paths.project_build_prefix}/build/release - sudo make package - mkdir -p package - mv rocdecode-dev*.${packageType} package/${osType}-rocdecode-dev.${packageType} - mv rocdecode-test*.${packageType} package/${osType}-rocdecode-test.${packageType} - mv ${packageRunTime}.${packageType} package/${osType}-rocdecode.${packageType} - ${packageDetail} package/${osType}-rocdecode-dev.${packageType} - ${packageDetail} package/${osType}-rocdecode-test.${packageType} - ${packageDetail} package/${osType}-rocdecode.${packageType} - ${packageInfo} package/${osType}-rocdecode-dev.${packageType} - ${packageInfo} package/${osType}-rocdecode-test.${packageType} - ${packageInfo} package/${osType}-rocdecode.${packageType} - sudo ${packageInstall} package/${osType}-rocdecode.${packageType} - sudo ${packageInstall} package/${osType}-rocdecode-dev.${packageType} - sudo ${packageInstall} package/${osType}-rocdecode-test.${packageType} - """ - - platform.runCommand(this, command) - platform.archiveArtifacts(this, packageHelper[1]) -} - -return this diff --git a/projects/rocdecode/.jenkins/precheckin.groovy b/projects/rocdecode/.jenkins/precheckin.groovy deleted file mode 100644 index 48d4167bb6..0000000000 --- a/projects/rocdecode/.jenkins/precheckin.groovy +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env groovy -@Library('rocJenkins@pong') _ -import com.amd.project.* -import com.amd.docker.* - -def runCI = -{ - nodeDetails, jobName-> - - def prj = new rocProject('rocDecode', 'PreCheckin') - - def nodes = new dockerNodes(nodeDetails, jobName, prj) - - def commonGroovy - - boolean formatCheck = false - - def compileCommand = - { - platform, project-> - - commonGroovy = load "${project.paths.project_src_prefix}/.jenkins/common.groovy" - commonGroovy.runCompileCommand(platform, project, jobName) - } - - - def testCommand = - { - platform, project-> - - commonGroovy.runTestCommand(platform, project) - } - - def packageCommand = - { - platform, project-> - - commonGroovy.runPackageCommand(platform, project) - } - - buildProject(prj, formatCheck, nodes.dockerArray, compileCommand, testCommand, packageCommand) -} - -ci: { - String urlJobName = auxiliary.getTopJobName(env.BUILD_URL) - - def propertyList = ["compute-rocm-dkms-no-npi-hipclang":[pipelineTriggers([cron('0 1 * * 0')])]] - propertyList = auxiliary.appendPropertyList(propertyList) - - def jobNameList = ["compute-rocm-dkms-no-npi-hipclang":([ubuntu20:['gfx90a'], ubuntu22:['gfx1101'], sles15sp1:['gfx908'], rhel8:['gfx1030'], rhel9:['gfx942']])] - jobNameList = auxiliary.appendJobNameList(jobNameList) - - propertyList.each - { - jobName, property-> - if (urlJobName == jobName) { - properties(auxiliary.addCommonProperties(property)) - } - } - - jobNameList.each - { - jobName, nodeDetails-> - if (urlJobName == jobName) { - stage(jobName) { - runCI(nodeDetails, jobName) - } - } - } - - // For url job names that are not listed by the jobNameList i.e. compute-rocm-dkms-no-npi-1901 - if(!jobNameList.keySet().contains(urlJobName)) { - properties(auxiliary.addCommonProperties([pipelineTriggers([cron('0 1 * * *')])])) - stage(urlJobName) { - runCI([ubuntu22:['gfx942']], urlJobName) - } - } -}