我在Bitbucket中有一个构建Docker映像的管道。然后,它使用artifactory-docker管道将该图像推送到Artifactory。这是我的管道的相关部分。
- docker build
--pull
--tag "${DOCKER_REGISTRY}/artifact_name:${BITBUCKET_COMMIT}"
--tag "${DOCKER_REGISTRY}/artifact_name:latest"
--target "artifact_name"
--file "path/to/Dockerfile" .
- pipe: JfrogDev/artifactory-docker:0.2.12
variables:
ARTIFACTORY_URL: $ARTIFACTORY_URL
ARTIFACTORY_USER: $ARTIFACTORY_USER
ARTIFACTORY_PASSWORD: $ARTIFACTORY_PASSWORD
DOCKER_TARGET_REPO: $DOCKER_TARGET_REPO
DOCKER_IMAGE_TAG: '${DOCKER_REGISTRY}/artifact_name:${BITBUCKET_COMMIT}'
FOLDER: 'artifact_name'
BUILD_NAME: 'artifact_name'
这将按预期工作,在Artifactory中以正确的${BITBUCKET_COMMIT}
值作为标签创建图像。
I 也需要将${DOCKER_REGISTRY}/artifact_name:latest
推送到Artifactory。有没有办法用单个管道做到这一点?如何将${BITBUCKET_COMMIT}
和latest
标签同时推送到Artifactory?
我已经尝试在配置中添加另一个DOCKER_IMAGE_TAG
元素,但是它仅使用了第二个。而且我查看了文档,但没有找到有关如何一次推送多个标签的任何信息。
使用管道推动之前,您必须使用latest
标签标记图像。
script:
- docker build -t soldev-art-docker.jfrog.team/docker-pipe-example:$BITBUCKET_BUILD_NUMBER .
# tag the image as latest and docker will push both tags for ya
- docker tag soldev-art-docker.jfrog.team/docker-pipe-example:$BITBUCKET_BUILD_NUMBER soldev-art-docker.jfrog.team/docker-pipe-example:latest
# now both tags will be pushed to the registry
- pipe: JfrogDev/artifactory-docker:0.2.12
variables:
ARTIFACTORY_URL: '<string>'
ARTIFACTORY_USER: '${ARTIFACTORY_USER}'
ARTIFACTORY_PASSWORD: '${ARTIFACTORY_PASSWORD}'
DOCKER_IMAGE_TAG: 'soldev-art-docker.jfrog.team/docker-pipe-example:${BITBUCKET_BUILD_NUMBER}'
DOCKER_TARGET_REPO: 'docker-stage-local'
这篇文章还介绍了如何处理多个标签https://stackoverflow.com/a/31963727/2183102