diff --git a/Jenkinsfile b/Jenkinsfile index ec8b9dce799239964825b5d5cfc3d807ee6313ba..ed8f80d8e04117b23ca45be714a6adb5ffc0c695 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -27,7 +27,12 @@ node('master') { step([$class: 'GitHubCommitStatusSetter']) - if (helper.isRelease()) { build job: 'OGS-6/Deploy', wait: false } + if (currentBuild.result == "SUCCESS") { + if (helper.isOriginMaster()) { + build job: 'OGS-6/clang-sanitizer', wait: false + build job: 'OGS-6/Deploy', wait: false + } + } } properties ([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactDaysToKeepStr: '', artifactNumToKeepStr: '5', daysToKeepStr: '', numToKeepStr: '25']]]) diff --git a/scripts/jenkins/clang.groovy b/scripts/jenkins/clang.groovy index f2e495452f369ffbbb6d91fdd3f7855b329b515b..edb7b7fb0c6fa8ccb7980598464a088ea98c72c1 100644 --- a/scripts/jenkins/clang.groovy +++ b/scripts/jenkins/clang.groovy @@ -1,26 +1,36 @@ -configure = load 'scripts/jenkins/lib/configure.groovy' -build = load 'scripts/jenkins/lib/build.groovy' -post = load 'scripts/jenkins/lib/post.groovy' - node('docker') { + def configure = load 'scripts/jenkins/lib/configure.groovy' + def build = load 'scripts/jenkins/lib/build.groovy' + def post = load 'scripts/jenkins/lib/post.groovy' + def defaultDockerArgs = '-v /home/jenkins/.ccache:/usr/src/.ccache' + def defaultCMakeOptions = + '-DOGS_LIB_BOOST=System ' + + '-DOGS_LIB_VTK=System ' + + '-DOGS_ADDRESS_SANITIZER=ON ' + + '-DOGS_UNDEFINED_BEHAVIOR_SANITIZER=ON ' + + '-DOGS_BUILD_UTILS=ON' - stage 'Checkout' + stage 'Checkout (Clang)' dir('ogs') { checkout scm } docker.image('ogs6/clang-base:latest').inside(defaultDockerArgs) { - catchError { - configure.linux 'build', "${defaultCMakeOptions} " + - '-DOGS_ADDRESS_SANITIZER=ON -DOGS_UNDEFINED_BEHAVIOR_SANITIZER=ON', - '' - - stage 'Unit tests' - build.linux 'build', 'tests', 'UBSAN_OPTIONS=print_stacktrace=1 make' + stage 'Configure (Clang)' + configure.linux 'build', "${defaultCMakeOptions}" + try { + stage 'Unit tests (Clang)' + build.linux 'build', 'tests', 'UBSAN_OPTIONS=print_stacktrace=1 make -j $(nproc)' + } + catch(err) { echo "Clang sanitizer for unit tests failed!" } - stage 'End-to-end tests' - build.linux 'build', 'ctest', 'UBSAN_OPTIONS=print_stacktrace=1 make' + try { + stage 'End-to-end tests (Clang)' + build.linux 'build', 'ctest', 'UBSAN_OPTIONS=print_stacktrace=1 make -j $(nproc)' } + catch(err) { echo "Clang sanitizer for end-to-end tests failed!" } } + + stage 'Post (Clang)' post.publishTestReports('build/Testing/**/*.xml','build/Tests/testrunner.xml', 'ogs/scripts/jenkins/clang-log-parser.rules') } diff --git a/scripts/jenkins/lib/helper.groovy b/scripts/jenkins/lib/helper.groovy index 4f180b225b9227eabfed67a515692b8f96d8ae07..36db924ca35506fd409dbfe56e41d07aee481185 100644 --- a/scripts/jenkins/lib/helper.groovy +++ b/scripts/jenkins/lib/helper.groovy @@ -4,6 +4,12 @@ def isRelease () { return false; } +def isOriginMaster() { + if (env.BRANCH_NAME == 'master' && env.JOB_URL.contains('ufz')) + return true; + return false; +} + def getEnv(arch = 'x64') { if (env.NODE_NAME == 'visserv3') qtdir = "C:\\libs\\qt\\4.8\\msvc2013-${arch}" diff --git a/scripts/jenkins/mac.groovy b/scripts/jenkins/mac.groovy index cc8016be3d168af6b85ab160a3ad112c25b5860c..b94e2e03b710e728ba806d6b236826a91e0c4ccd 100644 --- a/scripts/jenkins/mac.groovy +++ b/scripts/jenkins/mac.groovy @@ -5,7 +5,7 @@ node('mac && conan') { '-DOGS_LIB_BOOST=System' + '-DOGS_LIB_VTK=System ' + '-DOGS_DOWNLOAD_ADDITIONAL_CONTENT=ON ' + - '-DCMAKE_OSX_DEPLOYMENT_TARGET="10.10"' + '-DCMAKE_OSX_DEPLOYMENT_TARGET="10.11"' stage 'Checkout (Mac)' dir('ogs') { checkout scm }