【问题标题】:Pushing multiple Docker tags to Artifactory using Bitbucket pipe使用 Bitbucket 管道将多个 Docker 标签推送到 Artifactory
【发布时间】:2019-09-25 21:31:19
【问题描述】:

我在 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} 值作为标签创建图像。

需要将${DOCKER_REGISTRY}/artifact_name:latest推送到Artifactory。有没有办法用单管做到这一点?如何将 ${BITBUCKET_COMMIT}latest 标签都推送到 Artifactory?

我尝试在配置中添加另一个 DOCKER_IMAGE_TAG 元素,但它只是使用了第二个元素。而且我查看了文档,但没有找到有关如何一次推送多个标签的任何信息。

【问题讨论】:

    标签: artifactory bitbucket-pipelines


    【解决方案1】:

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

    【讨论】:

    • 这对我不起作用。根据您的示例,我已尝试在构建命令中标记两次(请参阅更新的示例),以及将标记作为单独的步骤。 artifactory-docker 管道只推送 DOCKER_IMAGE_TAG 参数指定的标签。
    猜你喜欢
    • 2018-10-05
    • 2019-03-18
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    相关资源
    最近更新 更多