部署流程中的制品

图示

我们用一个 demo 部署流程帮助您理解制品和预期制品(expected artifacts)的工作原理。

以下是使用到的元素:

假设配置如下的部署流程:

这个部署流程声明了在启动时需要获取到制品 1(可以是一个 Docker 镜像),对应配置在部署流程配置阶段完成。另外还声明了在部署流程的 B 阶段(可以是 从执行环境中查找制品阶段)需要获取制品 2

部署流程被触发器(假设由 Webhook 触发)触发执行,触发器提供了两个制品:

虽然只有制品 1被匹配成功被绑定,但是由于触发器携带了两个制品的信息,所以在下游阶段两个制品都可以被引用。预期制品(expected artifact) 的好处是下游阶段可以直接引用,而如果下游阶段引用了制品3(没有被 expected artifacts 匹配成功的制品),那么在阶段运行时需要判断这个制品是否存在。

需要强调的是制品 1在部署流程启动时就被绑定了,如果我们像图示在下游阶段(如 Deploy Manifest)中引用制品,这个制品在部署流程开始执行时就被绑定到阶段,而不是阶段执行时才绑定。

当 B 阶段执行时,需要绑定制品2。假设是 从执行环境中查找制品 阶段,B 阶段将从其他部署流程执行环境中查找制品并绑定。

如果阶段 C 或 D 需要引用上游的制品,它们所能引用的制品源可能不同,因为阶段 C 和 D 各自的上游阶段也不相同。如图,阶段 D 无法引用制品2

部署流程执行上下文的制品可能来自于外部触发器(如上传到 CODING 制品库的 Docker 镜像),也可以从其他阶段获取,制品可以被下游的阶段所使用。

CODING 部署控制台通过 Expected artifacts 特性将其他部署流程的制品、阶段的产物(例如 Bake 阶段)与特定阶段相绑定。

触发器

下面以 GitHub 中的文件作为制品举例,在配置部署流程触发器时,可以在触发器触发部署流程使其执行前,声明必须携带的制品信息。

如果部署流程启动时无法匹配【制品匹配规则】中所定义的制品,将会按照优先级排序以下两项可获取制品的次选方案:

  1. 使用上一次执行的触发器

  2. 使用默认制品

触发器 Payloads 携带制品信息

在触发器的 payload 内容中,名为 artifacts 的键(list 类型)提供了制品列表。当部署流程被触发时,artifacts 的值将会注入到部署流程执行上下文。如下以 payload 携带 CODING docker 制品为例:

{
  "artifacts": [
    {
      "type": "coding_docker/image",
      "name": "lhkprod-docker.pkg.coding.net/cd-demo/release/nginx",
      "reference": "lhkprod-docker.pkg.coding.net/cd-demo/release/nginx:latest"
    }
  ]
}

在部署流程执行环境中查找制品

部署流程执行环境中查找制品阶段可以帮助用户跨应用的引用制品。查找条件仅需提供部署流程 ID(搜索部署流程的执行历史)以及声明所需制品信息。

常见的使用场景是当某个镜像通过部署流程成功地部署在预发布环境后,使用正式环境对应的部署流程查找此制品用以部署到正式环境。

在部署流程之间传递制品

制品可以在部署流程之间传递,假设 A 部署流程触发了 B 部署流程执行,那么 B 部署流程可以获取到 A 部署流程中任何可用的制品;包括 A 部署流程触发器携带的制品以及 A 部署流程生成的制品。

以下两个案例说明了制品是如何在部署流程之间传递的:

  1. 在 B 部署流程的配置阶段,将 A 部署流程配置为自动触发器。当 A 部署流程执行完毕时,B 部署流程将会被触发执行,并且 B 部署流程将拥有访问 A 部署流程所有制品的权限。

  2. 子部署流程作为父部署流程的阶段

    在 A 部署流程(父部署流程)中添加类型为部署流程的阶段并指向 B 部署流程。B 部署流程将拥有上游制品的权限(上游制品指 B 部署流程被触发之前 A 部署流程的所有制品)

在阶段中生成制品

如果阶段中有【生成制品】配置项,表明其可以生成制品。

阶段生成的制品有如下两个使用场景:

  1. 绑定制品注入到阶段上下文

    在阶段(如 Deploy(Manifest))中生成的制品可供下游阶段使用。

  2. 人为地将制品注入到阶段上下文

    如果阶段本身不生成制品(如 Run Job 阶段),您可以配置默认制品,每次阶段执行时将默认制品注入到部署流程。需要注意的是,如果【Use Default Artifacts】指定的制品匹配失败,阶段将会绑定部署流程中的任意制品。

上一篇参数配置
最近更新
感谢反馈有用
感谢反馈没用