Files
docker-nginx-full/.jenkins/Jenkinsfile
T

119 lines
3.6 KiB
Groovy

pipeline {
triggers {
cron( env.BRANCH_NAME.equals('master') ? 'H 1 * * *' : '')
}
agent {
label 'docker-multiarch'
}
options {
buildDiscarder(logRotator(numToKeepStr: '5'))
disableConcurrentBuilds()
ansiColor('xterm')
}
environment {
DOCKERHUB_NAMESPACE = 'nginxproxymanager'
IMAGE = 'nginx-full'
BUILDX_NAME = "${IMAGE}_${GIT_BRANCH}"
BRANCH_LOWER = "${BRANCH_NAME.toLowerCase().replaceAll('/', '-')}"
// Software versions; OpenResty does not support Lua >= 5.2
OPENRESTY_VERSION = '1.27.1.2'
CROWDSEC_OPENRESTY_BOUNCER_VERSION = '0.1.7'
LUA_VERSION = '5.1.5'
LUAROCKS_VERSION = '3.3.1'
}
stages {
stage('Environment') {
parallel {
stage('Master') {
when {
branch 'master'
}
steps {
script {
env.BASE_IMAGE = "${DOCKERHUB_NAMESPACE}/${IMAGE}:latest"
env.BUILDX_PUSH_TAGS = "-t ${BASE_IMAGE}"
env.BUILDX_PUSH_TAGS_CERTBOT = "-t ${DOCKERHUB_NAMESPACE}/${IMAGE}:certbot"
env.BUILDX_PUSH_TAGS_CERTBOT_NODE = "-t ${DOCKERHUB_NAMESPACE}/${IMAGE}:certbot-node"
}
}
}
stage('Other') {
when {
not {
branch 'master'
}
}
steps {
script {
// Defaults to the Branch name, which is applies to all branches AND pr's
env.BASE_IMAGE = "${DOCKERHUB_NAMESPACE}/${IMAGE}:github-${BRANCH_LOWER}"
env.CERTBOT_IMAGE = "${BASE_IMAGE}-certbot"
env.BUILDX_PUSH_TAGS = "-t ${BASE_IMAGE}"
env.BUILDX_PUSH_TAGS_CERTBOT = "${BUILDX_PUSH_TAGS}-certbot"
env.BUILDX_PUSH_TAGS_CERTBOT_NODE = "${BUILDX_PUSH_TAGS}-certbot-node"
}
}
}
}
}
stage('Base') {
environment {
BUILDX_NAME = "${IMAGE}_${GIT_BRANCH}_base"
}
steps {
withCredentials([usernamePassword(credentialsId: 'jc21-dockerhub', passwordVariable: 'DOCKER_PASS', usernameVariable: 'DOCKER_USER')]) {
sh 'docker login -u "${DOCKER_USER}" -p "${DOCKER_PASS}"'
sh "./scripts/buildx --push -f docker/Dockerfile ${BUILDX_PUSH_TAGS}"
}
}
}
stage('Acme Clients') {
environment {
BUILDX_NAME = "${IMAGE}_${GIT_BRANCH}_node"
}
steps {
withCredentials([usernamePassword(credentialsId: 'jc21-dockerhub', passwordVariable: 'DOCKER_PASS', usernameVariable: 'DOCKER_USER')]) {
sh 'docker login -u "${DOCKER_USER}" -p "${DOCKER_PASS}"'
sh "./scripts/buildx --push -f docker/Dockerfile.certbot ${BUILDX_PUSH_TAGS_CERTBOT}"
}
}
}
stage('Dev Tools') {
environment {
BUILDX_NAME = "${IMAGE}_${GIT_BRANCH}_node"
}
steps {
withCredentials([usernamePassword(credentialsId: 'jc21-dockerhub', passwordVariable: 'DOCKER_PASS', usernameVariable: 'DOCKER_USER')]) {
sh 'docker login -u "${DOCKER_USER}" -p "${DOCKER_PASS}"'
sh "./scripts/buildx --push -f docker/Dockerfile.certbot-node ${BUILDX_PUSH_TAGS_CERTBOT_NODE}"
}
}
}
stage('PR Comment') {
when {
allOf {
changeRequest()
not {
equals expected: 'UNSTABLE', actual: currentBuild.result
}
}
}
steps {
script {
def comment = pullRequest.comment("""Docker Image for build ${BUILD_NUMBER} is available on [DockerHub](https://cloud.docker.com/repository/docker/${DOCKERHUB_NAMESPACE}/${IMAGE}) as:
- `${DOCKERHUB_NAMESPACE}/${IMAGE}:github-${BRANCH_LOWER}`
- `${DOCKERHUB_NAMESPACE}/${IMAGE}:github-${BRANCH_LOWER}-certbot`
- `${DOCKERHUB_NAMESPACE}/${IMAGE}:github-${BRANCH_LOWER}-certbot-node`
""")
}
}
}
}
post {
always {
printResult(true)
}
}
}