diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000000000000000000000000000000000..0bc94baa19b9fcb767f7deb3b4f0dcb57715c42c --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,4 @@ +node('master') { + checkout scm + load 'scripts/jenkins/gcc.groovy' +} diff --git a/scripts/jenkins/gcc.groovy b/scripts/jenkins/gcc.groovy index bfc6645870ff7a4b1f2b9e7e7d4ddde16d4fec46..c984fc35597f327417f8647eb92651ec85f1f514 100644 --- a/scripts/jenkins/gcc.groovy +++ b/scripts/jenkins/gcc.groovy @@ -1,71 +1,40 @@ +defaultCMakeOptions = '-DOGS_LIB_BOOST=System -DOGS_LIB_VTK=System' + node('docker') { - // Checks out into subdirectory ogs stage 'Checkout' - checkout([$class: 'GitSCM', - branches: [[name: '*/master']], - doGenerateSubmoduleConfigurations: false, - extensions: - [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'ogs']], - submoduleCfg: [], - userRemoteConfigs: - [[url: 'https://github.com/ufz/ogs']]]) - - - // Multiple configurations are build in parallel - parallel linux: { - docker.image('ogs6/gcc-ogs-cli:latest').inside - { - build 'build', '', 'package' + dir('ogs') { + checkout scm + } - stage 'Test' - sh '''cd build - make tests''' - } - }, - - linux_gui: { - docker.image('ogs6/gcc-ogs-gui:latest').inside { - build 'build_gui', '-DOGS_BUILD_GUI=ON -DOGS_BUILD_TESTS=OFF -DOGS_BUILD_CLI=OFF', 'package' - } + stage 'Build' + docker.image('ogs6/gcc-ogs-base:latest').inside { + build 'build', '', 'package tests ctest' } -// windows: { -// docker.image('ogs6/mingw-ogs-gui:latest').inside -// { -// build 'build_win', '-DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE', 'package' -// -// stage 'Test' -// sh '''cd build_win -// rm -rf tests/testrunner.xml -// wine bin/testrunner.exe --gtest_output=xml:./tests/testrunner.xml''' -// } -// }, -// -// windows_gui: { -// docker.image('ogs6/mingw-ogs-gui:latest').inside -// { -// build 'build_win_gui', -// '-DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE -DOGS_BUILD_GUI=ON -DOGS_BUILD_TESTS=OFF -DOGS_BUILD_CLI=OFF', -// 'package' -// } -// } + publishTestReports 'build/Testing/**/*.xml', 'build/Tests/testrunner.xml' - // end parallel - - step([$class: 'JUnitResultArchiver', - testResults: 'build/tests/testrunner.xml,build_win/tests/testrunner.xml']) - - archive 'build*/*.tar.gz,build_win*/*.zip' -} // end node + // archive 'build*/*.tar.gz' +} def build(buildDir, cmakeOptions, target) { sh "rm -rf ${buildDir} && mkdir ${buildDir}" stage 'Configure' - sh "cd ${buildDir} && cmake ../ogs ${cmakeOptions}" + sh "cd ${buildDir} && cmake ../ogs ${defaultCMakeOptions} ${cmakeOptions}" stage 'Build' - sh "cd ${buildDir} && make -j 2 ${target}" + sh "cd ${buildDir} && make -j 4 ${target}" +} + +def publishTestReports(ctestPattern, gtestPattern) { + step([$class: 'XUnitPublisher', testTimeMargin: '3000', thresholdMode: 1, + thresholds: [ + [$class: 'FailedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: ''], + [$class: 'SkippedThreshold', failureNewThreshold: '', failureThreshold: '', unstableNewThreshold: '', unstableThreshold: '']], + tools: [ + [$class: 'CTestType', deleteOutputFiles: true, failIfNotNew: true, pattern: "${ctestPattern}", skipNoTestFiles: false, stopProcessingIfError: true], + [$class: 'GoogleTestType', deleteOutputFiles: true, failIfNotNew: true, pattern: "${gtestPattern}", skipNoTestFiles: false, stopProcessingIfError: true]] + ]) }