Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 93 additions & 0 deletions .jenkins/asan.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
#!/usr/bin/env groovy
// This shared library is available at https://github.com/ROCmSoftwarePlatform/rocJENKINS/
@Library('rocJenkins@pong') _

// This file is 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.*
import java.nio.file.Path;

def runCI =
{
nodeDetails, jobName->

def prj = new rocProject('rocThrust', 'address-sanitizer')

prj.defaults.ccache = true
prj.timeout.compile = 480

// Define test architectures, optional rocm version argument is available
def nodes = new dockerNodes(nodeDetails, jobName, prj)

boolean formatCheck = false

def commonGroovy

def settings = [addressSanitizer: true]

def compileCommand =
{
platform, project->

commonGroovy = load "${project.paths.project_src_prefix}/.jenkins/common.groovy"
commonGroovy.runCompileCommand(platform, project, jobName, settings)
}

def testCommand =
{
platform, project->

commonGroovy.runTestCommand(platform, project, settings)
}

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)

Set standardJobNameSet = ["compute-rocm-dkms-no-npi", "compute-rocm-dkms-no-npi-hipclang", "rocm-docker"]

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))
}

Set seenJobNames = []
jobNameList.each
{
jobName, nodeDetails->
seenJobNames.add(jobName)
if (urlJobName == jobName)
runCI(nodeDetails, jobName)
}

// For url job names that are outside of the standardJobNameSet i.e. compute-rocm-dkms-no-npi-1901
if(!seenJobNames.contains(urlJobName))
{
properties(auxiliary.addCommonProperties([pipelineTriggers([cron('0 1 * * *')])]))
runCI([ubuntu16:['gfx906']], urlJobName)
}
}

22 changes: 17 additions & 5 deletions .jenkins/common.groovy
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
// 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 sameOrg=true)
def runCompileCommand(platform, project, jobName, settings)
{
project.paths.construct_build_prefix()

String buildTypeArg = debug ? '-DCMAKE_BUILD_TYPE=Debug' : '-DCMAKE_BUILD_TYPE=Release'
String buildTypeDir = debug ? 'debug' : 'release'
String buildTypeArg = settings.debug ? '-DCMAKE_BUILD_TYPE=Debug' : '-DCMAKE_BUILD_TYPE=Release'
String buildTypeDir = settings.debug ? 'debug' : 'release'
String cmake = platform.jenkinsLabel.contains('centos') ? 'cmake3' : 'cmake'
//Set CI node's gfx arch as target if PR, otherwise use default targets of the library
String amdgpuTargets = env.BRANCH_NAME.startsWith('PR-') ? '-DAMDGPU_TARGETS=\$gfx_arch' : ''
String asanFlag = settings.addressSanitizer ? '-DBUILD_ADDRESS_SANITIZER=ON' : ''
boolean sameOrg = settings.sameOrg ?: false

def getRocPRIM = auxiliary.getLibrary('rocPRIM', platform.jenkinsLabel, null, sameOrg)

Expand All @@ -19,20 +21,21 @@ def runCompileCommand(platform, project, jobName, boolean debug=false, boolean s
cd ${project.paths.project_build_prefix}
mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir}
${auxiliary.gfxTargetParser()}
${cmake} -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc ${buildTypeArg} ${amdgpuTargets} -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON ../..
${cmake} -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc ${buildTypeArg} ${amdgpuTargets} ${asanFlag} -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON ../..
make -j\$(nproc)
"""

platform.runCommand(this, command)
}

def runTestCommand (platform, project)
def runTestCommand (platform, project, settings)
{
String sudo = auxiliary.sudo(platform.jenkinsLabel)

def testCommand = "ctest --output-on-failure"
def hmmTestCommand = ''
def excludeRegex = 'reduce_by_key.hip'
def LD_PATH = ''

if (platform.jenkinsLabel.contains('gfx11'))
{
Expand All @@ -51,11 +54,20 @@ def runTestCommand (platform, project)
// """
}

if (settings.addressSanitizer)
{
LD_PATH = """
export ASAN_LIB_PATH=\$(/opt/rocm/llvm/bin/clang -print-file-name=libclang_rt.asan-x86_64.so)
export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$(dirname "\${ASAN_LIB_PATH}")
"""
}

def command = """
#!/usr/bin/env bash
set -x
cd ${project.paths.project_build_prefix}
cd ${project.testDirectory}
${LD_PATH}
${testCommand} ${testCommandExclude}
${hmmTestCommand}
"""
Expand Down
6 changes: 4 additions & 2 deletions .jenkins/precheckin.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,21 @@ def runCI =

def commonGroovy

def settings = [:]

def compileCommand =
{
platform, project->

commonGroovy = load "${project.paths.project_src_prefix}/.jenkins/common.groovy"
commonGroovy.runCompileCommand(platform, project, jobName)
commonGroovy.runCompileCommand(platform, project, jobName, settings)
}

def testCommand =
{
platform, project->

commonGroovy.runTestCommand(platform, project)
commonGroovy.runTestCommand(platform, project, settings)
}

def packageCommand =
Expand Down
6 changes: 4 additions & 2 deletions .jenkins/staticanalysis.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,16 @@ def runCI =
boolean formatCheck = false
boolean staticAnalysis = true

def settings = [debug: false]

def compileCommand =
{
platform, project->

runCompileCommand(platform, project, jobName, false)
runCompileCommand(platform, project, jobName, settings.debug)
}

buildProject(prj , formatCheck, nodes.dockerArray, compileCommand, null, null, staticAnalysis)
buildProject(prj, formatCheck, nodes.dockerArray, compileCommand, null, null, staticAnalysis)
}

ci: {
Expand Down
7 changes: 4 additions & 3 deletions .jenkins/staticlibrary.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,23 @@ def runCI =

def commonGroovy

def settings = [debug: false, sameOrg: true]

boolean formatCheck = false

def compileCommand =
{
platform, project->

commonGroovy = load "${project.paths.project_src_prefix}/.jenkins/common.groovy"
commonGroovy.runCompileCommand(platform, project, jobName, false, true)
commonGroovy.runCompileCommand(platform, project, jobName, settings)
}


def testCommand =
{
platform, project->

commonGroovy.runTestCommand(platform, project)
commonGroovy.runTestCommand(platform, project, settings)
}

def packageCommand =
Expand Down