Permalink
Browse files

Create Jenkinsfile

  • Loading branch information...
pcaskey committed Nov 22, 2018
1 parent 07005ca commit 86a37872ae5e82200b55f06f4d578f69412a07f9
Showing with 117 additions and 0 deletions.
  1. +117 −0 Jenkinsfile
@@ -0,0 +1,117 @@
// 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
}

0 comments on commit 86a3787

Please sign in to comment.