Skip to content
Permalink
202109
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
/** Builds images for the Grouper Training Env
* Each class has a set of images. Each class's image sets are independent, but within
* a class each image builds upon the prior exercise. Therefore all images are built
* first and then push to the repo. Order of the build is important, but ordering of the
* image pushes are not. If an image is missing the extra layers get pushed, then the
* missing layers only get tagged when they are pushed.
**/
/** Each class has a set of modules with a set of steps.
* For examples, 101.1.1, 101.1.2, 101.1.3, 101.2.1, 101.2.2, etc.
* Each step is an associated docker image.
* exerciseSets has the class name and an array of the number of steps for module.
**/
// TODO unused?
exerciseSets = ['101.1.1', ]
pipeline {
agent any
environment {
maintainer = "t"
imagename = 'g'
tag = 'l'
}
stages {
stage('Setting build context') {
steps {
script {
maintainer = maintain()
imagename = imagename()
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 'mkdir -p tmp && mkdir -p bin'
dir('tmp'){
git([ url: "https://github.internet2.edu/docker/util.git", credentialsId: "jenkins-github-access-token" ])
sh 'rm -rf ../bin/*'
sh 'mv ./bin/* ../bin/.'
}
}
}
}
stage('Clean') {
steps {
script {
try{
sh 'bin/destroy.sh >> debug'
} catch(error) {
def error_details = readFile('./debug');
def message = "BUILD ERROR: There was a problem building the Base Image. \n\n ${error_details}"
sh "rm -f ./debug"
handleError(message)
}
}
}
}
stage('Build Base') {
steps {
script {
docker.withRegistry('https://registry.hub.docker.com/', "dockerhub-${maintainer}") {
def baseImg = docker.build("${maintainer}/${imagename}:base-${tag}", "--no-cache --pull base")
baseImg.push("base-${tag}")
}
}
}
}
stage('Build exerciseSets') {
steps {
script {
docker.withRegistry('https://registry.hub.docker.com/', "dockerhub-${maintainer}") {
// def tagSet = generateTagSet()
// def builds = build(tagSet)
if(env.BRANCH_NAME == "202109") {
//builds.each{ k, v -> echo ("push ${k}") } //for local testing
// builds.each{ k, v -> v.push(k) } <- not used anymore
def exerciseFolders = [
"base": "base",
"101.1.1": "ex101/ex101.1.1",
"201.end": "ex201/ex201.end",
//"201.1.1": "ex201/ex201.1.1",
//"201.1.end": "ex201/ex201.1.end",
//"201.2.1": "ex201/ex201.2.1",
//"201.2.end": "ex201/ex201.2.end",
//"201.3.1": "ex201/ex201.3.1",
//"201.3.end": "ex201/ex201.3.end",
//"201.4.1": "ex201/ex201.4.1",
//"201.4.end": "ex201/ex201.4.end",
//"201.5.1": "ex201/ex201.5.1",
//"201.5.end": "ex201/ex201.5.end",
//"211.1.1": "ex211/ex211.1.1",
//"301.4.1": "ex301/ex301.4.1",
//"401.1.1": "ex401/ex401.1.1",
//"401.1.end": "ex401/ex401.1.end",
//"401.3.1": "ex401/ex401.3.1",
//"401.3.end": "ex401/ex401.3.end",
//"full_demo": "full-demo,",
]
exerciseFolders.each { exercise, folder ->
def build = docker.build("${maintainer}/${imagename}:${exercise}-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ${folder}")
build.push("${exercise}-${tag}")
}
/*
def build = docker.build("${maintainer}/${imagename}:101.1.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex101/ex101.1.1")
build.push("101.1.1-${tag}")
build = docker.build("${maintainer}/${imagename}:base-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} base")
build.push("base-${tag}")
build = docker.build("${maintainer}/${imagename}:full_demo-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} full-demo/")
build.push("full_demo-${tag}")
build = docker.build("${maintainer}/${imagename}:401.1.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex401/ex401.1.1")
build.push("401.1.1-${tag}")
build = docker.build("${maintainer}/${imagename}:401.1.end-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex401/ex401.1.end")
build.push("401.1.end-${tag}")
build = docker.build("${maintainer}/${imagename}:401.3.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex401/ex401.3.1")
build.push("401.3.1-${tag}")
build = docker.build("${maintainer}/${imagename}:401.3.end-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex401/ex401.3.end")
build.push("401.3.end-${tag}")
build = docker.build("${maintainer}/${imagename}:301.4.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex301/ex301.4.1")
build.push("301.4.1-${tag}")
build = docker.build("${maintainer}/${imagename}:201.1.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex201/ex201.1.1")
build.push("201.1.1-${tag}")
build = docker.build("${maintainer}/${imagename}:201.1.end-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex201/ex201.1.end")
build.push("201.1.end-${tag}")
build = docker.build("${maintainer}/${imagename}:201.2.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex201/ex201.2.1")
build.push("201.2.1-${tag}")
build = docker.build("${maintainer}/${imagename}:201.2.end-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex201/ex201.2.end")
build.push("201.2.end-${tag}")
build = docker.build("${maintainer}/${imagename}:201.3.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex201/ex201.3.1")
build.push("201.3.1-${tag}")
build = docker.build("${maintainer}/${imagename}:201.3.end-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex201/ex201.3.end")
build.push("201.3.end-${tag}")
build = docker.build("${maintainer}/${imagename}:201.4.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex201/ex201.4.1")
build.push("201.4.1-${tag}")
build = docker.build("${maintainer}/${imagename}:201.4.end-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex201/ex201.4.end")
build.push("201.4.end-${tag}")
build = docker.build("${maintainer}/${imagename}:201.5.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex201/ex201.5.1")
build.push("201.5.1-${tag}")
build = docker.build("${maintainer}/${imagename}:201.5.end-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex201/ex201.5.end")
build.push("201.5.end-${tag}")
build = docker.build("${maintainer}/${imagename}:211.1.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex211/ex211.1.1")
build.push("211.1.1-${tag}")
build = docker.build("${maintainer}/${imagename}:101.1.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex101/ex101.1.1")
build.push("101.1.1-${tag}")
*/
/*
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
*/
/*
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} /")
build.push("-${tag}")
build = docker.build("${maintainer}/${imagename}:$i-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} $i/$i")
build.push("$i-${tag}")
build = docker.build("${maintainer}/${imagename}:401.3.end-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex401/ex401.3.end")
build.push("401.3.end-${tag}")
build = docker.build("${maintainer}/${imagename}:401.3.end-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex401/ex401.3.end")
build.push("401.3.end-${tag}")
build = docker.build("${maintainer}/${imagename}:401.3.end-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex401/ex401.3.end")
build.push("401.3.end-${tag}")
*/
/*
docker pull "tier/gte:401.3.end-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:401.3.1-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:401.1.end-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:401.1.1-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:301.4.1-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:211.1.1-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:201.5.end-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:201.5.1-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:201.4.end-$GROUPER_GTE_DOCKER_BRANCH"
ocker pull "tier/gte:201.4.1-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:201.3.end-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:201.3.1-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:201.2.end-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:201.2.1-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:201.1.end-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:201.1.1-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:101.1.1-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:full_demo-$GROUPER_GTE_DOCKER_BRANCH"
docker pull "tier/gte:base-$GROUPER_GTE_DOCKER_BRANCH"
def build = docker.build("${maintainer}/${imagename}:101.1.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex101/ex101.1.1")
build.push("101.1.1-${tag}")
build = docker.build("${maintainer}/${imagename}:211.1.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex211/ex211.1.1")
build.push("211.1.1-${tag}")
build = docker.build("${maintainer}/${imagename}:301.4.1-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} ex301/ex301.4.1")
build.push("301.4.1-${tag}")
build = docker.build("${maintainer}/${imagename}:full_demo-${tag}", "--no-cache --pull --build-arg VERSION_TAG=${tag} full-demo")
build.push("full_demo-${tag}")
*/
} else {
echo 'not building images, since the SCM branch is not 202109'
}
}
}
}
}
stage('Notify') {
steps{
echo "$maintainer"
slackSend color: 'good', message: "${maintainer}/${imagename} version ${tag} pushed to DockerHub"
}
}
}
post {
always {
echo 'Done Building.'
}
failure {
// slackSend color: 'good', message: "Build failed"
handleError("BUILD ERROR: There was a problem building ${maintainer}/${imagename} version ${tag}.")
}
}
}
def maintain() {
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){
echo "${message}"
currentBuild.setResult("FAILED")
slackSend color: 'danger', message: "${message}"
//step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'chubing@internet2.edu', sendToIndividuals: true])
sh 'exit 1'
}