使用 Jfrog 使用与环境相对应的 docker 镜像创建和更新构建。 (开发|暂存|产品)

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

我使用 Gitlab 进行 CI/CD 并使用 Artifactory 作为图像存储库。我试图通过项目的环境提升更好地了解如何正确使用 Jfrog CLI 和 Artifactory (AF) 创建构建并更新它。

这些是我当前将图像推送至自动对焦所采取的步骤。例如,我使用“myproj”作为构建名称,使用“1234”作为构建编号。

开发者:

  • docker 构建:dev-1234
  • jfrog rt docker 推送
  • jfrog rt 公元前
  • jfrog RT 包
  • jfrog rt bp

分期:

  • jfrog docker pull
  • docker 标签:staging-1234
  • jfrog rt docker 推送
  • jfrog rt bp
  • jfrog rt build-promote --status=staging

产品:

  • jfrog docker pull
  • docker标签:prod-1234
  • jfrog rt docker 推送
  • docker 标签:最新
  • jfrog rt docker 推送
  • jfrog rt bp
  • jfrog rt build-promote --status=prod

最后我在 AF 中有 3 个版本,每个版本包含 :最新的 :产品1234 :分期-1234

我想做的是拥有 1 个包含所有 4 个图像的版本。如果删除 build-publish 命令,我可以保留单个 AF 构建,该构建在每个阶段都更新了状态。但是,在管道的末尾,它显示 status=prod,同时仅引用 :dev 图像。所有 4 个图像都正在创建并存储在预期的存储库中,所以我知道它们至少正在将其纳入 AF 中。

我是否误解了 AF 构建背后的意图?还是这个用户错误?

docker gitlab artifactory jfrog-cli
1个回答
0
投票

如果我正确理解你的问题,你希望有 1 个构建引用所有 (4) 个 docker 镜像,但你有 3 个构建引用 3 个单独的 docker 镜像。如果没有

code formatting
文字,理解你的观点有点困难。

JFrog CLI 的工作方式是,只要您为任何命令指定

--build-name
--build-number
参数,它就会开始收集构建信息。

当您收集构建信息时,此构建信息以 JSON 文件形式存在于临时目录中。

指定

--build-name
--build-number
参数的任何后续命令都将附加到现有的临时构建信息。

临时构建信息 JSON 文件将被删除,当:

  • 您手动删除它
  • 使用
    jf rt bp
    命令上传构建信息。

所以你可以做三件事:

  • 您要么在上传之前收集所有容器的所有构建信息。由于 JFrog CLI 的工作原理,这显然必须在同一台物理计算机上完成。这不适用于在不同构建代理上构建容器的管道。
  • 或者您可以使用
    jf rt build-append
    命令。此命令将创建一个引用所有附加构建的“主”构建。
  • 完全跳过“构建升级”,并使用 Release Bundles V2

建设推广存在很多疏忽和问题。 (例如,您无法推广聚合的构建信息)。 Release Bundles V2 似乎解决了 Build Promotion 的许多缺点。

希望这对您有帮助。

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