@@ -1,131 +1,81 @@
#! groovy
// pipeline file for building appliances
echo " My Branch is: ${ env.BRANCH_NAME} "
BRANCH_TEST = " ${ env.BRANCH_NAME} "
if (BRANCH_TEST == " shibboleth-production" ){
node(' packer' ) {
currentBuild. result = " SUCCESS"
try {
stage ' Cleanup & Setup'
sh ' rm -rf output-shibboleth-*'
sh ' rm -rf "/Users/levvel/VirtualBox VMs/shibboleth-appliance-*"'
sh ' rm -rf builds'
sh ' mkdir -p builds'
withCredentials([[$class : ' FileBinding' , credentialsId : ' tier-aws-config' , variable : ' FILE' ]]) {
ws {
sh ' mkdir -p ~/.aws'
sh ' cp $FILE ~/.aws/config'
}
}
withCredentials([[$class : ' FileBinding' , credentialsId : ' tier-aws-credentials' , variable : ' FILE' ]]) {
ws {
sh ' mkdir -p ~/.aws'
sh ' cp $FILE ~/.aws/credentials'
}
}
stage ' Checkout'
checkout scm
stage ' Acquire ansible-playbooks'
sh ' mkdir -p ansible-playbooks'
dir(' ansible-playbooks' ){
git([ url : " https://github.internet2.edu/docker/ansible-playbooks.git" ,
branch : " shibboleth-production" , credentialsId : " jenkins-github-access-token" ])
}
stage ' Validate'
sh ' /usr/local/bin/packer validate shibboleth-appliance.json'
stage ' Build Appliance - Shibboleth'
sh ' /usr/local/bin/packer build shibboleth-appliance.json'
stage ' Sync appliances to S3 bucket'
sh ' aws s3 sync builds s3://internet2-tier-appliance-us-west-1'
slackSend color : ' good' , message : " BUILD SUCCESS: Shibboleth Appliance build success. ${ env.JOB_NAME} ${ env.BUILD_NUMBER} (<${ env.BUILD_URL} |Open>)"
node(' packer' ) {
currentBuild. result = " SUCCESS"
stage ' Appliance build'
echo " My Branch is: ${ env.BRANCH_NAME} "
BRANCH_TEST = " ${ env.BRANCH_NAME} "
if (BRANCH_TEST == " shibboleth-production" ){
performBuild(" shibboleth" )
} else if (BRANCH_TEST == " grouper-production" ){
performBuild(" grouper" )
} else if (BRANCH_TEST == " comanage-production" ){
performBuild(" comanage" )
}
}
def performBuild (String project ){
try {
stage ' Cleanup & Setup'
sh " rm -rf output-${ project} -*"
sh " rm -rf \" /Users/levvel/VirtualBox VMs/${ project} -appliance-*\" "
sh ' rm -rf builds'
sh ' mkdir -p builds'
withCredentials([[$class : ' FileBinding' , credentialsId : ' tier-aws-config' , variable : ' FILE' ]]) {
ws {
sh ' mkdir -p ~/.aws'
sh ' cp $FILE ~/.aws/config'
}
}
catch (err) {
currentBuild. result = " FAILURE"
slackSend color : ' danger' , message : " BUILD ERROR: There was a problem with Shibboleth Appliance. ${ env.JOB_NAME} ${ env.BUILD_NUMBER} (<${ env.BUILD_URL} |Open>) \n\n ${ err} "
throw err
withCredentials([[$class : ' FileBinding' , credentialsId : ' tier-aws-credentials' , variable : ' FILE' ]]) {
ws {
sh ' mkdir -p ~/.aws'
sh ' cp $FILE ~/.aws/credentials'
}
}
}
} else if (BRANCH_TEST == " comanage-production" ){
node(' packer' ) {
currentBuild. result = " SUCCESS"
try {
stage ' Cleanup & Setup '
sh ' rm -rf output-comanage-*'
sh ' rm -rf "/Users/levvel/VirtualBox VMs/comange-appliance-*"'
sh ' rm -rf builds'
sh ' mkdir -p builds'
withCredentials([[$class : ' FileBinding' , credentialsId : ' tier-aws-config' , variable : ' FILE' ]]) {
ws {
sh ' mkdir -p ~/.aws'
sh ' cp $FILE ~/.aws/config'
}
}
stage ' Checkout'
withCredentials([[$class : ' FileBinding' , credentialsId : ' tier-aws-credentials' , variable : ' FILE' ]]) {
ws {
sh ' mkdir -p ~/.aws'
sh ' cp $FILE ~/.aws/credentials'
}
}
checkout scm
stage ' Checkout '
stage ' Acquire ansible-playbooks '
checkout scm
stage ' Acquire ansible-playbooks'
sh ' mkdir -p ansible-playbooks'
dir(' ansible-playbooks' ){
git([ url : " https://github.internet2.edu/docker/ansible-playbooks.git" ,
branch : " comanage-production" , credentialsId : " jenkins-github-access-token" ])
}
sh ' mkdir -p ansible-playbooks'
dir(' ansible-playbooks' ){
git([ url : " https://github.internet2.edu/docker/ansible-playbooks.git" ,
branch : " {{project}}-production" , credentialsId : " jenkins-github-access-token" ])
}
stage ' Validate'
stage ' Validate'
sh ' /usr/local/bin/packer validate comange -appliance.json'
sh " /usr/local/bin/packer validate {{project}} -appliance.json"
stage ' Build Appliance - Comanage '
stage ' Build Appliance'
sh ' /usr/local/bin/packer build comanage -appliance.json'
sh " /usr/local/bin/packer build {{project}} -appliance.json"
stage ' Sync appliances to S3 bucket'
stage ' Sync appliances to S3 bucket'
sh ' aws s3 sync builds s3://internet2-tier-appliance-us-west-1'
sh " aws s3 sync builds s3://internet2-tier-appliance-us-west-1"
stage ' Publish results'
sh " bin/perms.sh > results.txt"
slackSend color : ' good' , message : " BUILD SUCCESS: Comanage Appliance build success. ${ env.JOB_NAME} ${ env.BUILD_NUMBER} (<${ env.BUILD_URL} |Open>)"
slackSend color : ' good' , message : " BUILD SUCCESS: Shibboleth Appliance build success. ${ env.JOB_NAME} ${ env.BUILD_NUMBER} (<${ env.BUILD_URL} |Open>)"
slackSend color : ' good' , message : readFile(' ./results.txt' )
sh " rm results.txt"
}
catch (err) {
currentBuild. result = " FAILURE"
slackSend color : ' danger' , message : " BUILD ERROR: There was a problem with Comanage Appliance. ${ env.JOB_NAME} ${ env.BUILD_NUMBER} (<${ env.BUILD_URL} |Open>) \n\n ${ err} "
}
throw err
}
catch ( err) {
handleError( " BUILD ERROR: There was a problem with ${ project } Appliance. ${ env.JOB_NAME } ${ env.BUILD_NUMBER } (< ${ env.BUILD_URL } |Open>) \n\n ${ err } " )
}
} else if (BRANCH_TEST == " grouper-production" ) {
node(' packer' ) {
@@ -189,3 +139,11 @@ if (BRANCH_TEST=="shibboleth-production"){
}
}
}
def handleError (String message ){
echo " ${ message} "
currentBuild. setResult(" FAILED" )
slackSend color : ' danger' , message : " ${ message} "
// step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'chris.bynum@levvel.io', sendToIndividuals: true])
sh ' exit 1'
}