Jenkinsfile (2812B)
1 pipeline { 2 agent { 3 label 'docker' 4 } 5 triggers { 6 pollSCM('H/5 * * * *') // every ~5 minutes 7 cron('H 3 * * 0') // every week once 8 } 9 10 // 👇 Fill these for your setup 11 environment { 12 // Project 13 PROJECT = 'gitreef' 14 GIT_URL = "/var/git/${PROJECT}.git" 15 GIT_BRANCH = 'trunk' 16 GIT_CREDENTIALS = '' 17 // Docker 18 REGISTRY = 'docker.it-jaros.com' 19 PLATFORMS = 'linux/arm64/v8,linux/amd64' 20 IMAGE_NAME = "${REGISTRY}/${PROJECT}" 21 DOCKER_HUB = "jarlucmat/${PROJECT}" 22 ALPINE_VERSION = 'latest' 23 // Maven 24 } 25 26 stages { 27 stage('Checkout') { 28 steps { 29 script { 30 if (env.GIT_CREDENTIALS?.trim()) { 31 checkout([$class: 'GitSCM', 32 branches: [[name: "*/${GIT_BRANCH}"]], 33 userRemoteConfigs: [[url: GIT_URL, credentialsId: GIT_CREDENTIALS]], 34 ]) 35 } else { 36 git branch: GIT_BRANCH, url: GIT_URL 37 } 38 } 39 } 40 } 41 42 stage('Extract vars') { 43 steps { 44 script { 45 env.GIT_SHA = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim() 46 env.APP_VERSION = sh(script: "cat src/version", returnStdout: true).trim() 47 } 48 } 49 } 50 51 stage('Docker buildx (multi-arch)') { 52 steps { 53 withCredentials([ 54 usernamePassword( 55 credentialsId: 'docker', 56 usernameVariable: 'DOCKER_USER', 57 passwordVariable: 'DOCKER_PASS' 58 ), 59 usernamePassword( 60 credentialsId: 'docker-hub', 61 usernameVariable: 'DOCKER_HUB_USER', 62 passwordVariable: 'DOCKER_HUB_PASS' 63 ) 64 ]) { 65 sh ''' 66 docker version 67 docker buildx version 68 docker buildx use jenkins || docker buildx create --name jenkins --driver docker-container --use 69 docker buildx inspect --bootstrap 70 71 echo "$DOCKER_PASS" | docker login $REGISTRY -u "$DOCKER_USER" --password-stdin 72 echo "$DOCKER_HUB_PASS" | docker login -u "$DOCKER_HUB_USER" --password-stdin 73 74 DOCKER_BUILDKIT=1 docker buildx build \ 75 --platform ${PLATFORMS} \ 76 --build-arg APP_VERSION=${APP_VERSION} \ 77 --build-arg ALPINE_VERSION=${ALPINE_VERSION} \ 78 -t ${IMAGE_NAME}:${GIT_SHA} \ 79 -t ${DOCKER_HUB}:${GIT_SHA} \ 80 -t ${IMAGE_NAME}:${APP_VERSION} \ 81 -t ${DOCKER_HUB}:${APP_VERSION} \ 82 -t ${IMAGE_NAME}:${APP_VERSION}-alpine${ALPINE_VERSION} \ 83 -t ${DOCKER_HUB}:${APP_VERSION}-alpine${ALPINE_VERSION} \ 84 -t ${IMAGE_NAME}:latest \ 85 -t ${DOCKER_HUB}:latest \ 86 --push \ 87 . 88 ''' 89 } 90 } 91 } 92 } 93 }