pipeline { agent { kubernetes { yaml """ apiVersion: v1 kind: Pod metadata: name: kaniko spec: containers: - name: kaniko image: gcr.io/kaniko-project/executor:v1.5.1-debug imagePullPolicy: Always command: - /busybox/cat tty: true volumeMounts: - name: jenkins-docker-cfg mountPath: /kaniko/.docker volumes: - name: jenkins-docker-cfg projected: sources: - secret: name: docker-credentials items: - key: data path: config.json """ } } environment { IMAGE_PUSH_DESTINATION="ghcr.io/ruakij/routingtabletowg" IMAGE_TAG="" } stages { stage("Pre-build") { steps { checkout scm script{ def version = sh (returnStdout: true, script: "git describe --tags --long --always").trim() env.IMAGE_TAG = "$version" echo "Version: $version" echo "Image-Tags: $env.IMAGE_TAG" def parts = version.split('.') if(parts.size() > 0){ for (int i = 0; i < parts.size(); i++) { env.IMAGE_TAG += parts[0..i].join(".") if (i < parts.size() - 1) { env.IMAGE_TAG += "," } } } if (GIT_BRANCH == "main") { env.IMAGE_TAG += ",latest" } else { env.IMAGE_TAG += ",$GIT_BRANCH" } echo "Image-Tags: $env.IMAGE_TAG" } } } stage('Build with Kaniko') { steps { container(name: 'kaniko', shell: '/busybox/sh') { withEnv(['PATH+EXTRA=/busybox']) { // Use the image tag variable as part of the image name when you build and push the image with kaniko sh '''#!/busybox/sh /kaniko/executor --context `pwd` --destination $IMAGE_PUSH_DESTINATION --force --build-arg=IMAGE_TAG=$IMAGE_TAG ''' } } } } } }