From: Timo Heister Date: Wed, 14 Dec 2022 19:14:40 +0000 (-0500) Subject: CI: new serial Jenkins X-Git-Tag: v9.5.0-rc1~705^2~1 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6b6aba7bed3ffea448de2ea59d02944ea631f2ff;p=dealii.git CI: new serial Jenkins Move the serial tester to ci.tjhei.info. update --- diff --git a/contrib/ci/Jenkinsfile.serial b/contrib/ci/Jenkinsfile.serial new file mode 100644 index 0000000000..810e626cd4 --- /dev/null +++ b/contrib/ci/Jenkinsfile.serial @@ -0,0 +1,139 @@ +#!groovy + +/* + +This Jenkins job compiles and tests deal.II with MPI enabled + +See https://ci.tjhei.info/job/dealii-serial/ for details. +*/ + +/* +Settings to apply inside Jenkins: + - discover pull requests (remove branches/master) + - Strategy: merged PR + - enable "Disable GitHub Multibranch Status Plugin" + - trigger build on pull request comment: .* /rebuild.* (without space!) + - Jenkinsfile: choose contrib/ci/Jenkinsfile.serial + - scan: every 4 hours + - discard: 5+ items +*/ + +// load library https://github.com/tjhei/jenkins-stuff to provide +// killold.killOldBuilds() function: +@Library('tjhei') _ + +pipeline +{ + agent none + + stages + { + stage("abort old") + { + agent none + steps + { + githubNotify context: 'Jenkins: serial', description: 'initializing...', status: 'PENDING' + // kill older builds in this PR: + script { killold.killOldBuilds() } + } + } + + stage("main") + { + agent + { + docker + { + image 'tjhei/candi:v9.4.1-r1-ubuntu20.04' + } + } + + post { cleanup { cleanWs() } } + + stages + { + stage("check") + { + when { + not { + anyOf { + branch 'master' + branch pattern: "dealii-*", comparator: "GLOB" + } + } + } + + steps + { + githubNotify context: 'Jenkins: serial', description: 'pending...', status: 'PENDING' + sh ''' + wget -q -O - https://api.github.com/repos/dealii/dealii/issues/${CHANGE_ID}/labels | grep 'ready to test' || \ + { echo "This commit will only be tested when it has the label 'ready to test'. Trigger a rebuild by adding a comment that contains '/rebuild'..."; exit 1; } + ''' + } + post + { + failure + { + githubNotify context: 'Jenkins: serial', description: 'need ready to test label and /rebuild', status: 'PENDING' + script + { + currentBuild.result='NOT_BUILT' + } + } + } + } + + stage('build') + { + steps + { + timeout(time: 5, unit: 'HOURS') + { + sh "echo \"building on node ${env.NODE_NAME}\"" + sh '''#!/bin/bash + set -e + set -x + export TEST_TIME_LIMIT=1200 + export NP=`grep -c ^processor /proc/cpuinfo` + mkdir -p /home/dealii/build + cd /home/dealii/build + cmake -G "Ninja" \ + -D DEAL_II_CXX_FLAGS='-Werror' \ + -D DEAL_II_CXX_FLAGS_DEBUG='-Og' \ + -D DEAL_II_EARLY_DEPRECATIONS=ON \ + -D CMAKE_BUILD_TYPE=Debug \ + -D DEAL_II_WITH_MPI=OFF \ + -D DEAL_II_UNITY_BUILD=ON \ + $WORKSPACE/ + time ninja -j 10 # 12 gives OOM + time ninja test # quicktests + time ninja setup_tests + time ctest --output-on-failure -j $NP --no-compress-output -T test + ''' + githubNotify context: 'Jenkins: serial', description: 'OK', status: 'SUCCESS' + } + } + + post + { + always + { + sh "cp /home/dealii/build/Testing/*/*.xml $WORKSPACE/.xml || true" + xunit tools: [CTest(pattern: '*.xml')] + sh "cp /home/dealii/build/detailed.log $WORKSPACE/detailed-serial.log || true" + archiveArtifacts artifacts: 'detailed-serial.log', fingerprint: true + } + + failure + { + githubNotify context: 'Jenkins: serial', description: 'build failed', status: 'FAILURE' + } + } + } + + } + } + } +}