Adding static CI
MODIFY
.jenkins/common.groovy
.jenkins/common.groovy
// 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)
+def runCompileCommand(platform, project, jobName, boolean debug=false, boolean sameOrg=true)
{
project.paths.construct_build_prefix()
- String compiler = jobName.contains('hipclang') ? 'hipcc' : 'hcc'
- String hipClangArgs = jobName.contains('hipclang') ? '--hip-clang' : ''
- def getRocPRIM = auxiliary.getLibrary('rocPRIM', platform.jenkinsLabel)
+ project.compiler.compiler_path = platform.jenkinsLabel.contains('hip-clang') ? '/opt/rocm/bin/hipcc' : '/opt/rocm/bin/hcc'
+ String buildTypeArg = debug ? '-DCMAKE_BUILD_TYPE=Debug' : '-DCMAKE_BUILD_TYPE=Release'
+ String buildTypeDir = debug ? 'debug' : 'release'
+ String cmake = platform.jenkinsLabel.contains('centos') ? 'cmake3' : 'cmake'
- command = """#!/usr/bin/env bash
+ def getRocPRIM = auxiliary.getLibrary('rocPRIM', platform.jenkinsLabel, 'develop', sameOrg)
+
+ def command = """#!/usr/bin/env bash
set -x
${getRocPRIM}
cd ${project.paths.project_build_prefix}
- LD_LIBRARY_PATH=/opt/rocm/hcc/lib ${project.paths.build_command} ${hipClangArgs}
+ mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir}
+ ${cmake} -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc ${buildTypeArg} -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON ../..
+ make -j\$(nproc)
"""
-
platform.runCommand(this, command)
}
+
def runTestCommand (platform, project)
{
String sudo = auxiliary.sudo(platform.jenkinsLabel)
String centos = platform.jenkinsLabel.contains('centos') ? '3' : ''
- def testCommand = "ctest${centos} --output-on-failure"
+ def testCommand = "ctest${centos} --output-on-failure"
def command = """#!/usr/bin/env bash
set -x
- cd ${project.paths.project_build_prefix}/build/release
- make -j\$(nproc)
+ cd ${project.paths.project_build_prefix}
+ cd ${project.testDirectory}
${sudo} LD_LIBRARY_PATH=/opt/rocm/lib ${testCommand}
"""
platform.runCommand(this, command)
}
-def runPackageCommand(platform, project, jobName)
+def runPackageCommand(platform, project)
{
- def command
+ def packageHelper = platform.makePackage(platform.jenkinsLabel,"${project.paths.project_build_prefix}/build/release")
- if(jobName.contains('hipclang'))
- {
- packageCommand = null
- }
- else if(platform.jenkinsLabel.contains('ubuntu'))
- {
- command = """
- set -x
- cd ${project.paths.project_build_prefix}/build/release
- make package
- rm -rf package && mkdir -p package
- mv *.deb package/
- dpkg -c package/*.deb
- """
-
- platform.runCommand(this, command)
- platform.archiveArtifacts(this, """${project.paths.project_build_prefix}/build/release/package/*.deb""")
- }
- else
- {
- command = """
- set -x
- cd ${project.paths.project_build_prefix}/build/release
- make package
- rm -rf 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""")
- }
+ platform.runCommand(this, packageHelper[0])
+ platform.archiveArtifacts(this, packageHelper[1])
}
return this

ADD
.jenkins/staticlibrary.groovy
+#!/usr/bin/env groovy
+@Library('rocJenkins@pong') _
+import com.amd.project.*
+import com.amd.docker.*
+import java.nio.file.Path;
+
+def runCI =
+{
+ nodeDetails, jobName->
+
+ def prj = new rocProject('rocThrust', 'Static Library 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, false)
+ }
+
+
+ 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":[pipelineTriggers([cron('0 1 * * 0')])],
+ "compute-rocm-dkms-no-npi-hipclang":[pipelineTriggers([cron('0 1 * * 0')])],
+ "rocm-docker":[]]
+ propertyList = auxiliary.appendPropertyList(propertyList)
+
+ def jobNameList = ["compute-rocm-dkms-no-npi":([ubuntu16:['gfx900'],centos7:['gfx906'],sles15sp1:['gfx908']]),
+ "compute-rocm-dkms-no-npi-hipclang":([ubuntu16:['gfx900'],centos7:['gfx906'],sles15sp1:['gfx908']]),
+ "rocm-docker":([ubuntu16:['gfx900'],centos7:['gfx906'],sles15sp1:['gfx908']])]
+ 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([ubuntu16:['gfx906']], urlJobName)
+ }
+ }
+}
\ No newline at end of file

Adding static CI