Permalink
Cannot retrieve contributors at this time
shib-idp-appliance/Jenkinsfile
Go to filenode('docker') { | |
stage 'Checkout' | |
checkout scm | |
stage 'Acquire util' | |
sh 'mkdir -p tmp && mkdir -p bin' | |
dir('tmp'){ | |
git([ url: "https://github.internet2.edu/docker/util.git", | |
credentialsId: "jenkins-github-access-token" ]) | |
sh 'mv ./bin/* ../bin/.' | |
} | |
sh 'rm -rf tmp' | |
stage 'Setting build context' | |
def maintainer = maintainer() | |
def imagename = imagename() | |
def tag | |
// Tag images created on master branch with 'latest' | |
if(env.BRANCH_NAME == "master"){ | |
tag = "latest" | |
}else{ | |
tag = env.BRANCH_NAME | |
} | |
if(!imagename){ | |
echo "You must define an imagename in common.bash" | |
currentBuild.result = 'FAILURE' | |
sh 'exit 1' | |
} | |
if(maintainer){ | |
echo "Building ${imagename}:${tag} for ${maintainer}" | |
} | |
stage 'Acquire conftree' | |
sh 'mkdir -p root' | |
dir('root'){ | |
git([ url: "https://github.internet2.edu/docker/shib-idp-conftree.git", | |
branch: "test", credentialsId: "jenkins-github-access-token" ]) | |
} | |
stage 'Build haproxy' | |
try{ | |
dir('haproxy'){ | |
sh 'docker build --rm -t my/haproxy . > debug' | |
sh 'rm debug' | |
} | |
} catch(error) { | |
def error_details = readFile('haproxy/debug'); | |
def message = "BUILD ERROR: There was a problem building Shibboleth appliance haproxy image (${tag}). \n\n ${error_details}" | |
sh "rm -f haproxy/debug" | |
handleError(message, tag) | |
} | |
stage 'Build' | |
try{ | |
sh 'bin/rebuild.sh &> debug' | |
} catch(error) { | |
def error_details = readFile('./debug'); | |
def message = "BUILD ERROR: There was a problem building Shibboleth appliance image (${tag}). \n\n ${error_details}" | |
sh "rm -f ./debug" | |
handleError(message, tag) | |
} | |
stage 'Compose' | |
try{ | |
sh 'bin/compose.sh &> debug' | |
} catch(error) { | |
def error_details = readFile('./debug'); | |
def message = "BUILD ERROR: There was a problem composing Shibboleth appliance (${tag}). \n\n ${error_details}" | |
sh "rm -f ./debug" | |
handleError(message, tag) | |
} | |
stage 'Tests' | |
try{ | |
sh 'bin/test.sh &> debug' | |
} catch(error) { | |
def error_details = readFile('./debug'); | |
def message = "BUILD ERROR: There was a problem testing Shibboleth appliance :${tag}. \n\n ${error_details}" | |
sh "rm -f ./debug" | |
handleError(message, tag) | |
} | |
stage 'Clean Up' | |
cleanup(tag) | |
stage 'Notify' | |
slackSend color: 'good', message: "Shibboleth-appliance (${tag}) passes test battery" | |
} | |
def maintainer() { | |
def matcher = readFile('common.bash') =~ 'maintainer="(.+)"' | |
matcher ? matcher[0][1] : 'tier' | |
} | |
def imagename() { | |
def matcher = readFile('common.bash') =~ 'imagename="(.+)"' | |
matcher ? matcher[0][1] : null | |
} | |
def handleError(String message, String tag, Boolean doCleanup = true){ | |
echo "${message}" | |
currentBuild.setResult("FAILED") | |
slackSend color: 'danger', message: "${message}" | |
//step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'chris.bynum@levvel.io', sendToIndividuals: true]) | |
if (doCleanup) { | |
cleanup(tag) | |
} | |
sh 'exit 1' | |
} | |
def cleanup(String tag) { | |
try{ | |
sh 'bin/decompose.sh &> debug' | |
sh 'docker rm haproxy' | |
sh 'docker rmi my/haproxy' | |
sh 'bin/prune.sh &> debug' | |
} catch(error) { | |
def error_details = readFile('./debug'); | |
def message = "BUILD ERROR: There was a problem cleaning up Shibboleth appliance :${tag}. \n\n ${error_details}" | |
sh "rm -f ./debug" | |
handleError(message, tag, false) | |
} | |
} |