简体   繁体   中英

docker.build() in Jenkins pipeline with two tags

How can I set another tag for docker build step in the Jenkins pipeline which uses docker.build() script?

As for now I have:

docker.build("artifactory/docker/${IMAGE_NAME}:${BUILD_NO}")

and then

rtDockerPush(
  serverId: "Artifactory",
  image: "artifactory/docker/${IMAGE_NAME}:${BUILD_NO}",
  targetRepo: 'docker',
)
rtPublishBuildInfo(
  serverId: "Artifactory"
)

but I want to tag it with the :latest as well

I have tried something like:

docker.build("artifactory/docker/${IMAGE_NAME}:${BUILD_NO}","-t latest .")

but that is not working (it got published only with build number).

Any tips on that?

PS. Based on the given answer I have ended up to have two calls for the push as follow:

rtDockerPush(
  serverId: "Artifactory",
  image: "artifactory/docker/${IMAGE_NAME}:${BUILD_NO}",
  targetRepo: 'docker',
)
rtDockerPush(
  serverId: "Artifactory",
  image: "artifactory/docker/${IMAGE_NAME}:latest",
  targetRepo: 'docker',
)
rtPublishBuildInfo(
  serverId: "Artifactory"
)

You need to update your build command to:

docker.build("test-alpine:123", "test-alpine:latest .")

It will produce the following bash command underhood:

docker build -t test-alpine:123 -t test-alpine:latest .

So probably need to put this code in your Jenkinsfile:

docker.build("artifactory/docker/${IMAGE_NAME}:${BUILD_NO}","-t artifactory/docker/${IMAGE_NAME}:latest .")

To push additional tag you can use docker.push command

def customImage = docker.build("my-image:${env.BUILD_ID}")
customImage.push()

customImage.push('latest')

This is official docs code: https://www.jenkins.io/doc/book/pipeline/docker/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM