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:
parent
4dc6aa513b
commit
0a84f48e43
99
Jenkinsfile
vendored
99
Jenkinsfile
vendored
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user