首页 > 解决方案 > 如何不使用 jfrog cli 提升命令将所有 Docker 标签从 dev repo 提升到 prod

问题描述

(我是 Artifactory 方面的新手)我使用 JFrog CLI 将构建(docker 图像)从 dev repo 推广到 prod。当我构建时,我创建了三个标签,一个VERSION,一个latest和一个带有构建 ID 的标签。当我使用“ jfrog rt bpr”命令进行升级时,我不想升级 build-id 标签,只升级VERSIONlatest

我使用 Gitlab 构建 Docker 镜像,并使用 JFrog CLI 推送镜像、使用 X 射线扫描并将构建信息发布到 Artifactory。

我的过程是在 Gitlab 管道中,我使用三个标签构建 docker 映像。

然后我将它部署到 Artifactory 中的开发存储库,jfrog rt docker-push...所有三个标签都带有“”,然后将构建信息发布到 Artifactory。

然后我在 Gitlab 管道的测试阶段测试 Docker 映像,然后使用 JFrog cli 对构建进行 X 射线扫描。

当一切正常时,我想使用 JFrog cli 将 Docker 映像提升到 Artifactory 中的 prod 存储库。但是,这会提升所有三个标签,但我只想提升VERSIONlatest标签,而不是仅用作“快照”标签的第三个标签。

这可以使用 jfrog cli 提升命令吗?或者有没有更好的方法来思考使用 Artifactory 从开发到产品的命名、标记和提升图像的整个过程?

This is the build stage:

# Build docker images
    - > 
      docker build       
      -t $DOCKER_REGISTRY/$CI_PROJECT_NAME:latest
      -t $DOCKER_REGISTRY/$CI_PROJECT_NAME:$VERSION
      -t $DOCKER_REGISTRY/$CI_PROJECT_NAME:$CI_PIPELINE_ID
      .        
    # Push to Artifactory's dev repo via the virtual repo
    - jfrog rt docker-push $DOCKER_REGISTRY/$CI_PROJECT_NAME:latest docker-virtual --build-name=$CI_PROJECT_NAME --build-number=$CI_PIPELINE_ID    
    - jfrog rt docker-push $DOCKER_REGISTRY/$CI_PROJECT_NAME:$VERSION docker-virtual --build-name=$CI_PROJECT_NAME --build-number=$CI_PIPELINE_ID    

    # Collect environment variables
    - jfrog rt build-collect-env $CI_PROJECT_NAME $CI_PIPELINE_ID    

    # Push build info to Artifactory, but exclude sensitive information such as passwords 
    - jfrog rt build-publish --build-url=$CI_PIPELINE_URL --env-exclude="*DOCKER_AUTH_CONFIG*;*PASSWORD*;*KEY*" $CI_PROJECT_NAME $CI_PIPELINE_ID


This is the promote stage:

- jfrog rt bpr --status=STABLE --copy=true $CI_PROJECT_NAME $CI_PIPELINE_ID docker-prod-local

标签: artifactoryjfrog-cli

解决方案


推荐阅读