diff --git a/.jenkins/Dependency b/.jenkins/Dependency new file mode 100644 index 000000000..c668975fb --- /dev/null +++ b/.jenkins/Dependency @@ -0,0 +1,140 @@ +#!/usr/bin/env groovy +// This shared library is available at https://github.com/ROCmSoftwarePlatform/rocJENKINS/ +@Library('rocJenkins') _ + +// This is file for internal AMD use. +// If you are interested in running your own Jenkins, please raise a github issue for assistance. + +import com.amd.project.* +import com.amd.docker.* + + +//////////////////////////////////////////////////////////////////////// +// Mostly generated from snippet generator 'properties; set job properties' +// Time-based triggers added to execute nightly tests, eg '30 2 * * *' means 2:30 AM +properties([ + pipelineTriggers([[$class: 'PeriodicFolderTrigger', interval: '1d']]), + buildDiscarder(logRotator( + artifactDaysToKeepStr: '', + artifactNumToKeepStr: '', + daysToKeepStr: '', + numToKeepStr: '10')), + disableConcurrentBuilds(), + [$class: 'CopyArtifactPermissionProperty', projectNames: '*'] + ]) + +import java.nio.file.Path; + +rocBLASCI: +{ + + def rocblas = new rocProject('rocBLAS') + // customize for project + rocblas.paths.build_command = './install.sh -lasm_ci -c -b develop' + + // Define test architectures, optional rocm version argument is available + def nodes = new dockerNodes(['gfx900 && ubuntu', 'gfx906 && centos7'], rocblas) + + boolean formatCheck = true + + def compileCommand = + { + platform, project-> + + project.paths.construct_build_prefix() + + def command + + if(platform.jenkinsLabel.contains('hip-clang')) + { + command = """#!/usr/bin/env bash + set -x + cd ${project.paths.project_build_prefix} + LD_LIBRARY_PATH=/opt/rocm/hcc/lib CXX=/opt/rocm/bin/hipcc ${project.paths.build_command} --hip-clang + """ + } + else + { + command = """#!/usr/bin/env bash + set -x + cd ${project.paths.project_build_prefix} + LD_LIBRARY_PATH=/opt/rocm/hcc/lib CXX=/opt/rocm/bin/hcc ${project.paths.build_command} + """ + } + platform.runCommand(this, command) + } + + def testCommand = + { + platform, project-> + + def command + + if(platform.jenkinsLabel.contains('centos')) + { + command = """#!/usr/bin/env bash + set -x + cd ${project.paths.project_build_prefix}/build/release/clients/staging + LD_LIBRARY_PATH=/opt/rocm/hcc/lib GTEST_LISTENER=NO_PASS_LINE_IN_LOG sudo ./rocblas-test --gtest_output=xml --gtest_color=yes --gtest_filter=*nightly*-*known_bug* #--gtest_filter=*nightly* + """ + + platform.runCommand(this, command) + junit "${project.paths.project_build_prefix}/build/release/clients/staging/*.xml" + } + else + { + command = """#!/usr/bin/env bash + set -x + cd ${project.paths.project_build_prefix}/build/release/clients/staging + LD_LIBRARY_PATH=/opt/rocm/hcc/lib GTEST_LISTENER=NO_PASS_LINE_IN_LOG ./rocblas-test --gtest_output=xml --gtest_color=yes --gtest_filter=*nightly*-*known_bug* #--gtest_filter=*nightly* + """ + + platform.runCommand(this, command) + junit "${project.paths.project_build_prefix}/build/release/clients/staging/*.xml" + } + } + + def packageCommand = + { + platform, project-> + + def command + + if(platform.jenkinsLabel.contains('centos')) + { + command = """ + set -x + cd ${project.paths.project_build_prefix}/build/release + make package + mkdir -p package + mv *.rpm package/ + rpm -qlp package/*.rpm + """ + + platform.runCommand(this, command) + platform.archiveArtifacts(this, """${project.paths.project_build_prefix}/build/release/package/*.rpm""") + } + else if(platform.jenkinsLabel.contains('hip-clang')) + { + packageCommand = null + } + else + { + command = """ + set -x + cd ${project.paths.project_build_prefix}/build/release + make package + make package_clients + mkdir -p package + mv *.deb package/ + mv clients/*.deb package/ + """ + + platform.runCommand(this, command) + platform.archiveArtifacts(this, """${project.paths.project_build_prefix}/build/release/package/*.deb""") + } + } + + buildProject(rocblas, formatCheck, nodes.dockerArray, compileCommand, testCommand, packageCommand) + +}