Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
118 lines (95 sloc) 3.8 KB
// Licensed to the University Corporation for Advanced Internet Development,
// Inc. (UCAID) under one or more contributor license agreements. See the
// NOTICE file distributed with this work for additional information regarding
// copyright ownership. The UCAID licenses this file to You under the Apache
// License, Version 2.0 (the "License"); you may not use this file except in
// compliance with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
node('windows') {
stage 'Checkout'
checkout scm
stage 'Acquire util files'
powershell(returnStatus: true, script: 'New-Item -ItemType directory -Path ./tmp')
powershell(returnStatus: true, script: 'Remove-Item ./bin -Force -Recurse')
dir('tmp'){
git([ url: "https://github.internet2.edu/docker/util.git",
credentialsId: "jenkins-github-access-token" ])
powershell(returnStatus: true, script: 'Move-Item -Path ./bin/ -Destination ../bin/')
}
powershell(returnStatus: true, script: 'Remove-Item ./tmp -Force -Recurse')
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.cmd"
currentBuild.result = 'FAILURE'
}
if(maintainer){
echo "Building ${imagename}:${tag} for ${maintainer}"
}
stage 'Build'
try{
powershell(returnStatus: true, script: '& ./bin/windows/rebuild.ps1 > ./debug')
} catch(error) {
def error_details = readFile('./debug');
def message = "BUILD ERROR: There was a problem building ${imagename}:${tag}. \n\n ${error_details}"
powershell(returnStatus: true, script: 'Remove-Item -Force ./debug')
currentBuild.result = 'FAILURE'
handleError(message)
}
/*def status = powershell(returnStatus: true, script: '& ./bin/windows/rebuild.ps1 > ./debug')
if (status == 0) {
echo "build success"
} else {
def error_details = readFile('./debug');
def message = "BUILD ERROR: There was a problem building ${imagename}:${tag}. \n\n ${error_details}"
handleError(message)
powershell(returnStatus: true, script: 'Remove-Item -Force ./debug')
}*/
/* stage 'Test'
try{
powershell(returnStatus: true, script: '& ./tests/runtests.ps1 > ./debug')
} catch(error) {
def error_details = readFile('./debug');
def message = "BUILD ERROR: There was a problem testing ${imagename}:${tag}. \n\n ${error_details}"
powershell(returnStatus: true, script: 'Remove-Item -Force ./debug')
currentBuild.result = 'FAILURE'
handleError(message)
}*/
stage 'Push'
docker.withRegistry('https://registry.hub.docker.com/', "dockerhub-$maintainer") {
def baseImg = docker.build("$maintainer/$imagename")
baseImg.push("$tag")
}
stage 'Notify'
slackSend color: 'good', message: "$maintainer/$imagename:$tag pushed to DockerHub"
}
def maintainer() {
def matcher = readFile('common.cmd') =~ 'maintainer="(.+)"'
matcher ? matcher[0][1] : 'tier'
}
def imagename() {
def matcher = readFile('common.cmd') =~ 'imagename="(.+)"'
matcher ? matcher[0][1] : null
}
def handleError(String message){
echo "${message}"
currentBuild.setResult("FAILED")
slackSend color: 'danger', message: "${message}"
bat exit 1
}
You can’t perform that action at this time.