sos-milter/Jenkinsfile

67 lines
2.4 KiB
Groovy
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

def dockerImageObj
pipeline {
agent any
parameters {
string defaultValue: 'https', name: 'dockerRegistryScheme', trim: true
string defaultValue: 'example.com', name: 'dockerRegistryRepo', trim: true
string defaultValue: 'sos-milter', name: 'imageName', trim: true
}
stages {
stage('Build image') {
steps {
sh '/usr/bin/env'
script {
dockerImageObj = docker.build(
"${env.imageName}:${env.BRANCH_NAME}",
"--pull --label BUILD_URL=${env.BUILD_URL} ."
)
}
}
}
stage('Test image') {
steps {
script {
dockerImageObj.inside() {
sh 'echo "Performing application tests inside sos-milter container..."'
sh 'export MILTER_SOCKET=inet:8020 && /usr/bin/python3 /app/sos-milter.py &'
sh 'sleep 5; /bin/nc -z -n -v -w 1 127.0.0.1 8020 || exit 1'
}
}
}
}
stage('Push image') {
steps {
script {
withCredentials([usernamePassword(credentialsId: 'jenkins_dockreg', passwordVariable: 'DOCKREG_PASS', usernameVariable: 'DOCKREG_USER')]) {
sh 'docker login -u ${DOCKREG_USER} -p ${DOCKREG_PASS} ${dockerRegistryRepo} || { echo "Docker login failed!"; exit; }'
}
docker.withRegistry("${env.dockerRegistryScheme}://${env.dockerRegistryRepo}") {
dockerImageObj.push()
}
}
}
}
stage('Cleanup') {
steps {
echo "Cleanup"
/* The default is to reuse the local images for future builds. The reason
for this is quite simple! It´s much easier to prune local images from
disk than pushed images from the (cheap) docker registry! */
/* Uncomment the following directives if you want your build host to stay
clean from local docker images after successfull push. But, there is a
caveat if you do so! Each build job produces at least one new image layer
which gets pushed to the registry. This could blow up your registry after
a couple of time! For garbage collection check this out:
https://docs.docker.com/registry/garbage-collection/ */
/* echo "Remove local docker images after successfull push to registry..." */
/* sh '/usr/bin/docker rmi -f "${imageName}:${BRANCH_NAME}"' */
/* sh '/usr/bin/docker rmi -f "${dockerRegistryRepo}/${imageName}:${BRANCH_NAME}"' */
}
}
}
}