You need to enable JavaScript to run this app.
导航
通过自定义步骤 output 传递流水线产物(v2)
最近更新时间:2024.11.06 19:20:42首次发布时间:2024.10.08 17:33:35

本文为您介绍如何通过自定义步骤 output 定义输出产物,并在下游任务/步骤中引用该产物。

前提条件

操作步骤

步骤一:创建自定义步骤

定义自定义步骤的 YAML 内容,并上传至持续交付控制台。

  1. 登录 持续交付控制台,在左侧导航栏选择 模板市场 > 步骤模板

  2. 在步骤模板页面,单击 创建自定义步骤,弹出创建自定义步骤面板。

  3. 在左侧输入框,按照自定义步骤的 YAML 要求,编写步骤内容。

    注意

    需通过 outputs 定义产物,并在 script 中传递产物,将产物写入 /tekton/results/<产物name>_${CP_STEP_NAME}文件中。详情请参见示例的注释信息。

    本文使用的 YAML 示例如下:

    # 自定义步骤名称,必填项。支持英文大小写、数字、“-”中横线,长度 2~50,不允许重名。
    step: test-output
    # 自定义步骤版本,必填项。要求格式为 x.y.z,且 x,y,z 均为 [0,100] 的整数。
    version: 1.0.0
    # 自定义步骤的显示名称,必填项。支持中英文大小写、数字、“-”中横线,长度 2~50。用作步骤名称展示,不允许为空、不允许重名。
    displayName: 自定义步骤输出产物
    # 自定义步骤描述,非必填。200个字符以内,支持中英文大小写特殊字符。
    description: 通过outputs字段来指定多个需要输出的产物,并允许下游任务/步骤引用
    # 分类,必填项。目前仅支持以下分类:【构建】Build 、【测试】Test、 【部署】Deploy、 【镜像仓库】Registry、 【命令执行】Command、 【其他】Other
    category: Other
    # 运行时镜像,必填项。支持公有镜像和私有镜像。
    image: xxx.cr.volces.com/ns/busybox:latest
    # 定义步骤的输入信息,非必填。支持配置多条步骤入参。详细介绍请参见 https://www.volcengine.com/docs/6461/1108787。
    inputs:
      - name: arg1
        displayName: 参数一输入
        type: string
        required: true
        uiConfig:
          type: CodeEditor
      - name: arg2
        displayName: 参数二输入
        type: string
        required: true
        uiConfig:
          type: CodeEditor
    
    # 定义步骤的输出信息,非必填。
    outputs: 
      - name: result1
        displayName: 第一个产物结果
        type: string
      - name: result2
        displayName: 第二个产物结果
        type: string
    
    # 运行脚本,必填项、不能为空。作用类似于 Dockerfile 文件中的 ENTRYPOINT,用于指定容器启动程序及参数。
    script: |
      # 获取两个参数的输入
      result1='$(inputs.arg1)'
      result2='$(inputs.arg2)'
      # 产物需要通过文件进行传递,因此在运行脚本中,需要将产物信息写入到固定目录下的文件中
      # 要写入的固定目录为:/tekton/results/
      # 每个产物需分别将内容写入到目录下文件中,文件名格式为:<产物name>_${CP_STEP_NAME}
      # 如下所示,将第一个产物 result1的内容写入到 /tekton/results/result1_${CP_STEP_NAME}文件中
      echo -n "$result1" > /tekton/results/result1_${CP_STEP_NAME}
      # 如下所示,将第二个产物 result2的内容写入到 /tekton/results/result2_${CP_STEP_NAME}文件中
      echo -n "$result2" > /tekton/results/result2_${CP_STEP_NAME}
    
  4. 编写完成后,单击 确定。 创建成功的自定义步骤将展示在对应分类下。

步骤二:编排流水线

通过在流水线中编排一个串联的自定义步骤和命令执行任务,介绍如何在下游命令执行任务中引用上游自定义步骤的产物。

  1. 创建流水线

  2. 配置自定义步骤。

    1. 添加自定义步骤

    2. 填写自定义步骤的参数信息。本示例参数一输入:hello arg1;参数二输入:hello arg2

    3. 在任务输出处复制自定义步骤的产物表达式,备用。

  3. 配置命令执行任务。

    1. 新增一个阶段,添加命令执行任务。

    2. 填写执行的命令:使用上文复制的表达式,输出上游的两个产物信息。

      注意

      引用上游产物的表达式格式为:$(你的产物表达式)

      alt

  4. 单击 保存,保存流水线编排。

步骤三:运行流水线

  1. 在当前流水线详情页面,单击 立即运行

  2. 在弹出的确认框中,单击 确定。 流水线开始运行,系统跳转至当前流水线的详情页面。

结果验证

结合当前流水线编排可知,预期将输出以下信息:

上游第一个产物为:
hello arg1
上游第二个产物为:
hello arg2

查看流水线运行结果,由命令执行任务的日志信息可看出结果符合预期。