3
0
mirror of https://github.com/triqs/dft_tools synced 2024-11-07 06:33:48 +01:00

[jenkins] Build PRs against upstream target branch

cleanup unused image tags; may want to switch away from Dockerfile to an
explicit container run at some point.
This commit is contained in:
Dylan Simon 2018-02-22 14:16:45 -05:00
parent 4dc6aa513b
commit 0a84f48e43

99
Jenkinsfile vendored
View File

@ -1,4 +1,5 @@
def triqsProject = '/TRIQS/triqs/' + env.BRANCH_NAME.replaceAll('/', '%2F') def triqsBranch = env.CHANGE_TARGET ?: env.BRANCH_NAME
def triqsProject = '/TRIQS/triqs/' + triqsBranch.replaceAll('/', '%2F')
properties([ properties([
disableConcurrentBuilds(), disableConcurrentBuilds(),
@ -16,22 +17,22 @@ def platforms = [:]
def dockerPlatforms = ["ubuntu-clang", "ubuntu-gcc", "centos-gcc"] def dockerPlatforms = ["ubuntu-clang", "ubuntu-gcc", "centos-gcc"]
for (int i = 0; i < dockerPlatforms.size(); i++) { for (int i = 0; i < dockerPlatforms.size(); i++) {
def platform = dockerPlatforms[i] def platform = dockerPlatforms[i]
platforms[platform] = { -> platforms[platform] = { -> stage(platform) {
stage(platform) { timeout(time: 1, unit: 'HOURS') {
timeout(time: 1, unit: 'HOURS') { node('docker') {
node('docker') { checkout scm
checkout scm /* construct a Dockerfile for this base */
/* construct a Dockerfile for this base */ sh """
sh ''' ( echo "FROM flatironinstitute/triqs:${triqsBranch}-${env.STAGE_NAME}" ; sed '0,/^FROM /d' Dockerfile ) > Dockerfile.jenkins
( echo "FROM flatironinstitute/triqs:$BRANCH_NAME-$STAGE_NAME" ; sed '0,/^FROM /d' Dockerfile ) > Dockerfile.jenkins mv -f Dockerfile.jenkins Dockerfile
mv -f Dockerfile.jenkins Dockerfile """
''' /* build and tag */
/* build and tag */ def img = docker.build("flatironinstitute/dft_tools:${env.BRANCH_NAME}-${env.STAGE_NAME}")
def img = docker.build("flatironinstitute/dft_tools:${env.BRANCH_NAME}-${env.STAGE_NAME}") /* but we don't need the tag so clean it up (alternatively, could refacter to run in container) */
} sh "docker rmi ${img.imageName()}"
} }
} }
} } }
} }
def osxPlatforms = [ def osxPlatforms = [
@ -41,47 +42,45 @@ def osxPlatforms = [
for (int i = 0; i < osxPlatforms.size(); i++) { for (int i = 0; i < osxPlatforms.size(); i++) {
def platformEnv = osxPlatforms[i] def platformEnv = osxPlatforms[i]
def platform = platformEnv[0] def platform = platformEnv[0]
platforms["osx-$platform"] = { -> platforms["osx-$platform"] = { -> stage("osx-$platform") {
stage("osx-$platform") { timeout(time: 1, unit: 'HOURS') {
timeout(time: 1, unit: 'HOURS') { node('osx && triqs') {
node('osx && triqs') { def srcDir = pwd()
def workDir = pwd() def tmpDir = pwd(tmp:true)
def tmpDir = pwd(tmp:true) def buildDir = "$tmpDir/build"
def buildDir = "$tmpDir/build" def installDir = "$tmpDir/install"
def installDir = "$tmpDir/install"
dir(installDir) { dir(installDir) {
deleteDir() deleteDir()
} }
copyArtifacts(projectName: triqsProject, selector: upstream(fallbackToLastSuccessful: true), filter: "osx-${platform}.zip") copyArtifacts(projectName: triqsProject, selector: upstream(fallbackToLastSuccessful: true), filter: "osx-${platform}.zip")
unzip(zipFile: "osx-${platform}.zip", dir: installDir) unzip(zipFile: "osx-${platform}.zip", dir: installDir)
/* fixup zip-stripped permissions (JENKINS-13128) */ /* fixup zip-stripped permissions (JENKINS-13128) */
sh "chmod +x $installDir/bin/*" sh "chmod +x $installDir/bin/*"
checkout scm checkout scm
dir(buildDir) { withEnv(platformEnv[1]+[ dir(buildDir) { withEnv(platformEnv[1]+[
"PATH=$installDir/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin", "PATH=$installDir/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin",
"CPATH=$installDir/include", "CPATH=$installDir/include",
"LIBRARY_PATH=$installDir/lib", "LIBRARY_PATH=$installDir/lib",
"CMAKE_PREFIX_PATH=$installDir/share/cmake"]) { "CMAKE_PREFIX_PATH=$installDir/share/cmake"]) {
deleteDir() deleteDir()
sh "cmake $workDir -DTRIQS_ROOT=$installDir" sh "cmake $srcDir -DTRIQS_ROOT=$installDir"
sh "make -j2" sh "make -j2"
try { try {
sh "make test" sh "make test"
} catch (exc) { } catch (exc) {
archiveArtifacts(artifacts: 'Testing/Temporary/LastTest.log') archiveArtifacts(artifacts: 'Testing/Temporary/LastTest.log')
throw exc throw exc
} }
sh "make install" sh "make install"
} } } }
// zip(zipFile: "osx-${platform}.zip", archive: true, dir: installDir) // zip(zipFile: "osx-${platform}.zip", archive: true, dir: installDir)
}
} }
} }
} } }
} }
parallel platforms parallel platforms