ci: Run additional checks

This commit is contained in:
Dennis Klein
2021-07-02 00:31:56 +02:00
committed by Dennis Klein
parent 08d72d492a
commit 38f9870893
12 changed files with 186 additions and 72 deletions

70
Jenkinsfile vendored
View File

@@ -3,12 +3,24 @@
def jobMatrix(String type, List specs) {
def nodes = [:]
for (spec in specs) {
job = "${spec.os}-${spec.ver}-${spec.arch}-${spec.compiler}"
def label = "${type}/${job}"
def selector = "${spec.os}-${spec.ver}-${spec.arch}"
def os = spec.os
def ver = spec.ver
def check = spec.check
def job = ""
def selector = ""
def os = ""
def ver = ""
if (type == 'build') {
job = "${spec.os}-${spec.ver}-${spec.arch}-${spec.compiler}"
selector = "${spec.os}-${spec.ver}-${spec.arch}"
os = spec.os
ver = spec.ver
} else { // == 'check'
job = "${spec.name}"
selector = 'fedora-34-x86_64'
os = 'fedora'
ver = '34'
}
def label = "${job}"
def extra = spec.extra
nodes[label] = {
@@ -25,16 +37,13 @@ def jobMatrix(String type, List specs) {
if (selector =~ /^macos/) {
sh """\
echo \"export DDS_ROOT=\\\"\\\$(brew --prefix dds)\\\"\" >> ${jobscript}
echo \"export PATH=\\\"\\\$(brew --prefix dds)/bin:\\\$PATH\\\"\" >> ${jobscript}
echo \"${ctestcmd}\" >> ${jobscript}
"""
sh "cat ${jobscript}"
sh "bash ${jobscript}"
} else {
def static_analysis = "OFF"
if (selector =~ /^fedora-32/) {
static_analysis = "ON"
}
def containercmd = "singularity exec -B/shared ${env.SINGULARITY_CONTAINER_ROOT}/fairmq/${os}.${ver}.sif bash -l -c \\\"${ctestcmd} -DRUN_STATIC_ANALYSIS=${static_analysis}\\\""
def containercmd = "singularity exec --net --ipc --uts --pid -B/shared ${env.SINGULARITY_CONTAINER_ROOT}/fairmq/${os}.${ver}.sif bash -l -c \\\"${ctestcmd} ${extra}\\\""
sh """\
echo \"echo \\\"*** Job started at .......: \\\$(date -R)\\\"\" >> ${jobscript}
echo \"echo \\\"*** Job ID ...............: \\\${SLURM_JOB_ID}\\\"\" >> ${jobscript}
@@ -46,13 +55,12 @@ def jobMatrix(String type, List specs) {
sh "cat ${jobscript}"
sh "test/ci/slurm-submit.sh \"FairMQ \${JOB_BASE_NAME} ${label}\" ${jobscript}"
withChecks('Static Analysis') {
if (static_analysis == "ON") {
recordIssues(enabledForFailure: true,
tools: [gcc(pattern: 'build/Testing/Temporary/*.log')],
filters: [excludeFile('extern/*'), excludeFile('usr/*')],
skipBlames: true)
}
if (job == "static-analyzers") {
recordIssues(enabledForFailure: true,
tools: [gcc(pattern: 'build/Testing/Temporary/*.log')],
filters: [excludeFile('extern/*'), excludeFile('usr/*')],
skipBlames: true,
skipPublishingChecks: true)
}
}
@@ -81,18 +89,26 @@ pipeline{
stage("CI") {
steps{
script {
def all = '-DHAS_ASIO=ON -DHAS_DDS=ON -DHAS_PMIX=ON'
def builds = jobMatrix('build', [
[os: 'ubuntu', ver: '20.04', arch: 'x86_64', compiler: 'gcc-9',
extra: '-DHAS_DDS=ON -DHAS_ASIO=ON -DHAS_PMIX=ON'],
[os: 'fedora', ver: '32', arch: 'x86_64', compiler: 'gcc-10',
extra: '-DHAS_PMIX=ON -DHAS_DDS=ON -DHAS_ASIOFI=ON -DHAS_ASIO=ON'],
[os: 'fedora', ver: '34', arch: 'x86_64', compiler: 'gcc-11',
extra: '-DHAS_PMIX=ON -DHAS_DDS=ON -DHAS_ASIOFI=ON -DHAS_ASIO=ON'],
[os: 'macos', ver: '11', arch: 'x86_64', compiler: 'apple-clang-12',
extra: '-DHAS_DDS=ON -DHAS_ASIO=ON'],
[os: 'ubuntu', ver: '20.04', arch: 'x86_64', compiler: 'gcc-9', extra: all],
[os: 'fedora', ver: '32', arch: 'x86_64', compiler: 'gcc-10', extra: all],
[os: 'fedora', ver: '33', arch: 'x86_64', compiler: 'gcc-10', extra: all],
[os: 'fedora', ver: '34', arch: 'x86_64', compiler: 'gcc-11', extra: all],
[os: 'macos', ver: '11', arch: 'x86_64', compiler: 'apple-clang-12',
extra: '-DHAS_ASIO=ON -DHAS_DDS=ON'],
])
parallel(builds)
def all_debug = "${all} -DCMAKE_BUILD_TYPE=Debug"
def checks = jobMatrix('check', [
[name: 'static-analyzers', extra: "${all_debug} -DRUN_STATIC_ANALYSIS=ON"],
[name: '{address,leak,ub}-sanitizers',
extra: "${all_debug} -DENABLE_SANITIZER_ADDRESS=ON -DENABLE_SANITIZER_LEAK=ON -DENABLE_SANITIZER_UNDEFINED_BEHAVIOUR=ON -DCMAKE_CXX_FLAGS='-O1 -fno-omit-frame-pointer'"],
])
parallel(builds + checks)
}
}
}