Skip to content

Commit

Permalink
CI: new serial Jenkins
Browse files Browse the repository at this point in the history
Move the serial tester to ci.tjhei.info.
  • Loading branch information
tjhei committed Dec 14, 2022
1 parent 447ff50 commit 4f62126
Showing 1 changed file with 139 additions and 0 deletions.
139 changes: 139 additions & 0 deletions contrib/ci/Jenkinsfile.serial
Original file line number Diff line number Diff line change
@@ -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: 2, 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-mpi.log || true"
archiveArtifacts artifacts: 'detailed-mpi.log', fingerprint: true
}

failure
{
githubNotify context: 'Jenkins: serial', description: 'build failed', status: 'FAILURE'
}
}
}

}
}
}
}

0 comments on commit 4f62126

Please sign in to comment.