stage('Checkout from scm') {
checkout scm
gitCommit = sh(returnStdout: true, script: 'git rev-parse HEAD').trim()
shortCommit = gitCommit.take(6)
packageJSON = readFile "package.json"
version = new groovy.json.JsonSlurper().parseText(packageJSON).version
if(env.BRANCH_NAME == "develop") {
tag = "${version}-${env.BUILD_NUMBER}"
} else if(env.BRANCH_NAME == "master") {
tag = "${version}"
} else {
tag = "${version}-${shortCommit}"
}
fullImageName = "pierone.stups.zalan.do/metrigo/awesome-frontend:${tag}"
}
stage('Build Image') {
sh "docker build -t $fullImageName ."
}
stage('Test Image') {
// if we fail to stop the container because the name doesn't exist, we don't care - keep going.
sh "docker stop ${containerName} || true"
sh "docker rm ${containerName} || true"
sh "docker run -dt --name ${containerName} ${fullImageName}"
sh "docker exec -t ${containerName} bash -c \"cd src && env CI=true npm test\""
def dockerIp = sh (
script: "docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${containerName}",
returnStdout: true
).trim()
sh "docker logs $containerName"
sh "curl http://$dockerIp:8080/api/health"
}
This is achieved by comparing env.BRANCH_NAME to "master" or "develop".
stage('Push image to pierone') {
sh "/tools/run :stups -- pierone login --url pierone.stups.zalan.do"
sh "docker push ${fullImageName}"
}
stage('Deploy image to KIO (aka yourturn)') {
sh "/tools/run :stups -e KIO_URL=$KIO_URL -- kio versions \
create $KIO_APP_NAME $version $fullImageName"
}
stage ('Create new stack in senza using lizzy, \
and push traffic over immediately, \
and clean up old stacks') {
sh "/tools/run :lizzy -e LIZZY_URL=$LIZZY_URL -- lizzy create \
-v --traffic 100 --keep-stacks 0 --region $AWS_REGION \
$SENZA_CONFIG_PATH $stack_version $tag"
}