使用Bitbucket管道将多个Docker标签推送到Artifactory

问题描述 投票:2回答:1

我在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元素,但是它仅使用了第二个。而且我查看了文档,但没有找到有关如何一次推送多个标签的任何信息。

artifactory bitbucket-pipelines
1个回答
0
投票

使用管道推动之前,您必须使用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

© www.soinside.com 2019 - 2024. All rights reserved.