# 制品

    # 制品分类

    制品的分类可从不同维度进行划分。

    # 应用制品和项目制品

    应用制品包含部署一个应用所需的全部内容,包括镜像、依赖的 Addon 以及各类配置信息。

    项目制品包含一个或多个部署模式,每个部署模式由一个或多个应用制品按照特定的分组顺序组成。部署模式之间可存在依赖关系。部署项目制品时,可选择您定义的部署模式,平台将根据既定顺序部署模式中的应用制品。被依赖的模式将优先部署,同一分组内的应用制品将同时部署。

    例如,下图是一个由 10 个应用制品组成的项目制品。

    其中,modeA、modeB 和 modeC 为自定义的部署模式,modeA 和 modeB 依赖于 modeC,则部署该项目制品时,若选择部署 modeA 或 modeB,平台将优先部署 modeC,随后部署 modeA 或 modeB。

    # 临时制品和非临时制品

    通过流水线创建应用制品时,若制品版本或代码分支符合以下条件之一,则创建的制品为非临时制品,否则即为临时制品:

    • 在 Release Action 中填写 tag_version

    • 代码分支符合以下格式(即以 release/ 为前缀,后缀部分符合 语义化版本 2.0.0 (opens new window) 规范)。

      release/{[v]主版本号}.{次版本号}[.修订版本号][-先行版本号][+版本无关的构建信息]
      

    平台每日进行垃圾回收,回收创建于 72 小时前且当前无引用的临时制品及其镜像,非临时制品则不会被回收。

    创建项目制品时,仅可引用非临时制品,且项目制品也为非临时制品。

    进入 DevOps 平台 > 项目 > 应用中心 > 制品,可查看并管理该项目下的所有非临时制品。

    临时制品仅可在创建该制品的流水线上,通过 Release Action 的链接查看。

    # 正式制品/非正式制品

    所有制品在创建后均为非正式制品,您可在 应用中心 > 制品 中将指定制品转为正式版。转正后的制品即为正式制品。

    正式制品表示该制品为正式版本,不可修改(包括编辑、删除或转正)。

    # 创建制品

    创建制品前请先完成项目的集群设置和分支规则配置。

    • 进入 DevOps 平台 > 项目 > 项目设置 > 通用设置 > 项目信息 设置集群。

    • 进入 DevOps 平台 > 项目 > 项目设置 > 代码仓库 > 分支规则 创建分支规则。

    # 创建应用制品

    当前应用制品仅支持通过 Release Action 创建。

    1. 进入 应用中心 > 应用 > 代码,创建流水线文件,添加 Action(任务类型 > 应用打包发布制品)并填写配置参数。

    2. 进入 应用中心 > 应用 > 流水线,选择分支和流水线,点击 新建流水线,完成构建后执行流水线。

    3. 流水线执行成功即代表制品创建成功。

    流水线将根据所在分支匹配分支规则,确认制品部署环境。

    # 创建项目制品

    项目制品支持通过选择应用创建、上传文件创建和通过 Project Artifacts Action 创建。

    进入 DevOps 平台 > 项目 > 应用中心 > 制品 > 项目制品,点击右上角 新建制品,选择创建方式。

    • 选择应用创建

    提示

    目前该方式暂不支持添加自定义模式。使用该方式创建的项目制品将包含一个名为 default 的部署模式,模式中包含您选择的应用制品组。

    1. 输入版本。版本是项目制品在项目维度下的唯一标识,不可与其他项目制品版本重复,可由英文字母、数字、下划线(_)、中划线(-)及句点(.)组成。

    2. 选择应用制品(需提前在本项目的应用下创建应用制品)。您可对应用制品进行分组。在部署过程中,同组的应用制品无先后顺序,不同组的应用制品则根据编号顺序进行部署。

      例如,应用制品 A 依赖于应用制品 B,选择应用制品时,可将应用制品 B 设为第一组,应用制品 A 设为第二组,则部署时制品 B 将先于制品 A 部署。此外,同一应用下的制品不可重复选择。

    3. 填写内容。内容即对该项目制品的描述,可以是 Changelog 或备注信息,支持 Markdown 语法。

    4. 点击 提交,完成项目制品创建。

    • 选择文件创建

    该方式用于满足将项目制品从某一项目导入至另一项目的场景。若选择文件创建,需提前下载项目制品包(ZIP 格式)至本地(具体请参见 下载制品),随后在目标项目中上传该文件。

    平台将自动解析文件中项目制品的版本及依赖的应用制品信息。

    提示

    • 上传的项目制品中引用的应用制品,其对应应用必须存在于本项目中,否则将上传失败。
    • 若本项目中不存在上传的项目制品引用的应用制品,则平台将根据制品包的内容自动创建应用制品。若已存在相同版本的应用制品,则取消创建,直接引用该应用制品。若制品包中应用制品的 dice.yml 与已存在的同名应用制品的 dice.yml 不同,则制品包中的 dice.yml 将被忽略。
    • 通过 Project Artifacts Action 创建
    1. 在流水线中添加项目打包发布制品 Action。

    1. 通过代码编辑模式编辑该 Action。

      Project Artifacts Action 的 YAML 描述有两种形式:

      • 未指定模式
      version: "1.1"
      stages:
        - stage:
            - project-artifacts:
                alias: project-artifacts
                description: 应用制品发布到项目制品
                version: "1.0"
                params:
                  changeLog: auto compose from applications // 项目制品的内容
                  groups:                                   // 应用制品分组,由一个应用描述列表组成
                    - applications:                         // 应用列表
                        - branch: release/1.0               // 应用制品分支, 选择该分支下最新的发布到项目
                          name: applicationA                // 应用名称
                        - releaseID: a9af810ebd884107a3b9a  // 指定的应用制品 ID, 优先级高于 branch
                    - applications:
                        - branch: release/1.0
                          name: applicationB
                        - branch: master
                          name: applicationC
                  version: 1.0.0+${{ random.date }}         // 项目 release 的版本号
      

      通过该方式创建的项目制品将包含一个名为 default 的部署模式,其中包含您在 groups 字段中指定的所有应用制品。 上述 YAML 描述的项目制品如下:

      • 指定模式
      version: "1.1"
      stages:
        - stage:
            - project-artifacts:
                alias: project-artifacts
                description: 应用制品发布到项目制品
                version: "1.0"
                params:
                  changeLog: auto compose from applications // 项目制品的内容
                  modes:                                    // 部署模式,优先级高于 groups
                    modeA: 
                      dependOn:                             // 依赖模式
                        - modeB
                      expose: true                          // 是否展示
                      groups:
                        - applications:                         
                            - branch: release/1.0               
                              name: applicationA 
                            - releaseID: a9af810ebd884107a3b9a
                        - applications:
                            - branch: release/1.0
                              name: applicationB
                    modeB:
                      expose: false
                      groups:
                        - applications:
                            - branch: release/1.0
                              name: applicationC
                    modeC:
                      expose: true
                      groups:
                        - applications:
                            - branch: master
                              name: applicaitonD
                  version: 1.0.0+${{ random.date }}         // 项目 release 的版本号
      

      您可以通过该方式指定模式名称,并在各模式中自定义分组。该方式的优先级高于第一种方式,即,若 Action 的 YAML 描述中同时指定了 groups 字段和 modes 字段,则仅有 modes 字段生效,groups 字段将被忽略。上述 YAML 描述的项目制品如下:

      其中 modeB 指定 expose: false,表示该模式无法在项目制品详情页中展示,部署时亦不可选择。仅在选择 modeA 时,modeB 才会被部署。

    # 制品操作

    在制品页面,您可对制品进行删除、下载、编辑等操作。

    其中,非正式制品支持转为正式版和删除的批量操作。

    # 删除制品

    • 应用制品

      如需删除应用制品,则该应用制品需满足以下条件:

      • 当前无该应用制品部署的 Runtime。
      • 无项目制品引用该应用制品。
      • 该应用制品为非正式版。

      删除应用制品后,该应用制品的镜像也将从镜像仓库中删除。

    • 项目制品

      非正式项目制品均可删除。

    # 下载制品

    仅项目制品支持下载。

    点击 下载,您将得到一个 ZIP 格式的文件,其中包含项目制品及其引用的应用制品的信息。您可在平台的其他项目环境中上传该制品包以创建新的项目制品。

    # 编辑制品

    仅非临时、非正式制品支持编辑。

    • 应用制品:支持修改版本和内容。
    • 项目制品:支持修改版本、应用制品和内容。

    # 转正制品

    仅非临时、非正式制品支持转为正式版。

    应用制品或项目制品转为正式版后,将不可修改(包括编辑、删除或转正)。

    若项目制品转为正式版,其引用的非正式应用制品也将自动转为正式版。

    # 查看引用制品

    仅项目制品支持查看引用制品。

    点击 查看引用制品,页面将跳转至应用制品,并展示该项目制品引用的所有应用制品。

    # 制品部署

    制品部署支持两种方式,分别为通过流水线部署和通过部署单部署(具体请参见 通过流水线部署通过部署单部署)。

    目前通过流水线部署的方式暂不支持在部署项目制品时选择模式,仅支持部署项目制品中的 default 模式。