搜索

关于 OpenShift Pipelines

download PDF
Red Hat OpenShift Pipelines 1.13

OpenShift Pipelines 简介

Red Hat OpenShift Documentation Team

摘要

本文档概述 OpenShift Pipelines 功能。它还包括发行注记以及如何获得支持的详细信息。

第 1 章 Red Hat OpenShift Pipelines 发行注记

Red Hat OpenShift Pipelines 是基于 Tekton 项目的一个云原生 CI/CD 环境,它提供:

  • 标准 Kubernetes 原生管道定义 (CRD)。
  • 无需 CI 服务器管理开销的无服务器管道。
  • 使用任何 Kubernetes 工具(如 S2I、Buildah、JIB 和 Kaniko)构建镜像。
  • 不同 Kubernetes 发布系统间的可移植性。
  • 用于与管道交互的强大 CLI。
  • 使用 OpenShift Container Platform Web 控制台的 Developer 视角集成用户体验。

如需了解 Red Hat OpenShift Pipelines 的概述,请参阅了解 OpenShift Pipelines

1.1. 兼容性和支持列表

这个版本中的一些功能当前还只是一个技术预览。它们并不适用于在生产环境中使用。

在下表中,被标记为以下状态的功能:

TP

技术预览

GA

公开发行

表 1.1. 兼容性和支持列表
Red Hat OpenShift Pipelines 版本组件版本OpenShift 版本支持状态

Operator

Pipelines

触发器

CLI

Hub

Pipelines 作为代码(Pipelines as Code)

结果

  

1.13

0.53.x

0.25.x

0.33.x

0.19.x (GA)

1.15.x (TP)

0.22.x (GA)

0.8.x (TP)

4.12, 4.13, 4.14

GA

1.12

0.50.x

0.25.x

0.32.x

0.17.x (GA)

1.14.x (TP)

0.21.x (GA)

0.8.x (TP)

4.12, 4.13, 4.14

GA

1.11

0.47.x

0.24.x

0.31.x

0.16.x (GA)

1.13.x (TP)

0.19.x (GA)

0.6.x (TP)

4.12, 4.13, 4.14

GA

1.10

0.44.x

0.23.x

0.30.x

0.15.x (TP)

1.12.x (TP)

0.17.x (GA)

不适用

4.10, 4.11, 4.12, 4.13

GA

1.9

0.41.x

0.22.x

0.28.x

0.13.x (TP)

1.11.x (TP)

0.15.x (GA)

不适用

4.10, 4.11, 4.12, 4.13

GA

1.8

0.37.x

0.20.x

0.24.x

0.9.0 (TP)

1.8.x (TP)

0.10.x (TP)

不适用

4.10, 4.11, 4.12

GA

1.7

0.33.x

0.19.x

0.23.x

0.8.0 (TP)

1.7.0 (TP)

0.5.x (TP)

不适用

4.9, 4.10, 4.11

GA

1.6

0.28.x

0.16.x

0.21.x

不适用

不适用

不适用

不适用

4.9

GA

1.5

0.24.x

0.14.x (TP)

0.19.x

不适用

不适用

不适用

不适用

4.8

GA

1.4

0.22.x

0.12.x (TP)

0.17.x

不适用

不适用

不适用

不适用

4.7

GA

如果您有疑问或希望提供反馈信息,请向产品团队发送邮件 pipelines-interest@redhat.com

1.2. 使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

1.3. Red Hat OpenShift Pipelines 正式发布 1.13 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.13 包括在 OpenShift Container Platform 4.12 及更新的版本中。

1.3.1. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.13 中的新内容:

注意

在升级到 Red Hat OpenShift Pipelines Operator 1.13 之前,请确保至少在集群中安装 OpenShift Container Platform 4.12.19 或 4.13.1 版本。

1.3.1.1. Pipelines
  • 在此次更新之前,Source-to-Image (S2I)集群任务使用了一个技术预览中的基本 S2I 容器镜像。在这个版本中,S2I 集群任务使用了发布并完全支持的基本 S2I 容器镜像。
  • 在这个版本中,您可以启用设置,以便在取消任务运行时,OpenShift Pipelines 会停止任务运行的 pod,但不会删除 pod。要启用此设置,在 TektonConfig 自定义资源(CR)中将 pipeline.options.configMaps.feature-flags.data.keep-pod-on-cancel spec 设置为 truepipeline.enable-api-fields spec 设置为 alpha
  • 在此次更新之前,您必须启用 alpha 功能,以便对任务级别设置计算资源限制。在这个版本中,您可以使用 TaskRun CR 的 computeResources spec 为任务设置资源限值。
  • 在这个版本中,当指定任务和使用 displayName 参数时,您可以使用包含显示名称中的参数、结果或上下文变量的参数,如 $(params.application), $(tasks.scan.results.report), $(context.pipeline.name)
  • 在这个版本中,当使用 hub 解析器指定远程管道或任务时,您可以在 version 参数中使用 inequation 约束,如 > =0.2.0,< 1.0.0
  • 在这个版本中,当指定任务时,您可以在 when 表达式中使用通用表达式语言(CEL)表达式。要使用这个功能,您必须在 TektonConfig CR 中将 pipeline.options.configMaps.feature-flags.data.enable-cel-in-whenexpression spec 设置为 true
  • 在这个版本中,当在 PipelineRun CR spec 中指定管道时,您可以在后续内联任务中引用由内联任务生成的结果。

    用法示例

      apiVersion: tekton.dev/v1
      kind: Task
      metadata:
        name: uid-task
      spec:
        results:
          - name: uid
        steps:
          - name: uid
            image: alpine
            command: ["/bin/sh", "-c"]
            args:
              - echo "1001" | tee $(results.uid.path)
      ---
      apiVersion: tekton.dev/v1
      kind: PipelineRun
      metadata:
        name: uid-pipeline-run
      spec:
        pipelineSpec:
          tasks:
          - name: add-uid
            taskRef:
              name: uid-task
          - name: show-uid
            taskSpec:
              steps:
                - name: show-uid
                  image: alpine
                  command: ["/bin/sh", "-c"]
                  args:
                    - echo $(tasks.add-uid.results.uid)

  • 在这个版本中,在配置集群解析器时,您可以将 blocked-namespaces 参数的值设置为 *。使用这个设置时,只允许在 allowed-namespaces 参数中列出的命名空间,所有其他命名空间都被阻断。
1.3.1.2. Operator
  • 在这个版本中,disable-affinity-assistant 功能标记已弃用,并可能在以后的发行版本中删除。相反,在 TektonConfig CR 中,您可以将 pipeline.options.configMaps.feature-flags.data.coschedule spec 设置为以下值之一:

    • 工作区 :如果工作区分配持久性卷声明,则 OpenShift Pipelines 会调度所有任务运行,它们与同一节点共享。这是默认设置。
    • PipelineRuns: OpenShift Pipelines 将管道运行中的所有任务调度到同一节点。
    • isolate-pipelinerun :OpenShift Pipelines 将管道运行中的所有任务调度到同一节点,并只允许一个管道运行同时在节点上运行。如果所有节点都用于其他管道运行,此设置可能会延迟管道运行。
    • disabled :OpenShift Pipelines 不会将任何特定策略应用到节点。
1.3.1.3. 触发器
  • 在此次更新之前,内核拦截器总是在启动时创建 TLS secret。在这个版本中,如果集群中不存在 TLS secret,或者现有 secret 中的证书已过期,则核心拦截器会创建 TLS secret。
1.3.1.4. CLI
  • 在这个版本中,当使用 tkn bundle push 命令时,捆绑包会创建,并将创建时间设置为 1970-01-01T00:00:00Z (Unix epoch 时间)。此更改可确保从同一源创建的捆绑包镜像始终相同。您可以使用 --ctime 参数以 RFC3339 格式设置创建时间。您还可以使用 SOURCE_DATE_EPOCH 环境变量来设置创建时间。
1.3.1.5. Pipelines 作为代码(Pipelines as Code)
  • 在这个版本中,在 Pipelines as Code 中,当将 CEL 表达式用于高级事件匹配时(pipelinesascode.tekton.dev/on-cel-expression),您可以使用 headerbody 字段访问 Git 存储库供应商正文传递的完整有效负载。您可以使用此功能根据 Git 存储库发送的任何信息过滤事件。

    重要

    在 CEL 表达式中使用 CEL 表达式中有效负载的标头和正文只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

    有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,当一个推送事件触发 Pipelines as Code 管道运行时,您可以在相应的提交注释中使用 /test branch:<branchname> , /retest,/retest branch:<branchname &gt; , /cancel , 和 /cancel branch:<branchname > 命令来重新运行或取消管道运行。
  • 在这个版本中,当使用 Pipelines 作为代码时,您可以在远程管道中使用远程任务。因此,您可以在多个仓库间重复使用完整的远程管道。您可以通过添加具有相同名称的任务来覆盖远程管道中的任务。

    重要

    在远程管道中使用远程任务并覆盖任务只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

    有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,当使用 Pipelines 作为代码时,您可以查看 Git 仓库供应商中运行的 CI 管道的信息。此信息包括命名空间和关联的管道运行。

1.3.2. 可能会造成问题的更改

  • 在此次更新之前,在 Pipelines as Code 中,当使用策略组时,不是策略组的用户没有被明确允许,但允许运行 CI (通过机构所有权或其他)有时可通过创建事件(如 pull 请求或输入 ok_to_test 等命令)来执行管道运行。在这个版本中,如果配置了策略组,则只有添加到所需策略组的用户才能执行管道运行,以及作为所有者机构一部分的用户,但没有在策略组中配置的用户无法执行管道运行。

1.3.3. 已知问题

  • 要在任务运行被取消时启用保留 pod,在 TektonConfig CR 中将 pipeline.options.configMaps.feature-flags.data.keep-pod-on-cancel spec 设置为 true,您还需要在 TektonConfig CR 中将 pipeline.enable-api-fields spec 设置为 alpha
  • 如果启用了在任务运行取消时保留 pod,当因为默认超时而取消任务运行时,或者因为您在管道规格中设置了 timeput,OpenShift Pipelines 会删除 pod。

1.3.4. 修复的问题

  • 在此次更新之前,管道运行用于 Git 身份验证的 secret 可以在清理过程中从集群中删除。在这个版本中,只有在所有使用它的管道运行都被删除时,才会删除 secret。
  • 在此次更新之前,如果多个 secret 共享了相同的前缀,并使用 git 接口记录,有时使用较短的 secret 启动过程,并且日志中可能会显示较长的机密的一部分。在这个版本中,当日志中使用 secret 时,进程现在从最长 secret 开始,确保日志中没有显示任何 secret 的一部分。
  • 在此次更新之前,如果您为管道指定 results spec,管道运行可能会失败,并显示不匹配的类型错误。在这个版本中,如果您为管道指定 results spec,则管道提供的结果会被正确处理。
  • 在此次更新之前,当使用 KMS 将 Tekton 链配置为 Hashicorp Vault 时,如果连接到 Vault 时 pod 会启动崩溃。这个问题现已解决,这个错误现在记录在 Tekton Chains 控制器日志中。
  • 在此次更新之前,在使用 Tekton Chains 时,如果您配置了 storage.oci.repository 参数,会在 Tekton Chains 控制器日志中报告错误。在这个版本中,storage.oci.repository 参数会被正确处理。
  • 在此次更新之前,当使用 Hashicorp Vault KMS 配置 Tekton 链且连接到 Vault 存在问题时,Tekton Chains 控制器 pod 可能会崩溃。在这个版本中,错误会在 Tekton Chains 控制器日志中处理并记录。

1.3.5. Red Hat OpenShift Pipelines 正式发布 1.13.1 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.13.1 包括在 OpenShift Container Platform 4.12 及更新的版本中。

1.3.5.1. 修复的问题
  • 在此次更新之前,任务运行有时会失败,并显示 无法停止 sidecar 错误消息。在这个版本中,导致此故障的控制器之间的竞争条件已被修复。
  • 在此次更新之前,要在任务运行时启用保留 pod,并在 TektonConfig CR 中将 pipeline.options.configMaps.feature-flags.data.keep-pod-on-cancel spec 设置为 true,您需要在 TektonConfig CR 中将 pipeline.enable-api-fields spec 设置为 alpha。在这个版本中,在 TektonConfig CR 中将 pipeline.options.configMaps.feature-flags.data.keep-pod-on-cancel spec 设置为 true 时,会在任务运行时保留 pod,且不需要额外的设置。
  • 在此次更新之前,如果您为任务定义了一个 sidecar,OpenShift Pipelines 在创建 TaskTaskRun 自定义资源(CR)时不会在定义中验证容器镜像。在运行时,带有无效容器镜像的 sidecar 会导致任务运行失败。在这个版本中,OpenShift Pipelines 在创建 TaskTaskRun CR 时,在 sidecar 定义中验证容器镜像。
  • 在此次更新之前,OpenShift Pipelines 控制器有时会在任务评估参数时崩溃。在这个版本中,控制器不再崩溃。
  • 在此次更新之前,如果管道运行中的最终任务失败或被跳过,OpenShift Pipelines 有时会报告管道运行的验证错误。在这个版本中,OpenShift Pipelines 可以正确地报告管道运行的状态。

1.4. Red Hat OpenShift Pipelines 正式发布 1.12 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.12 包括在 OpenShift Container Platform 4.12 及更新的版本中。

1.4.1. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.12 中的新内容:

注意

在升级到 Red Hat OpenShift Pipelines Operator 1.12 之前,请确保至少在集群中安装了 OpenShift Container Platform 4.12.19 或 4.13.1 版本。

1.4.1.1. Pipelines
  • 在这个版本中,Web 控制台包含用于管道运行和任务运行的新量表指标。此指标指示因为命名空间中定义的资源配额策略或底层节点上的资源限制而被 OpenShift Container Platform 节流。
  • 在这个版本中,新的 set-security-context 功能标记默认设置为 true,以便任务运行和管道运行在带有受限 pod 安全准入策略的命名空间中运行。
  • 在这个版本中,enable-api-fields 标志默认设置为 beta。您可以使用代码中标记为 beta 的所有功能,而无需进一步更改。
  • 在这个版本中,results.tekton.dev ProductShortName 和 chains.tekton.dev 86] 保留注解不会从管道运行传递给它所创建的任务运行。
  • 在此次更新之前,CSI 卷和投射卷不会被默认启用。在这个版本中,您可以在管道中使用 CSI 卷和投射卷,而无需更改任何配置字段。
  • 在这个版本中,隔离工作区功能会被默认启用。您可以使用此功能与指定步骤和 sidecar 共享工作区,而无需与整个任务运行共享。
1.4.1.2. Operator
  • 在这个版本中,您可以为 OpenShift Pipelines 为管道运行和任务运行创建的 pod 配置默认安全性上下文约束(SCC)。您可以为不同的命名空间单独设置 SCC,并配置可为任何命名空间设置的最大(最低限制性) SCC。
  • 在这个版本中,Tekton spec 的每个组件都有一个新的 options: 标题。您可以使用此标题下的参数来控制不同组件的设置。特别是,您可以使用 platform. openshift.pipelinesAsCode.options.configMaps.pac-config-logging.data spec 下的参数来设置 Pipelines as Code 组件的日志级别。
  • 在这个版本中,您可以使用新的 spec.pipeline.performance.replicas 参数设置为 OpenShift Pipelines 控制器 pod 创建的副本数。如果您之前手动设置部署中的副本数,现在可以使用此设置来控制副本数。
  • 在这个版本中,Operator 确保存储的 API 版本在 OpenShift Pipelines 部署过程中保持不变。在 OpenShift Pipelines 1.12 中存储的 API 版本是 v1
  • 在这个版本中,您可以使用 secret 配置 S3 存储桶存储来存储 Tekton Results 日志记录信息。在配置 S3 存储桶存储时,您必须使用 TektonResult 自定义资源(CR)中的新 secret_name spec 为 secret 提供 S3 存储凭证。
1.4.1.3. Tekton Results
重要

Tekton Results 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,您可以配置 Tekton 结果来将数据存储在外部 PostgreSQL 服务器中。
  • 在这个版本中,您可以使用 Google Cloud Storage (GCS)来存储 Tekton Results 日志记录信息。您可以为 secret 提供 GCS 存储凭证,然后在 TektonResult spec 下的属性中提供 secret 名称、secret 密钥和存储桶名称。您还可以使用 Workload Identity Federation 进行身份验证。
  • 在这个版本中,任何通过 OpenShift Pipelines 验证的服务帐户都可以访问 TektonResult CR。
  • 在这个版本中,Tekton Results 包括用于具有 admin、edit 和 view 角色的服务帐户的集群角色聚合。这些服务帐户不再需要集群角色绑定,以使用 Tekton Results API 访问结果和记录。
  • 在这个版本中,您可以通过在 TektonConfig CR 中设置 prune-per-resource 布尔值字段来为每个 PipelineRunTaskRun 资源配置修剪。您还可以通过将 operator.tekton.dev/prune.prune-per-resource=true 注解添加到该命名空间中,为命名空间中的每个 PipelineRunTaskRun 资源配置修剪。
  • 在这个版本中,如果 OpenShift Container Platform 集群范围代理中存在任何更改,Operator Lifecycle Manager (OLM) 会重新创建 Red Hat OpenShift Pipelines Operator。
  • 在这个版本中,您可以通过在 TektonConfig CR 中将 config.pruner.disabled 字段的值设置为 true 来禁用修剪器功能。
1.4.1.4. 触发器
  • 在这个版本中,您可以在 Trigger CR 上配置就绪度和存活度探测。您还可以为探测设置失败阈值的值;默认值为 3。
  • 在这个版本中,OpenShift Pipelines 会在创建对 Cloud Events 请求的响应时添加 TypeSubject 值。
1.4.1.5. CLI
  • 在这个版本中,tkn pipeline logs 命令显示使用解析器引用的管道或任务的日志。
  • 在这个版本中,当输入 tkn bundle push 命令时,您可以使用 --annotate 标志来提供额外的注解。
1.4.1.6. Pipelines 作为代码(Pipelines as Code)
  • 在这个版本中,Pipelines as Code 管道运行可以包括从多个 Artifact Hub 或 Tekton Hub 实例获取的远程任务,以及同一 hub 实例的不同目录。
  • 在这个版本中,您可以使用 TektonConfig CR 中的 platform. openshift.pipelinesAsCode.options.configMaps.pac-config-logging.data spec 下的参数来设置 Pipelines 作为代码组件的日志记录级别。
  • 在这个版本中,您可以设置策略,允许某些操作只对团队成员执行,并在其他用户请求它们时拒绝操作。目前,pull_requestok_to_test 操作支持设置此类策略。
  • 在这个版本中,您可以在传入的 Webhook 中将任意参数作为 JSON 有效负载传递。OpenShift Pipelines 将这些参数传递给管道运行。要提供额外的安全层,您必须在 Repository CR 中显式定义允许的参数。
  • 在这个版本中,在 Pipelines 中带有大量远程注解的大量管道运行匹配,因为代码被优化。Pipelines as Code 只获取匹配的管道运行的远程任务。
  • 在这个版本中,您可以使用管道运行模板中的 source_url 变量从事件(如 pull 或 push 请求)中检索有关已分叉存储库的信息。

    用法示例

    apiVersion: tekton.dev/v1beta1
    kind: PipelineRun
    # ...
    spec:
      params:
        - name: source_url
          value: "{{ source_url }}"
      pipelineSpec:
        params:
          - name: source_url
    # ...

  • 在这个版本中,如果授权用户提供了一个 ok-to-test 注释,以便在未授权用户的拉取请求上触发管道运行,则作者会进一步更改分支,Pipelines as Code 会触发管道。要禁用触发管道,直到授权用户提供新的 ok-to-test 注释,请将 TektonConfig CR 中的 pipelinesAsCode.settings.remember-ok-to-test spec 设置为 false。
  • 在这个版本中,在 GitHub 状态检查页面中,显示所有任务的表包括每个任务的显示名称。
  • 在这个版本中,您可以在 GitLab 上的管道运行中配置 标签推送事件
  • 在这个版本中,您可以使用 Pipelines 中的 target_urlsource_url 字段作为代码通用表达式语言(CEL)表达式过滤注解来过滤特定目标或源的请求。
  • 在这个版本中,当使用令牌配置获取远程 GitHub URL 时,您可以包含包含斜杠的分支名称。您必须将分支名称中的斜杠编码为 %2F,以确保 Pipelines as Code 正确解析,如下例所示: https://github.com/organization/repository/blob/feature%2Fmainbranch/path/file。在本例中,分支名称为 feature/mainbranch,要获取的文件名称为 /path/file
  • 在这个版本中,您可以在 tkn pac resolve 命令中使用 --v1beta1 标志。如果使用 v1beta1 API 版本 schema 生成管道运行,请使用此标志。

1.4.2. 可能会造成问题的更改

  • 在这个版本中,您无法使用 openshift-operators 命名空间作为安装 OpenShift Pipelines 的目标命名空间。如果您使用 openshift-operators 命名空间作为目标命名空间,请在升级到 Red Hat OpenShift Pipelines Operator 版本 1.12 前更改目标命名空间。否则,在升级后,除了 targetNamespace 设置外,您将无法更改 TektonConfig CR 中的任何配置设置。
  • 在这个版本中,新的 spec.pipeline.performance.replicas 参数控制为管道运行或任务运行的每个 pod 创建的副本数。如果您之前手动设置部署中的副本数,在升级到 OpenShift Pipelines 版本 1.12 后,必须使用此参数来控制副本数。
  • 在这个版本中,TektonResult CR 不再支持以下参数:

    • db_user
    • db_password
    • s3_bucket_name
    • s3_endpoint
    • s3_hostname_immutable
    • s3_region
    • s3_access_key_id
    • s3_secret_access_key
    • s3_multi_part_size

      您必须使用 secret 提供这些参数。升级到 OpenShift Pipelines 版本 1.12 后,您必须删除并重新创建 TektonResult CR 以提供这些参数。

  • 在这个版本中,tkn pac bootstrap 命令支持 --github-hostname 标志。--github-api-url 标志已弃用。

1.4.3. 已知问题

  • 如果为命名空间配置了限制范围,但没有在限制范围中配置 pod 临时存储,pod 可以进入错误阶段,消息 Pod 临时存储使用量超过容器 0 的总限制
  • 如果要更改 TektonResult CR 中的配置,您必须删除现有 TektonResult CR,然后创建新 CR。如果您更改了现有的 TektonResult CR,则更改不会应用到 Tekton Results 的现有部署。例如,如果您将连接从内部数据库服务器更改为外部数据库服务器,反之亦然,API 会保持连接到旧数据库。

1.4.4. 修复的问题

  • 在此次更新之前,Pipelines as Code 只根据分支基本名称运行管道运行,并可能会错误地触发使用相同基本名称但不同的分支名称运行的管道。在这个版本中,Pipelines as Code 会检查基本名称和管道运行的确切分支名称。
  • 在此次更新之前,传入的 Webhook 事件可能会触发为其他事件配置的多个管道运行。在这个版本中,传入的 Webhook 事件只触发为 webhook 事件配置的管道运行。
  • 在这个版本中,在清理管道运行时,pac-gitauth secret 会被显式删除,如果管道运行上的 ownerRef 被删除。
  • 在此次更新之前,当管道运行中的任务失败并带有 reason 消息时,整个管道运行会失败,并显示 PipelineValidationFailed 原因。在这个版本中,管道运行失败,并显示与失败任务相同的原因信息。
  • 在此次更新之前,disable-ha 标志值没有正确传递给 Pipelines 控制器,高可用性(HA)功能永远不会启用。在这个版本中,您可以通过将 TektonConfig CR 中的 disable-ha 标志值设置为 false 来启用 HA 功能。
  • 在此次更新之前,当尝试复制配置映射数据提到的镜像时,skopeo-copy 集群任务将失败。在这个版本中,skopeo-copy 集群任务可以正确完成。
  • 在这个版本中,tkn pac generate -language=java 命令自动生成管道运行具有正确的注解和参数名称。
  • 在此次更新之前,只有具有管理权限的用户才能成功运行 tkn pac create repository 命令。在这个版本中,任何授权用户可以运行 tkn pac create repository 命令。
  • 在此次更新之前,/test <run-name&gt; 和 /retest <run-name > 用户注释(指定了特定管道)不会按预期触发管道运行。在这个版本中,这些注释会触发管道运行。
  • 在此次更新之前,如果带有 generateName 字段的 .tekton 文件夹中有多个管道运行,而不是 Name 字段,则管道运行会失败。在这个版本中解决了这个问题。
  • 在此次更新之前,在使用 GitLab 时,在 Pipelines as Code 中,一个管道运行由合并请求中的任何事件触发,包括添加标签和设置状态。在这个版本中,管道运行只有在有 open、reopen 或 push 事件时才会触发。现在,在合并请求中发布包含检查状态的注释。
  • 在此次更新之前,当管道运行等待批准时,检查的状态可以在 GitHub 和 Gitea 拉取请求的 check 部分中显示为 跳过。在这个版本中,会显示正确的 待处理批准 状态。
  • 在此次更新之前,捆绑包解析器有时会在尝试检索管道时将 type 设置为 Task,从而导致检索出现错误。在这个版本中,解析器使用正确的类型来检索管道。
  • 在这个版本中,在查询 Tekton 结果时处理通用表达式语言(CEL) NOT operator 的错误。
  • 在这个版本中解决了在请求记录的 LIST 操作时,在 Tekton Results API 中生成的 404 错误响应,且指定的结果为 -
  • 在此次更新之前,在 EventListener 对象中,status.address.url 字段始终被设置为默认端口。在这个版本中,status.address.url 字段被设置为与 spec.resources.kubernetesresource.serviceport 参数中指定的端口匹配。
  • 在此次更新之前,如果 GitHub API 提供了分页的响应,Pipelines as Code 只使用响应的第一页。在这个版本中,所有分页的响应都会被完全处理。
  • 在此次更新之前,当 KMS Hashicorp Vault 的主机地址错误或者 Tekton Chains 无法连接到 KMS Hashicorp Vault 时,Tekton Chains 控制器会崩溃。在这个版本中,Tekton Chains 会记录连接错误,且不会崩溃。

1.4.5. Red Hat OpenShift Pipelines 正式发布 1.12.1 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.12.1 包括在 OpenShift Container Platform 4.12 及更新的版本中。

1.4.5.1. 修复的问题
  • 在此次更新之前,如果您使用自定义控制台驱动程序将 Pipelines 配置为代码来输出到自定义控制台,则在某些情况下 Pipelines as Code 控制器会崩溃。将更改推送到拉取请求后,对此拉取请求的 CI 状态检查可能会保留为 等待报告状态,并且关联的管道运行没有完成。在这个版本中,Pipelines as Code 控制器可以正常工作。将更改推送到拉取请求后,关联的管道运行会正常完成,并更新拉取请求的 CI 状态检查。
  • 在此次更新之前,当使用 Pipelines 作为代码时,如果您在没有特定用户的 Repository 自定义资源(CR)上创建访问策略,然后将用户添加到 Git 存储库中的 OWNER 文件中,则用户将没有 Pipelines as Code CI 进程的权限。例如,如果用户创建了拉取请求到 Git 存储库。CI 进程不会在此拉取请求上自动运行。在这个版本中,没有包含在 Repository CR 的访问策略中,但包含在 OWNER 文件中,允许为存储库运行 CI 进程。
  • 在这个版本中,webhook 不支持 HTTP/2.0 协议。所有对 Red Hat OpenShift Pipelines 的 webhook 调用都必须使用 HTTP/1.1 协议。

1.4.6. Red Hat OpenShift Pipelines 正式发行 1.12.2 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.12.2 包括在 OpenShift Container Platform 4.12 及更新的版本中。

1.4.6.1. 修复的问题
  • 在此次更新之前,在超过 max-keep-runs 参数时,为最新的管道运行生成的 Git secret 已被删除。在这个版本中,Git secret 不再在最新的管道运行中删除。
  • 在这个版本中,S2I 集群任务使用正式发行(GA)容器镜像。

1.5. Red Hat OpenShift Pipelines 正式发布 1.11 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.11 包括在 OpenShift Container Platform 4.12 及更新的版本中。

1.5.1. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.11 中的新内容。

注意

在升级到 Red Hat OpenShift Pipelines Operator 1.11 之前,请确保至少在集群中安装了 OpenShift Container Platform 4.12.19 或 4.13.1 版本。

1.5.1.1. Pipelines
  • 在这个版本中,您可以在在 ARM 硬件上运行的 OpenShift Container Platform 集群上使用 Red Hat OpenShift Pipelines。您有对可以使用镜像的 ClusterTask 资源以及 ARM 硬件上的 Tekton CLI 工具的支持。
  • 在这个版本中,当您在 TektonConfig CR 中将 enable-api-fields 功能标记设置为 beta 值时,增加了对结果、对象参数、数组结果和索引到数组的支持。
  • 在这个版本中,传播的参数成为稳定功能中的一部分。此功能允许在嵌入式规格中隔离参数,以减少 Tekton 资源中的详细程度。
  • 在这个版本中,传播工作区是稳定功能的一部分。您可以通过将 enable-api-fields 功能标记设置为 alphabeta 值来启用传播工作区功能。
  • 在这个版本中,TaskRun 对象获取,并在 pod 无法运行时向用户显示 init 容器失败信息。
  • 在这个版本中,您可以在配置列表时替换管道任务的参数、结果和上下文,如以下准则:

    • matrix.params 配置中,使用 array 参数替换数组,string, array, 或 object 参数替换字符串。
    • matrix.include 配置中,使用 string, array, 或 object 参数替换字符串。
    • 将管道任务的上下文替换为 matrix.include 配置中的另一个上下文。
  • 在这个版本中,TaskRun 资源验证过程也会验证 matrix.include 参数。验证会检查所有参数是否具有值,并与指定类型匹配,对象参数具有所有必需的键。
  • 在这个版本中,在 default-configs 配置映射中添加了一个新的 default-resolver-type 字段。您可以设置此字段的值设置为配置默认解析器。
  • 在这个版本中,您可以在 pipelineRun.workspaces.subPath 配置中定义和使用 PipelineRun 上下文变量。
  • 在这个版本中,ClusterResolverBundleResolverHubResolverGitResolver 功能现在默认可用。
1.5.1.2. 触发器
  • 在这个版本中,Tekton Triggers 支持 EventListener 规格中的 AffinityTopologySpreadConstraints 值。您可以使用这些值为 EventListener 对象配置 Kubernetes 和自定义资源。
  • 在这个版本中,添加了一个 Slack 拦截器,允许您使用 Slack 中的斜杠命令提取字段。提取的字段以 HTTP 请求的格式为 data 部分发送。
1.5.1.3. Operator
  • 在这个版本中,您可以通过在 TektonConfig CR 中设置 prune-per-resource 布尔值字段来为每个 PipelineRunTaskRun 资源配置修剪。您还可以通过将 operator.tekton.dev/prune.prune-per-resource=true 注解添加到该命名空间中,为命名空间中的每个 PipelineRunTaskRun 资源配置修剪。
  • 在这个版本中,如果 OpenShift Container Platform 集群范围代理中存在任何更改,Operator Lifecycle Manager (OLM) 会重新创建 Red Hat OpenShift Pipelines Operator。
  • 在这个版本中,您可以通过在 TektonConfig CR 中将 config.pruner.disabled 字段的值设置为 true 来禁用修剪器功能。
1.5.1.4. Tekton Chains
  • 在这个版本中,Tekton 链已正式发布。
  • 在这个版本中,您可以使用带有 Tekton 链的 skopeo 工具来生成密钥,这些密钥在 cosign 签名方案中使用。
  • 当您升级到 Red Hat OpenShift Pipelines Operator 1.11 时,以前的 Tekton 链配置会被覆盖,您必须在 TektonConfig CR 中再次设置。
1.5.1.5. Tekton Hub
重要

Tekton Hub 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,在 resource API 响应中添加了一个新的 resource/<catalog_name>/<kind>/<resource_name>/raw 端点和一个新的 resourceURLPath 字段。这个版本可帮助您获取资源的最新原始 YAML 文件。
1.5.1.6. Tekton Results
重要

Tekton Results 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,在 Tekton Operator 中添加 Tekton Results 作为可选组件。
1.5.1.7. Pipelines 作为代码(Pipelines as Code)
  • 在这个版本中,Pipelines as Code 允许您使用 params 字段在 PipelineRun 资源中扩展自定义参数。您可以为 Repository CR 模板中的 custom 参数指定一个值。指定的值替换管道运行中的 custom 参数。另外,您还可以定义自定义参数,仅在指定条件与通用表达式语言 (CEL) 过滤器兼容时使用其扩展。
  • 在这个版本中,您可以通过点 GitHub 接口的 Checks 选项卡中的 Re-run all check 按钮来重新运行特定的管道或所有管道。
  • 在这个版本中,在 Pipelines as Code CLI 中添加了一个新的 tkn pac info 命令。作为管理员,您可以使用 tkn pac info 命令获取有关 Pipelines 作为代码安装的以下详情:

    • 安装 Pipelines as Code 的位置。
    • Pipelines as Code 的版本号。
    • 在集群中创建的 Repository CR 概述,以及与存储库关联的 URL。
    • 任何已安装的 GitHub 应用程序的详情。

      在这个命令中,您还可以使用 --github-api-url 参数指定自定义 GitHub API URL。

  • 在这个版本中,为所有 PipelineRun 资源启用错误检测。Pipelines as Code 会检测 PipelineRun 资源执行是否已失败,并显示错误的最后几行片断。对于 GitHub 应用程序,Pipelines as Code 会在容器日志中检测错误消息,并在拉取请求中将它们作为注解公开。
  • 在这个版本中,您可以从附加到私有 Git 存储库的私有 Tekton Hub 实例获取任务。要启用此更新,Pipelines as Code 使用私有 Tekton Hub 实例的内部原始 URL,而不是使用 GitHub 原始 URL。
  • 在此次更新之前,Pipelines as Code 提供了不包含命名空间详情的日志。在这个版本中,Pipelines as Code 将命名空间信息添加到管道日志中,以便您可以根据命名空间和调试轻松过滤它们。
  • 在这个版本中,您可以定义要获取 PipelineRun 资源定义的公认源。默认情况下,Pipelines as Code 从触发事件的分支获取 PipelineRun 资源定义。现在,您可以将 pipelinerun_provenance 设置的值配置为 default_branch,以便从 GitHub 上配置的存储库的默认分支获取 PipelineRun 资源定义。
  • 在这个版本中,您可以在以下级别扩展 GitHub 令牌的范围:

    • 存储库级别:使用此级别将范围扩展到存在于原始存储库所在的同一命名空间中的存储库。
    • 全局级别:使用此级别将范围扩展到不同命名空间中存在的存储库。
  • 在这个版本中,Pipelines as Code 会为不是所有者、collaborator 或公共成员或没有列出的用户创建的拉取请求触发 CI 管道,但没有列在 owner 文件中,但有权将更改推送到存储库。
  • 在这个版本中,自定义控制台设置允许您使用 Repository CR 中的自定义参数。
  • 在这个版本中,Pipelines as Code 将所有 PipelineRun 标签改为 PipelineRun 注解。您可以使用 PipelineRun 注解来标记 Tekton 资源,而不是使用 PipelineRun 标签。
  • 在这个版本中,您可以将 pac-config-logging 配置映射用于 watcher 和 webhook 资源,但不能用于 Pipelines as Code 控制器。

1.5.2. 可能会造成问题的更改

  • 在这个版本中,resource-verification-mode 功能标记替换为管道规格中的新的 trusted-resources-verification-no-match-policy 标志。
  • 在这个版本中,您无法编辑 Tekton Chains CR。反之,编辑 TektonConfig CR 来配置 Tekton 链。

1.5.3. 弃用和删除的功能

  • 在这个版本中,删除了对 PipelineResource 命令和 Tekton CLI 的引用的支持:

    • 从集群任务中删除管道资源
    • 从任务中删除管道资源
    • 从管道中删除管道资源
    • 删除资源命令
    • clustertask describe 命令中删除输入和输出资源
  • 在这个版本中,从 Tekton CLI 中删除了 full 嵌入式状态的支持。
  • taskref.bundlepipelineref.bundle 捆绑包已弃用,并将在以后的发行版本中删除。
  • 在 Red Hat OpenShift Pipelines 1.11 中,删除了对 PipelineResource CR 的支持,使用 Task CR。
  • 在 Red Hat OpenShift Pipelines 1.11 中,删除了对 v1alpha1.Run 对象的支持。在升级到这个版本前,您必须将对象从 v1alpha1.Run 升级到 v1beta1.CustomRun
  • 在 Red Hat OpenShift Pipelines 1.11 中,删除了 custom-task-version 功能标记。
  • 在 Red Hat OpenShift Pipelines 1.11 中,pipelinerun.status.taskRunspipelinerun.status.runs 字段已被删除,以及 embedded-status 功能标记。改为使用 pipelinerun.status.childReferences 字段。

1.5.4. 已知问题

  • 如果 prune-per-resource 布尔值字段不是任何管道或任务的一部分,则设置 prune-per-resource 布尔值字段不会删除 PipelineRunTaskRun 资源。
  • Tekton CLI 不显示使用解析器创建的 PipelineRun 资源的日志。
  • 当您根据 order_by=created_time+desc&page_size=1 查询过滤管道结果时,您获得零条记录,没有输出中的 nextPageToken 值。
  • 当您将 loglevel.pipelinesascode 字段的值设置为 debug 时,在 Pipelines as Code controller pod 中不会生成调试日志。作为临时解决方案,重启 Pipelines as Code 控制器 pod。

1.5.5. 修复的问题

  • 在此次更新之前,Pipelines as Code 在检测 PipelineRun CR 中的 generateName 字段时无法创建 PipelineRun 资源。在这个版本中,Pipelines as Code 代码支持在 PipelineRun CR 中提供 generateName 字段。
  • 在此次更新之前,当您从 web 控制台创建 PipelineRun 资源时,所有注解都会从管道复制,从而导致运行的节点出现问题。在这个版本中,这个问题已被解决。
  • 在这个版本中,tkn pr delete 命令修复了 keep 标记。现在,如果 keep 标记的值等于关联的任务运行或管道运行的数量,则命令会返回退出代码 0 和一条消息。
  • 在此次更新之前,Tekton Operator 不会公开任何自定义的性能配置字段。在这个版本中,作为集群管理员,您可以根据您的需要自定义 TektonConfig CR 中的以下性能配置字段:

    • disable-ha
    • bucket
    • kube-api-qps
    • kube-api-burst
    • threads-per-controller
  • 在这个版本中,修复了远程远程捆绑包解析器中的问题,现在在将 kind 字段与捆绑包中的 dev.tekton.image.kind 注解值进行比较时区分大小写。
  • 在此次更新之前,远程解析器的 pod 会在克隆大型 Git 存储库时内存不足。在这个版本中解决了这个问题,并增加部署远程解析器的内存限值。
  • 在这个版本中,远程解析支持 v1 类型的任务和管道资源。
  • 在这个版本中,从 API 中删除嵌入的 TaskRun 状态。嵌入的 TaskRun 状态现在作为已弃用的功能,以支持与旧版本的 client-server 兼容。
  • 在此次更新之前,所有注解都会合并到 PipelineRunTaskRun 资源中,即使执行不需要它们。在这个版本中,当您将注解合并到 PipelineRunTaskRun 资源中时,会跳过 last-applied-configuration 注解。
  • 在这个版本中解决了一个回归问题,并防止验证跳过的任务结果。例如,如果管道结果引用跳过的 PipelineTask 资源,则不会发出管道结果,并且 PipelineRun 执行不会因为缺少结果而失败。
  • 在这个版本中,使用 pod 状态消息来确定 pod 终止的原因。
  • 在此次更新之前,没有为执行 finally 任务设置默认解析器。在这个版本中,为 finally 任务设置默认解析器。
  • 在这个版本中,Red Hat OpenShift Pipelines 在使用远程解析时避免 TaskRunPipelineRun 执行的 occasional 失败。
  • 在此次更新之前,较长的管道运行会停留在集群中的运行状态,即使超时也是如此。在这个版本中解决了这个问题。
  • 在这个版本中,tkn pr delete 命令已被修复,使用 keep 标志。在这个版本中,如果 keep 标记的值等于关联的任务运行或管道运行的数量,tkn pr delete 命令会返回退出代码 0 以及一条消息。

1.5.6. Red Hat OpenShift Pipelines 正式发行 1.11.1 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.11.1 包括在 OpenShift Container Platform 4.12 及更新的版本中。

1.5.6.1. 修复的问题
  • 在此次更新之前,当一个运行或待处理 pod 被抢占时,任务运行可能会失败,并显示挂载路径错误消息。在这个版本中,当集群导致 pod 被删除并重新创建时,任务运行不会失败。
  • 在此次更新之前,任务中的 shell 脚本必须以 root 用户身份运行。在这个版本中,shell 脚本镜像设置了非 root 用户 ID,以便您可以运行包含 shell 脚本的任务,如 git-clone 任务,作为 pod 中的非 root 用户。
  • 在此次更新之前,在 Red Hat OpenShift Pipelines 1.11.0 中,当管道运行使用 Pipelines as Code 定义时,Git 仓库中的定义会引用 tekton.dev/v1beta1 API 版本,并包括一个 spec.pipelineRef.bundle 条目,捆绑包引用的 kind 参数被错误地设置为 Task。此问题在早期版本的 Red Hat OpenShift Pipelines 中不存在。在这个版本中,kind 参数会被正确设置。
  • 在此次更新之前,disable-ha 标志无法正确传递给 tekton-pipelines 控制器,因此无法启用 Red Hat OpenShift Pipelines 的高可用性 (HA) 功能。在这个版本中,disable-ha 标志会被正确传递,您可以根据需要启用 HA 功能。
  • 在此次更新之前,您无法为 hub 解析器设置 Tekton Hub 和 Artifact Hub 的 URL,因此您只能使用 Tekton Hub 和 Artifact Hub 的预设置地址。在这个版本中,您可以为 hub 解析器配置 Tekton Hub 和 Artifact Hub 的 URL,例如使用您安装的自定义 Tekton Hub 实例。
  • 在这个版本中,git-init 镜像的 SHA 摘要对应于版本 1.10.5,这是镜像的当前发布版本。
  • 在此次更新之前,tekton-pipelines-controller 组件使用名为 config-leader-election 的配置映射。此名称是 knative 控制器的默认值,因此 OpenShift Pipelines 的配置过程可能会影响其他控制器,反之亦然。在这个版本中,组件使用唯一的配置名称,因此 OpenShift Pipelines 的配置过程不会影响其他控制器,且不受其他控制器的影响。
  • 在此次更新之前,如果没有写入访问 GitHub 仓库的用户打开拉取请求,Pipelines as Code CI/CD 操作会在 GitHub 中显示为 skipped。在这个版本中,Pipelines as Code CI/CD 操作在 GitHub 中显示为 Pending approval
  • 在此次更新之前,Pipelines as Code 会针对每个拉取请求在与配置的分支名称匹配的分支中运行 CI/CD 操作。在这个版本中,只有在拉取请求的源分支与确切配置的分支名称匹配时,Pipelines as Code 才会运行 CI/CD 操作。
  • 在此次更新之前,OpenShift Container Platform 开发人员控制台中无法看到 Pipelines as Code 控制器的指标。在这个版本中,Pipelines as Code 控制器的指标显示在开发人员控制台中。
  • 在此次更新之前,在 Red Hat OpenShift Pipelines 1.11.0 中,Operator 始终安装 Tekton 链,且无法禁用 Tekton Chains 组件的安装。在这个版本中,您可以在 TektonConfig CR 中将 disabled 参数的值设置为 true,以禁用安装 okindf Tekton Chains。
  • 在此次更新之前,如果您使用 TektonChain CR 在旧版本的 OpenShift Pipelines 上配置 Tekton 链,然后升级到 OpenShift Pipelines 版本 1.11.0,则配置信息会被覆盖。在这个版本中,如果您从 OpenShift Pipelines 的旧版本升级,且安装了 TektonConfig 的同一命名空间中配置了 Tekton 链 (openshift-pipelines),Tekton Chains 配置信息会被保留。

1.5.7. Red Hat OpenShift Pipelines 正式发布 1.11.2 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.11.2 包括在 OpenShift Container Platform 4.12 及更新的版本中。

这个版本包括 tkn 命令行工具的更新版本。您可以在以下位置下载此工具的更新版本:

如果您使用 RPM 在 Red Hat Enterprise Linux (RHEL)上安装了 tkn 命令行工具,请使用 yum update 命令安装更新的版本。

1.5.7.1. 修复的问题
  • 在此次更新之前,tkn pac resolve -f 命令不会检测使用 Git 存储库进行身份验证的现有 secret。在这个版本中,这个命令可以成功检测到 secret。
  • 在这个版本中,您可以在 tkn pac resolve 命令中使用 --v1beta1 标志。如果要使用 v1beta1 API 版本 schema 生成管道运行,请使用此标志。
  • 在此次更新之前,如果此管道运行引用解析器,tkn pr logs 命令将无法显示管道运行的日志。在这个版本中,命令会显示日志。
  • 在这个版本中,git-init 镜像的 SHA 摘要对应于版本 1.12.1,这是镜像的当前发布版本
  • 在这个版本中,webhook 不支持 HTTP/2.0 协议。所有对 Red Hat OpenShift Pipelines 的 webhook 调用都必须使用 HTTP/1.1 协议。

1.5.8. 已知问题

  • 如果您使用 Bundles 解析器定义管道运行,然后为这个管道运行使用 tkn pac resolve --v1beta1 命令,命令会生成不正确的 YAML 输出。捆绑包的 kind 参数设置为 YAML 输出中的 任务。作为临时解决方案,您可以在 YAML 数据中手动设置正确的值。另外,您可以使用 opc pac resolve --v1beta1 命令,或使用 OpenShift Pipelines 版本 1.12.0 或更高版本中包含的 tkn 工具版本。

1.5.9. Red Hat OpenShift Pipelines 正式发布 1.11.3 发行注记

在这个版本中,除了 4.12 及更新的版本外,Red Hat OpenShift Pipelines 正式发行(GA) 1.11.3 包括在 OpenShift Container Platform 4.11 中。

1.5.9.1. 修复的问题
  • 在此次更新之前,如果管道的最终任务失败或被跳过,OpenShift Pipelines 会报告验证错误。在这个版本中,即使其最终任务失败或被跳过,管道也可以成功。

1.6. Red Hat OpenShift Pipelines 正式发行(GA)1.10 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.10 包括在 OpenShift Container Platform 4.11、4.12 和 4.13 中。

1.6.1. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.10 中的新内容。

1.6.1.1. Pipelines
  • 在这个版本中,您可以在 PipelineRunTaskRun pod 模板中指定环境变量来覆盖或附加任务或步骤中配置的变量。另外,您可以在默认 pod 模板中指定环境变量,以对所有 PipelineRunsTaskRuns 全局使用这些变量。在这个版本中,添加了一个名为 forbidden-envs 的新默认配置来过滤环境变量,同时从 pod 模板传播。
  • 在这个版本中,管道中的自定义任务会被默认启用。

    注意

    要禁用此次更新,请在 feature-flags 配置自定义资源中将 enable-custom-tasks 标志设置为 false

  • 在这个版本中,支持 v1beta1.CustomRun API 版本进行自定义任务。
  • 在这个版本中,增加了对 PipelineRun reconciler 的支持,以创建自定义运行。例如,从 PipelineRuns 创建的自定义 TaskRuns 现在可以使用 v1beta1.CustomRun API 版本而不是 v1alpha1.Run,如果 custom-task-version 功能标记被设置为 v1beta1,而不是默认值 v1alpha1

    注意

    您需要更新自定义任务控制器,以侦听 *v1beta1.CustomRun API 版本,而不是 *v1alpha1.Run 以响应 v1beta1.CustomRun 请求。

  • 在这个版本中,在 v1beta1.TaskRunv1.TaskRun 规格中添加了一个新的 retries 字段。
1.6.1.2. 触发器
  • 在这个版本中,触发器支持创建 v1 API 版本的 Pipelines, Tasks, PipelineRuns, 和 TaskRuns 对象,以及 v1beta1 API 版本的 CustomRun 对象。
  • 在这个版本中,GitHub Interceptor 会阻止执行拉取请求触发器,除非由拥有者调用或所有者使用可配置的注释。

    注意

    要启用或禁用此更新,请在 GitHub Interceptor 配置文件中将 githubOwners 参数的值设置为 truefalse

  • 在这个版本中,GitHub Interceptor 能够添加以逗号分隔的、用于推送和拉取请求事件更改的所有文件的列表。更改的文件列表添加到顶层 extensions 字段中事件有效负载的 changed_files 属性中。
  • 在这个版本中,TLS 的 MinVersion 改为 tls.VersionTLS12,以便在启用了联邦信息处理标准 (FIPS) 模式时在 OpenShift Container Platform 上运行触发器。
1.6.1.3. CLI
  • 在这个版本中,增加了对在启动一个 Task, ClusterTaskPipeline 时传递一个 CSI(Container Storage Interface)文件作为工作区的功能。
  • 在这个版本中,为与任务、管道运行和任务运行资源关联的所有 CLI 命令添加了 v1 API 支持。Tekton CLI 适用于这些资源的 v1beta1v1 API。
  • 在这个版本中,增加了对 startdescribe 命令中的对象类型参数的支持。
1.6.1.4. Operator
  • 在这个版本中,在可选管道属性中添加了 default-forbidden-env 参数。参数包括禁止的环境变量,在通过 pod 模板提供时不应传播它们。
  • 在这个版本中,增加了对 Tekton Hub UI 中的自定义徽标的支持。要添加自定义徽标,请在 Tekton Hub CR 中将 customLogo 参数的值设置为 base64 编码 URI。
  • 在这个版本中,git-clone 任务的版本号增加到 0.9。
1.6.1.5. Tekton Chains
重要

Tekton 链只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,在测试时为 PipelineRunTaskRun 添加注解和标签。
  • 此更新添加了一个名为 slsa/v1 的新格式,它生成与以 in-toto 格式请求时生成的相同度。
  • 在这个版本中,Sigstore 功能从实验性功能中移出。
  • 在这个版本中,predicate.materials 函数包括来自 TaskRun 对象的所有步骤和 sidecar 的镜像 URI 和摘要信息。
1.6.1.6. Tekton Hub
重要

Tekton Hub 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,支持在集群中安装、升级或降级 v1 API 版本的 Tekton 资源。
  • 在这个版本中,支持添加自定义徽标来代替 UI 中的 Tekton Hub 徽标。
  • 在这个版本中,对 tkn hub install 命令进行了扩展,增加了一个 --type artifact 标记,它会从 Artifact Hub 获取资源并将其安装到集群中。
  • 在这个版本中,增加了将 tier, catalog, 和 org 的信息作为标签添加到从 Artifact Hub 安装到您的集群中的资源的支持。
1.6.1.7. Pipelines 作为代码(Pipelines as Code)
  • 这个版本增强了传入的 Webhook 支持。对于在 OpenShift Container Platform 集群上安装的 GitHub 应用程序,您不需要为传入的 webhook 提供 git_provider 规格。相反,Pipelines as Code 会检测 secret,并将其用于传入的 Webhook。
  • 在这个版本中,您可以使用同一令牌从带有非默认分支的 GitHub 上的同一主机获取远程任务。
  • 在这个版本中,Pipelines 作为代码支持 Tekton v1 模板。您可以使用 v1v1beta1 模板,Pipelines 作为 PR 生成的代码读取。PR 在集群上以 v1 的形式创建。
  • 在此次更新之前,当 OpenShift 命名空间中找不到运行时模板时,OpenShift 控制台 UI 将使用硬编码的管道运行模板作为回退模板。在这个版本中,pipelines-as-code 配置映射中提供了一个新的默认管道运行模板,名为 pipelines-as-code-template-default 供控制台使用。
  • 在这个版本中,Pipelines as Code 支持 Tekton Pipelines 0.44.0 最小状态。
  • 在这个版本中,Pipelines as Code 支持 Tekton v1 API,这意味着 Pipelines as Code 现在与 Tekton v0.44 及更新的版本兼容。
  • 在这个版本中,除了为 OpenShift 和 Tekton 仪表板为 k8s 配置控制台外,您还可以配置自定义控制台仪表板。
  • 在这个版本中,Pipelines as Code 会检测使用 tkn pac create repo 命令启动的 GitHub 应用程序的安装,如果全局安装,则不需要 GitHub Webhook。
  • 在此次更新之前,如果 PipelineRun 执行出现错误,而不是附加到 PipelineRun 的任务,Pipelines as Code 无法正确报告失败。在这个版本中,Pipelines as Code 会在无法创建 PipelineRun 时在 GitHub 检查中正确报告错误。
  • 在这个版本中,Pipelines as Code 包含一个 target_namespace 变量,它扩展至执行 PipelineRun 的当前运行命名空间。
  • 在这个版本中,Pipelines 作为代码可让您绕过 CLI bootstrap GitHub 应用程序中的 GitHub Enterprise 问题。
  • 在这个版本中,当找不到存储库 CR 时,Pipelines as Code 不会报告错误。
  • 在这个版本中,如果找到多个管道使用相同名称运行,Pipelines as Code 会报告一个错误。

1.6.2. 可能会造成问题的更改

  • 在这个版本中,tkn 命令的早期版本与 Red Hat OpenShift Pipelines 1.10 不兼容。
  • 在这个版本中,从 Tekton CLI 删除了对 ClusterCloudEvent 管道资源的支持。您不能使用 tkn pipelineresource create 命令创建管道资源。另外,任务、集群任务或管道的 start 命令中不再支持管道资源。
  • 在这个版本中,从 Tekton 链中删除 tekton 作为公认格式。

1.6.3. 弃用和删除的功能

  • 在 Red Hat OpenShift Pipelines 1.10 中,ClusterTask 命令现已弃用,计划在以后的发行版本中删除。此更新中还弃用了 tkn task create 命令。
  • 在 Red Hat OpenShift Pipelines 1.10 中,tkn task start 命令中使用的标记 -i-o 现已弃用,因为 v1 API 不支持管道资源。
  • 在 Red Hat OpenShift Pipelines 1.10 中,tkn pipeline start 命令一起使用的标志 -r 已被弃用,因为 v1 API 不支持管道资源。
  • Red Hat OpenShift Pipelines 1.10 更新将 openshiftDefaultEmbeddedStatus 参数设置为 both,带有 fullminimal 嵌入式状态。更改默认嵌入式状态的标记也已弃用,并将被删除。另外,管道默认嵌入式状态将在以后的版本中更改为 minimal

1.6.4. 已知问题

  • 这个版本包括以下向后兼容的更改:

    • 删除 PipelineResources 集群
    • 删除 PipelineResources 云事件
  • 如果在集群升级后管道指标功能无法正常工作,请运行以下命令作为临时解决方案:

    $ oc get tektoninstallersets.operator.tekton.dev | awk '/pipeline-main-static/ {print $1}' | xargs oc delete tektoninstallersets
  • 在这个版本中,IBM Power、IBM zSystems 和 IBM® LinuxONE 不支持使用外部数据库,如 Crunchy PostgreSQL。反之,使用默认的 Tekton Hub 数据库。

1.6.5. 修复的问题

  • 在此次更新之前,opc pac 命令会生成一个运行时错误,而不是显示任何帮助。在这个版本中修复了 opc pac 命令来显示帮助信息。
  • 在此次更新之前,运行 tkn pac create repo 命令创建仓库需要 Webhook 详情。在这个版本中,tkn-pac create repo 命令在安装 GitHub 应用程序时不会配置 Webhook。
  • 在此次更新之前,当 Tekton Pipelines 创建 PipelineRun 资源时遇到问题时,Pipelines as Code 不会报告管道运行创建错误。例如,管道运行中的不存在的任务不会显示任何状态。在这个版本中,Pipelines as Code 显示来自 Tekton Pipelines 的正确错误消息以及缺少的任务。
  • 在这个版本中,UI 页面在成功身份验证后重定向。现在,您会被重定向到您试图登录到 Tekton Hub 的同一页面。
  • 在这个版本中修复了带有标志 --all-namespaces--output=yamllist 命令,用于集群任务、单个任务和管道。
  • 在这个版本中,删除了 repo.spec.url URL 末尾的正斜杠,使其与来自 GitHub 的 URL 匹配。
  • 在此次更新之前,marshalJSON 函数不会编译对象列表。在这个版本中,marshalJSON 函数会对对象列表进行 marshals 处理。
  • 在这个版本中,Pipelines 作为代码可让您绕过 CLI bootstrap GitHub 应用程序中的 GitHub Enterprise 问题。
  • 在这个版本中,当您的存储库有超过 100 个用户时,GitHub collaborator 会检查。
  • 在这个版本中,任务或管道的 signverify 命令现在可以在没有 kubernetes 配置文件的情况下正常工作。
  • 在这个版本中,如果在命名空间中跳过修剪器,Tekton Operator 会清理保留的修剪器 cron 作业。
  • 在此次更新之前,API ConfigMap 对象不会更新为目录刷新间隔配置的值。在这个版本中修复了 Tekon Hub CR 中的 CATALOG_REFRESH_INTERVAL API。
  • 在这个版本中,在更改 EmbeddedStatus 功能标记时,PipelineStatus 的协调已被修复。在这个版本中重置以下参数:

    • status.runsstatus.taskruns 参数为 nil,带有 minimal EmbeddedStatus
    • status.childReferences 参数为 nil,带有 full EmbeddedStatus
  • 在这个版本中,添加了一个到 ResolutionRequest CRD 的转换配置。在这个版本中,可以正确地配置从 v1alpha1.ResolutionRequest 请求到 v1beta1.ResolutionRequest 请求的转换。
  • 在这个版本中会检查与一个管道任务关联的重复工作区。
  • 在这个版本中修复了在代码中启用解析器的默认值。
  • 在这个版本中,使用解析器修复了 TaskRefPipelineRef 名称转换的问题。

1.6.6. Red Hat OpenShift Pipelines 正式发行(GA)1.10.1 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.10.1 包括在 OpenShift Container Platform 4.11、4.12 和 4.13 中。

1.6.6.1. 修复了 Pipelines as Code 的问题
  • 在此次更新之前,如果来自有效负载的源分支信息包含 refs/heads/,但用户配置的目标分支仅包含分支名称,main 在 CEL 表达式中,推送请求将失败。在这个版本中,Pipelines as Code 会传递推送请求,并在有效负载中基本分支或目标分支具有 refs/heads/ 时触发管道。
  • 在此次更新之前,当无法创建 PipelineRun 对象时,从 Tekton 控制器接收的错误不会被报告给用户。在这个版本中,Pipelines as Code 会向 GitHub 界面报告错误消息,以便用户可以对错误进行故障排除。Pipelines as Code 还会报告管道执行过程中发生的错误。
  • 在这个版本中,当因为基础架构问题而无法在 OpenShift Container Platform 集群中创建 secret 时,Pipelines as Code 不会将 secret 回滚到 GitHub 检查接口。
  • 在这个版本中,删除了从 Red Hat OpenShift Pipelines 不再使用的已弃用的 API。

1.6.7. Red Hat OpenShift Pipelines 正式发布 1.10.2 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.10.2 包括在 OpenShift Container Platform 4.11、4.12 和 4.13 中。

1.6.7.1. 修复的问题

在此次更新之前,Tekton Operator 中的一个问题会阻止用户将 enable-api-fields 标志的值设置为 beta。在这个版本中解决了这个问题。现在,您可以在 TektonConfig CR 中将 enable-api-fields 标志的值设置为 beta

1.6.8. Red Hat OpenShift Pipelines 正式发布 1.10.3 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.10.3 包括在 OpenShift Container Platform 4.11、4.12 和 4.13 中。

1.6.8.1. 修复的问题

在此次更新之前,Tekton Operator 不会公开任何自定义的性能配置字段。在这个版本中,作为集群管理员,您可以根据您的需要自定义 TektonConfig CR 中的以下性能配置字段:

  • disable-ha
  • bucket
  • kube-api-qps
  • kube-api-burst
  • threads-per-controller

1.6.9. Red Hat OpenShift Pipelines 正式发行 1.10.4 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.10.4 包括在 OpenShift Container Platform 4.11、4.12 和 4.13 中。

1.6.9.1. 修复的问题
  • 在这个版本中解决了管道运行中的 PipelineRef 字段的捆绑包解析器转换问题。现在,转换功能会在转换后将 kind 字段的值设置为 Pipeline 。
  • 在此次更新之前,pipelinerun.timeouts 字段被重置为 timeout.pipeline 值,忽略 timeout.taskstimeout.finally 值。在这个版本中解决了这个问题,并为 PipelineRun 资源设置正确的默认超时值。
  • 在此次更新之前,控制器日志包含不必要的数据。在这个版本中解决了这个问题。

1.6.10. Red Hat OpenShift Pipelines 正式发布(GA)1.10.5 发行注记

在这个版本中,除了 4.11、4.12 和 4.13 外,Red Hat OpenShift Pipelines 正式发布 (GA) 1.10.5 包括在 OpenShift Container Platform 4.10 中。

重要

Red Hat OpenShift Pipelines 1.10.5 仅适用于 OpenShift Container Platform 4.10、4.11、4.12 和 4.13 上的 pipelines-1.10 频道。它不适用于任何 OpenShift Container Platform 版本的 latest 频道。

1.6.10.1. 修复的问题
  • 在此次更新之前,使用 octkn 命令无法列出或删除大型管道运行。在这个版本中,通过压缩导致这个问题的巨页注解解决了这个问题。请注意,如果管道运行在压缩后仍然太大,则还会出现同样的错误。
  • 在此次更新之前,只有 pipelineRun.spec.taskRunSpecs[].podTemplate 对象中指定的 pod 模板才会被视为管道运行。在这个版本中,pipelineRun.spec.podTemplate 对象中指定的 pod 模板也会被考虑,并与 pipelineRun.spec.taskRunSpecs[].podTemplate 对象中指定的模板合并。

1.6.11. Red Hat OpenShift Pipelines 正式发行 1.10.6 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.10.6 包括在 OpenShift Container Platform 4.10、4.11、4.12 和 4.13 中。

这个版本包括 tkn 命令行工具的更新版本。您可以在以下位置下载此工具的更新版本:

如果您使用 RPM 在 Red Hat Enterprise Linux (RHEL)上安装了 tkn 命令行工具,请使用 yum update 命令安装更新的版本。

1.6.11.1. 已知问题
  • 如果您输入 tkn task starttkn clustertask start 命令,tkn 命令行工具会显示错误消息。作为临时解决方案,要使用命令行启动任务或集群任务,请使用 OpenShift Pipelines 1.11 或更高版本提供的 tkn 工具版本。
1.6.11.2. 修复的问题
  • 在这个版本中,S2I 集群任务使用正式发行(GA)容器镜像。
  • 在这个版本中,webhook 不支持 HTTP/2.0 协议。所有对 Red Hat OpenShift Pipelines 的 webhook 调用都必须使用 HTTP/1.1 协议。

1.7. Red Hat OpenShift Pipelines 正式发布 1.9 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.9 包括在 OpenShift Container Platform 4.11、4.12 和 4.13 中。

1.7.1. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.9 中的新内容。

1.7.1.1. Pipelines
  • 在这个版本中,您可以指定管道参数,并产生数组和对象字典形式。
  • 在这个版本中,为您的工作区提供 Container Storage Interface (CSI) 和投射卷支持。
  • 在这个版本中,您可以在定义管道步骤时指定 stdoutConfigstderrConfig 参数。定义这些参数有助于将标准输出和标准错误(与步骤相关联)捕获到本地文件。
  • 在这个版本中,您可以在 steps[].onError 事件处理程序中添加变量,例如 $(params.CONTINUE)
  • 在这个版本中,您可以使用 PipelineResults 定义中的 finally 任务的输出。例如,$(finally.<pipelinetask-name>.result.<result-name>),其中 <pipelinetask-name> 代表管道任务名称,<result-name> 代表结果名称。
  • 在这个版本中,支持任务运行的任务级资源要求。
  • 在这个版本中,您不需要根据名称重新创建在管道和定义的任务之间共享的参数。这个版本是开发人员预览功能的一部分。
  • 在这个版本中,增加了对远程解析的支持,如内置 git、集群、捆绑包和 hub 解析器。
1.7.1.2. 触发器
  • 在这个版本中,添加了 Interceptor CRD 来定义 NamespacedInterceptor。您可以在触发器的拦截器引用的 kind 部分,或 EventListener 规格中使用 NamespacedInterceptor
  • 这个版本启用了 CloudEvents
  • 在这个版本中,您可以在定义触发器时配置 Webhook 端口号。
  • 在这个版本中,支持使用触发器 eventID 作为 TriggerBinding 的输入。
  • 在这个版本中,支持为 ClusterInterceptor 服务器验证和轮转证书。 

    • 触发器对核心拦截器执行证书验证,并在其证书过期时将新证书轮转到 ClusterInterceptor
1.7.1.3. CLI 
  • 在这个版本中,支持在 describe 命令中显示注释。
  • 此更新支持在 pr describe 命令中显示管道、任务和超时。
  • 在这个版本中,添加了在 pipeline start 命令中提供管道、任务和超时的标志。
  • 在这个版本中,支持在任务和管道的 describe 命令中显示工作区(可选或强制)存在。
  • 在这个版本中,添加了 timestamp 标记来显示带有时间戳的日志。
  • 在这个版本中,添加了一个新的标记 --ignore-running-pipelinerun,它会忽略删除与 PipelineRun 关联的 TaskRun
  • 在这个版本中,增加了对实验性命令的支持。在这个版本中,对 tkn CLI 工具增加了实验性的子命令 signverify
  • 在这个版本中,Zsh (Zsh) 完成功能可在不生成任何文件的情况下使用。
  • 此更新引入了一个名为 opc 的新 CLI 工具。预计即将推出的发行版本会将 tkn CLI 工具替换为 opc

    重要
    • 新的 CLI 工具 opc 是一个技术预览功能。
    • opc 将是一个带有额外 Red Hat OpenShift Pipelines 特定功能的 tkn 的替代,这些功能不一定适合 tkn
1.7.1.4. Operator
  • 在这个版本中,Pipelines as Code 会被默认安装。您可以使用 -p 标志禁用 Pipelines as Code:

    $ oc patch tektonconfig config --type="merge" -p '{"spec": {"platforms": {"openshift":{"pipelinesAsCode": {"enable": false}}}}}'
  • 在这个版本中,您还可以在 TektonConfig CRD 中修改 Pipelines 作为代码配置。
  • 在这个版本中,如果禁用了开发人员视角,Operator 不会安装与开发人员控制台相关的自定义资源。
  • 在这个版本中,包括对 Bitbucket 服务器和 Bitbucket 云的 ClusterTriggerBinding 支持,可帮助您在整个集群中重复使用 TriggerBinding 。
1.7.1.5. 解析器
重要

解析器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,您可以在 TektonConfig CRD 中配置管道解析器。您可以启用或禁用这些管道解析器: enable-bundles-resolver,enable-cluster-resolver,enable-git-resolver, 和 enable-hub-resolver

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pipeline:
        enable-bundles-resolver: true
        enable-cluster-resolver: true
        enable-git-resolver: true
        enable-hub-resolver: true
    ...

    您还可以在 TektonConfig 中提供特定于解析器的配置。例如,您可以使用 map[string]string 格式定义以下字段来为单个解析器设置配置:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pipeline:
        bundles-resolver-config:
          default-service-account: pipelines
        cluster-resolver-config:
          default-namespace: test
        git-resolver-config:
          server-url: localhost.com
        hub-resolver-config:
          default-tekton-hub-catalog: tekton
    ...
1.7.1.6. Tekton Chains
重要

Tekton 链只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在此次更新之前,只有开放容器项目 (OCI) 镜像可以作为 in-toto provenance 代理的 TaskRun 输出被支持。在这个版本中,通过使用以下后缀增加了 in-toto provenance 元数据作为输出的支持:ARTIFACT_URIARTIFACT_DIGEST
  • 在此次更新之前,只支持 TaskRun attestations。在这个版本中,还添加了对 PipelineRun attestations 的支持。
  • 在这个版本中,添加了对 Tekton Chains 的支持,以获取 pod 模板中的 imgPullSecret 参数。在这个版本中,您可以基于每个管道运行或任务运行配置存储库身份验证,而无需修改服务帐户。
1.7.1.7. Tekton Hub
重要

Tekton Hub 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,作为管理员,您可以使用外部数据库,如带有 Tekton Hub 的 Crunchy PostgreSQL,而不是使用默认的 Tekton Hub 数据库。这个版本可帮助您执行以下操作:

    • 指定用于 Tekton Hub 的外部数据库的协调
    • 禁用 Operator 部署的默认 Tekton Hub 数据库
  • 在这个版本中,config.yaml 从外部 Git 存储库删除依赖项,并将完整的配置数据移到 API ConfigMap 中。这个版本可帮助管理员执行以下操作:

    • 在 Tekton Hub 自定义资源中添加配置数据,如类别、目录、范围和 defaultScope。
    • 修改集群中的 Tekton Hub 配置数据。所有修改都会在 Operator 升级时保留。
    • 更新 Tekton Hub 目录列表
    • 更改 Tekton Hub 的类别

      注意

      如果没有添加任何配置数据,您可以使用 Tekton Hub 配置的 API ConfigMap 中的默认数据。

1.7.1.8. Pipelines 作为代码(Pipelines as Code)
  • 在这个版本中,增加了对 Repository CRD 中并发限制的支持,以定义一次为仓库运行的最大 PipelineRuns 数。来自拉取请求或推送事件的 PipelineRuns 以字母顺序排列。
  • 在这个版本中,添加了一个新的命令 tkn pac logs,用于显示仓库的最新管道运行的日志。
  • 在这个版本中,支持在文件路径上实现高级事件匹配,以便推送和拉取请求到 GitHub 和 GitLab。例如,只有当一个路径在 docs 目录中的任何 markdown 文件中都更改时,您才可以使用 Common Expression Language (CEL) 来运行管道。

      ...
      annotations:
         pipelinesascode.tekton.dev/on-cel-expression: |
          event == "pull_request" && "docs/*.md".pathChanged()
  • 在这个版本中,您可以使用注解在 pipelineRef: 对象中引用远程管道。
  • 在这个版本中,您可以使用 Pipelines 作为代码自动配置新的 GitHub 仓库,它会设置命名空间并为 GitHub 仓库创建 Repository CRD。
  • 在这个版本中,Pipelines 作为代码为 PipelineRuns 生成指标,并带有供应商信息。
  • 在这个版本中,为 tkn-pac 插件提供以下改进:

    • 正确检测运行的管道
    • 修复了在没有失败完成时间显示持续时间的修复
    • tkn-pac describe 命令中显示错误片段,并突出显示错误的正则表达式模式
    • tkn-pac lstkn-pac describe 命令中添加 use-real-time 开关
    • 导入 tkn-pac 日志文档
    • tkn-pac lstkn-pac describe 命令中显示 pipelineruntimeout 作为失败。
    • 使用 --target-pipelinerun 选项显示特定的管道运行失败。
  • 在这个版本中,您可以使用版本控制系统 (VCS) 注释或 GitHub 检查中的小片断的形式查看管道运行的错误。
  • 在这个版本中,Pipelines 作为代码可以选择地检测任务中的错误(如果它们是简单格式),并在 GitHub 中将这些任务添加为注解。这个版本是开发人员预览功能的一部分。
  • 在这个版本中添加了以下新命令:

    • tkn-pac webhook add :在项目存储库设置中添加了一个 webhook,并在现有的 k8s Secret 对象中更新了 webhook.secret 键,而无需更新存储库。
    • tkn-pac webhook update-token: 更新现有 k8s Secret 对象的供应商令牌,而无需更新存储库。
  • 这个版本增强了 tkn-pac create repo 命令的功能,该命令为 GitHub、GitLab 和 BitbucketCloud 创建并配置 Webhook,以及创建存储库。
  • 在这个版本中,tkn-pac describe 命令以一定的排序顺序显示最新的五十个事件。
  • 在这个版本中,在 tkn-pac logs 命令中添加了 --last 选项。
  • 在这个版本中,tkn-pac resolve 命令会在文件模板中检测 git_auth_secret 时提示输入令牌。
  • 在这个版本中,Pipelines 作为代码从日志片断中隐藏 secret,以避免在 GitHub 界面中公开 secret。
  • 在这个版本中,为 git_auth_secret 自动生成 secret 是 PipelineRun 的所有者引用。使用 PipelineRun 清理 secret,而不是在管道运行执行后进行。
  • 在这个版本中,增加了对使用 /cancel 注释取消管道运行的支持。
  • 在此次更新之前,没有定义 GitHub 应用程序令牌范围,并将在每个存储库安装中使用令牌。在这个版本中,您可以使用以下参数将 GitHub 应用令牌范围到目标存储库:

    • secret-github-app-token-scoped :将应用程序令牌范围到目标仓库,而不是应用程序安装可访问的每个存储库。
    • secret-github-app-scope-extra-repos :使用额外的所有者或存储库自定义应用程序令牌的范围。
  • 在这个版本中,您可以将 Pipelines 用作代码与在 GitLab 上托管的自己的 Git 存储库一起使用。
  • 在这个版本中,您可以使用命名空间中的 kubernetes 事件的形式访问管道执行详情。这些详细信息可帮助您对管道错误进行故障排除,而无需访问 admin 命名空间。
  • 在这个版本中,支持通过 Git 供应商在 Pipelines 中作为代码解析器验证 URL。
  • 在这个版本中,您可以使用 pipelines-as-code 配置映射中的设置来设置 hub 目录的名称。
  • 在这个版本中,您可以为 max-keep-run 参数设置最大和默认限值。
  • 在这个版本中,添加了有关如何注入 Pipelines 作为代码中的自定义安全套接字层 (SSL) 证书的文档,可让您使用自定义证书连接到供应商实例。
  • 在这个版本中,PipelineRun 资源定义包含的日志 URL 作为注解。例如,tkn-pac describe 命令在描述 PipelineRun 时显示日志链接。
  • 在这个版本中,tkn-pac 日志显示存储库名称,而不是 PipelineRun 名称。

1.7.2. 可能会造成问题的更改

  • 在这个版本中,Conditions 自定义资源定义(CRD) 类型已被删除。作为替代方案,请使用 WhenExpressions 替代。
  • 在这个版本中,删除了 tekton.dev/v1alpha1 API pipeline 资源,如 Pipeline、PipelineRun、Task、Clustertask 和 TaskRun。
  • 在这个版本中,tkn-pac setup 命令已被删除。使用 tkn-pac webhook add 命令将 webhook 重新添加到现有 Git 仓库。使用 tkn-pac webhook update-token 命令为 Git 仓库中的现有 Secret 对象更新个人供应商访问令牌。
  • 在这个版本中,运行带有默认设置的管道的命名空间不会将 pod-security.kubernetes.io/enforce:privileged 标签应用到工作负载。

1.7.3. 弃用和删除的功能

  • 在 Red Hat OpenShift Pipelines 1.9.0 发行版本中,ClusterTasks 已被弃用,计划在以后的发行版本中删除。作为替代方案,您可以使用 Cluster Resolver
  • 在 Red Hat OpenShift Pipelines 1.9.0 发行版本中,在单个 EventListener 规格中使用 triggersnamespaceSelector 字段已弃用,并计划在以后的发行版本中删除。您可以在不同的 EventListener 规格中成功使用这些字段。
  • 在 Red Hat OpenShift Pipelines 1.9.0 发行版本中,tkn pipelinerun describe 命令不会显示 PipelineRun 资源的超时。
  • 在 Red Hat OpenShift Pipelines 1.9.0 发行版本中,PipelineResource' 自定义资源(CR) 已被弃用。PipelineResource CR 是一个技术预览功能,它是 tekton.dev/v1alpha1 API 的一部分。
  • 在 Red Hat OpenShift Pipelines 1.9.0 发行版本中,集群任务中的自定义镜像参数已弃用。另外,您可以复制集群任务并在其中使用自定义镜像。

1.7.4. 已知问题

  • 卸载 Red Hat OpenShift Pipelines Operator 后会删除 chains-secretchains-config 配置映射。当它们包含用户数据时,应保留且不删除它们。
  • 当在 Windows 上运行 tkn pac 命令集时,您可能会收到以下出错信息: Command finished with error: not supported by Windows。

    临时解决方案:将 NO_COLOR 环境变量设置为 true

  • 如果 tkn pac resolve 命令使用已模板化的参数值,则运行 tkn pac resolve -f <filename> | oc create -f 命令可能无法提供预期的结果。

    临时解决方案: 要缓解这个问题,请通过运行 tkn pac resolve -f <filename> -o tempfile.yaml 命令将 tkn pac resolve 命令的输出保持在一个临时文件中,然后运行 oc create -f tempfile.yaml 命令。例如:tkn pac resolve -f <filename> -o /tmp/pull-request-resolved.yaml && oc create -f /tmp/pull-request-resolved.yaml

1.7.5. 修复的问题

  • 在此次更新之前,在替换空数组后,原始阵列返回一个空字符串,从而导致其中的参数无效。在这个版本中,这个问题已被解决,原始阵列返回为空。
  • 在此次更新之前,如果管道运行的服务帐户中存在重复的 secret,则会导致任务 pod 创建失败。在这个版本中,这个问题已解决,即使服务帐户中存在重复的 secret,任务 pod 也会成功创建。
  • 在此次更新之前,通过查看 TaskRun 的 spec.StatusMessage 字段,用户无法区分 TaskRun 是否已被用户取消或作为它一部分的 PipelineRun。在这个版本中,这个问题已被解决,用户可以通过查看 TaskRunspec.StatusMessage 字段来区分 TaskRun 的状态。
  • 在此次更新之前,在删除旧版本的无效对象时,webhook 验证会被删除。在这个版本中,这个问题已解决。
  • 在此次更新之前,如果您将 timeouts.pipeline 参数设置为 0,您将无法设置 timeouts.tasks 参数或 timeouts.finally 参数。这个版本解决了这个问题。现在,当您设置 timeouts.pipeline 参数值时,可以设置 `timeouts.tasks` 参数或 timeouts.finally 参数。例如:

    yaml
    kind: PipelineRun
    spec:
      timeouts:
        pipeline: "0"  # No timeout
        tasks: "0h3m0s"
  • 在此次更新之前,如果 PipelineRun 或 TaskRun 上的另一个工具更新了标签或注解,则可能会出现竞争条件。在这个版本中,这个问题已被解决,您可以合并标签或注解。
  • 在此次更新之前,日志密钥与管道控制器中的密钥不同。在这个版本中,这个问题已被解决,日志密钥已被更新,以匹配管道控制器的日志流。日志中的键已从 "ts" 改为 "timestamp",从 "level" 改为 "severity",从 "message" 改为 "msg"。
  • 在此次更新之前,如果一个 PipelineRun 被删除并带有未知状态,则不会生成错误消息。在这个版本中,这个问题已解决,并生成错误消息。
  • 在此次更新之前,若要访问 listpush 等捆绑包命令,需要使用 kubeconfig 文件。在这个版本中,这个问题已被解决,且 kubeconfig 文件不需要访问捆绑包命令。
  • 在此次更新之前,如果在删除 TaskRuns 时运行父 PipelineRun,则将删除 TaskRuns。在这个版本中,这个问题已被解决,如果父 PipelineRun 正在运行,TaskRuns 不会被删除。
  • 在此次更新之前,如果用户试图构建带有超过管道控制器的对象的捆绑包,Tekton CLI 不会显示错误消息。在这个版本中,这个问题已解决,如果用户试图构建比管道控制器中允许的限制更多的对象,Tekton CLI 会显示错误消息。
  • 在此次更新之前,如果从集群中删除命名空间,Operator 不会从 ClusterInterceptor ClusterRoleBinding 主题中删除命名空间。在这个版本中,这个问题已被解决,Operator 会从 ClusterInterceptor ClusterRoleBinding 主题中删除命名空间。
  • 在此次更新之前,Red Hat OpenShift Pipelines Operator 的默认安装会导致集群中的 pipelines-scc-rolebinding 安全上下文约束 (SCC) 角色绑定资源。在这个版本中,Red Hat OpenShift Pipelines Operator 的默认安装会导致 pipelines-scc-rolebinding 安全性上下文约束 (SCC) 角色绑定资源被从集群中移除。
  • 在此次更新之前,Pipelines as Code 不会从 Pipelines as Code ConfigMap 对象获取更新的值。在这个版本中,这个问题已被解决,Pipelines as Code ConfigMap 对象会查找任何新的更改。
  • 在此次更新之前,Pipelines as Code 控制器不会等待 tekton.dev/pipeline 标签被更新并添加 checkrun id 标签,这会导致竞争条件。在这个版本中,Pipelines as Code 控制器会等待 tekton.dev/pipeline 标签更新,然后添加 checkrun id 标签,这有助于避免竞争条件。
  • 在此次更新之前,如果 git 仓库中已存在,tkn-pac create repo 命令不会覆盖 PipelineRun。在这个版本中,tkn-pac create 命令已被修复,如果 git 仓库中存在 PipelineRun,这会成功覆盖它。
  • 在此次更新之前,tkn pac describe 命令不会显示每个消息的原因。在这个版本中,这个问题已被解决,tkn pac describe 命令会显示每个消息的原因。
  • 在此次更新之前,如果使用 regex 表单的注解中的用户提供值,则拉取请求会失败,如 refs/head/rel-*。拉取请求失败,因为它在基础分支中缺少 refs/heads。在这个版本中,添加了前缀,并检查它是否匹配。这解决了这个问题,拉取请求可以成功。

1.7.6. Red Hat OpenShift Pipelines 正式发布 1.9.1 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.9.1 包括在 OpenShift Container Platform 4.11、4.12 和 4.13 中。

1.7.7. 修复的问题

  • 在此次更新之前,tkn pac repo list 命令不会在 Microsoft Windows 上运行。在这个版本中解决了这个问题,您可以在 Microsoft Windows 上运行 tkn pac repo list 命令。
  • 在此次更新之前,Pipelines as Code watcher 不会接收所有配置更改事件。在这个版本中,Pipelines as Code watcher 已被更新,现在 Pipelines as Code watcher 不会丢失配置更改事件。
  • 在此次更新之前,由 Pipelines as Code 创建的 pod,如 TaskRunsPipelineRuns 无法访问集群中用户公开的自定义证书。在这个版本中解决了这个问题,您可以从集群中的 TaskRunsPipelineRuns pod 访问自定义证书。
  • 在此次更新之前,在使用 FIPS 启用的集群中,Trigger 资源中使用的 tekton-triggers-core-interceptors 内核拦截器在 Pipelines Operator 升级到 1.9 后无法正常工作。这个版本解决了这个问题。现在,OpenShift 将 MInTLS 1.2 用于其所有组件。因此,tekton-triggers-core-interceptors core interceptor 对 TLS 版本 1.2 及其功能进行准确运行。
  • 在此次更新之前,当使用带有内部 OpenShift 镜像 registry 的管道运行时,必须在管道运行定义中硬编码到镜像的 URL。例如:

    ...
      - name: IMAGE_NAME
        value: 'image-registry.openshift-image-registry.svc:5000/<test_namespace>/<test_pipelinerun>'
    ...

    当在 Pipelines 作为代码上下文中使用管道运行时,这些硬编码值会阻止管道运行定义在不同的集群和命名空间中使用。

    在这个版本中,您可以使用动态模板变量,而不是硬编码命名空间和管道运行名称的值,以常规化管道运行定义。例如:

    ...
      - name: IMAGE_NAME
        value: 'image-registry.openshift-image-registry.svc:5000/{{ target_namespace }}/$(context.pipelineRun.name)'
    ...
  • 在此次更新之前,Pipelines as Code 使用相同的 GitHub 令牌获取默认 GitHub 分支上同一主机上提供的远程任务。这个版本解决了这个问题。现在,Pipelines as Code 使用相同的 GitHub 令牌从任何 GitHub 分支获取远程任务。

1.7.8. 已知问题

  • CATALOG_REFRESH_INTERVAL 的值(Tekton Hub CR 中使用的 Hub API ConfigMap 对象中的一个字段)不会更新,无法使用用户提供的自定义值进行更新。

    临时解决方案:无.您可以跟踪问题 SRVKP-2854

1.7.9. 可能会造成问题的更改

  • 在这个版本中,引入了一个 OLM 错误配置问题,这会阻止升级 OpenShift Container Platform。这个问题将在以后的发行版本中解决。

1.7.10. Red Hat OpenShift Pipelines 正式发布 1.9.2 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.9.2 包括在 OpenShift Container Platform 4.11、4.12 和 4.13 中。

1.7.11. 修复的问题

  • 在此次更新之前,之前的版本中引入了一个 OLM 错误配置问题,这会阻止 OpenShift Container Platform 升级。在这个版本中,这个错误问题已被修复。

1.7.12. Red Hat OpenShift Pipelines 正式发布(GA)1.9.3 发行注记

在这个版本中,除了 4.11、4.12 和 4.13 外,Red Hat OpenShift Pipelines 正式发布 (GA) 1.9.3 包括在 OpenShift Container Platform 4.10 中。

1.7.13. 修复的问题

  • 在这个版本中解决了大型管道的性能问题。现在,CPU 的使用率减少了 61%,内存用量减少了 44%。
  • 在此次更新之前,如果某个任务因为 when 表达式而没有运行,则管道运行会失败。在这个版本中,通过防止在管道结果中验证跳过的任务结果解决了这个问题。现在,管道结果不会被发送,管道运行不会因为缺少结果而失败。
  • 在这个版本中,为 v1beta1 API 修复了 pipelineref.bundle 转换到捆绑包解析器的问题。现在,转换功能会在转换完成后将 kind 字段的值设置为 Pipeline
  • 在此次更新之前,OpenShift Pipelines Operator 中的一个问题会阻止用户将 spec.pipeline.enable-api-fields 字段的值设置为 beta。在这个版本中解决了这个问题。现在,您可以在 TektonConfig 自定义资源中将值设为 betaalphastable
  • 在此次更新之前,因为集群错误,Pipelines as Code 无法创建 secret 时,它会在 GitHub 的 check run 过程中显示临时令牌(这个过程是公开的)。在这个版本中解决了这个问题。现在,在创建 secret 失败时,这个令牌不再显示在 GitHub 检查界面中。

1.7.14. 已知问题

  • 目前,在 OpenShift Container Platform Web 控制台中的管道运行的 stop 选项存在一个已知问题。Actions 下拉列表中的 stop 选项无法正常工作,它无法取消管道运行。
  • 因为自定义资源定义转换失败,升级到 OpenShift Pipelines 版本 1.9.x 存在一个已知问题。

    临时解决方案:在升级到 OpenShift Pipelines 版本 1.9.x 之前,请执行红帽客户门户网站中解决方案中提到的步骤。

1.8. Red Hat OpenShift Pipelines 正式发布 1.8 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.8 包括在 OpenShift Container Platform 4.10, 4.11 和 4.12 中。

1.8.1. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.8 中的新内容。

1.8.1.1. Pipelines
  • 在这个版本中,您可以在在 ARM 硬件上运行 Red Hat OpenShift Pipelines GA 1.8 及更新的版本。这包括对 ClusterTask 资源和 tkn CLI 工具的支持。
重要

在 ARM 硬件上运行 Red Hat OpenShift Pipelines 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,为 TaskRun 资源实现了 StepSidecar 覆盖。
  • 在这个版本中,在 PipelineRun 状态下添加了最小的 TaskRunRun 状态。

    要启用此功能,在 TektonConfig 自定义资源定义的 pipeline 部分,您必须将 enable-api-fields 字段设置为 alpha

  • 在这个版本中,管道运行功能的安全终止会从 alpha 功能提升到 stable 功能。因此,之前弃用的 PipelineRunCancelled 状态会保持弃用,计划在以后的发行版本中被删除。

    由于这个功能默认可用,所以您不再需要在 TektonConfig 自定义资源定义中将 pipeline.enable-api-fields 字段设置为 alpha

  • 在这个版本中,您可以使用工作区名称为管道任务指定工作区。这个更改可让您更轻松地为 PipelinePipelineTask 资源指定共享的工作区。您还可以继续显式映射工作区。

    要启用此功能,在 TektonConfig 自定义资源定义的 pipeline 部分,您必须将 enable-api-fields 字段设置为 alpha

  • 在这个版本中,内嵌规格中的参数会在不修改的情况下传播。
  • 在这个版本中,您可以使用注解和标签指定 PipelineRun 资源引用的 Task 资源所需的元数据。这样,在管道运行过程中,依赖执行上下文的 Task 元数据可用。
  • 在这个版本中,paramsresults 值增加了对象和字典类型。这个变化会影响向后兼容性,有时会破坏转发兼容性,比如使用较早的客户端和以后的 Red Hat OpenShift Pipelines 版本。这个版本更改了 ArrayOrStruct 结构,它会影响使用 Go 语言 API 作为库的项目。
  • 在这个版本中,为 PipelineRun 状态字段的 SkippedTasks 字段添加了一个 SkippingReason 值,以便用户了解跳过给定 PipelineTask 的原因。
  • 在这个版本中,支持一个 alpha 功能,您可以使用 数组 类型从 Task 对象发出结果。结果类型从字符串改为ArrayOrString。例如,任务可以指定类型来生成数组结果:

    kind: Task
    apiVersion: tekton.dev/v1beta1
    metadata:
      name: write-array
      annotations:
        description: |
          A simple task that writes array
    spec:
      results:
        - name: array-results
          type: array
          description: The array results
    ...

    另外,您可以运行一个任务脚本来填充数组的结果:

    $ echo -n "[\"hello\",\"world\"]" | tee $(results.array-results.path)

    要启用此功能,在 TektonConfig 自定义资源定义的 pipeline 部分,您必须将 enable-api-fields 字段设置为 alpha

    这个功能正在进行中,它是 TEP-0076 的一部分。

1.8.1.2. 触发器
  • 在这个版本中,EventListener 规格中的 TriggerGroups 字段从 alpha 功能转换为 stable 功能。使用此字段,您可以在选择和运行一组触发器前指定一组拦截器。

    由于这个功能默认可用,所以您不再需要在 TektonConfig 自定义资源定义中将 pipeline.enable-api-fields 字段设置为 alpha

  • 在这个版本中,Trigger 资源通过运行使用 HTTPS 的 ClusterInterceptor 服务器来支持端到端安全连接。
1.8.1.3. CLI
  • 在这个版本中,您可以使用 tkn taskrun export 命令,将集群中运行的 live 任务导出到 YAML 文件,您可以使用它来将任务运行导入到另一个集群。
  • 在这个版本中,您可以在 tkn pipeline start 命令中添加 -o name 标志,以便在启动后打印管道运行的名称。
  • 在这个版本中,在 tkn --help 命令的输出中添加了可用插件列表。
  • 在这个版本中,在删除管道运行或任务运行时,您可以同时使用 --keep--keep-since 标志。
  • 在这个版本中,您可以使用 Cancelled 作为 spec.status 字段的值,而不是弃用的 PipelineRunCancelled 值。
1.8.1.4. Operator
  • 在这个版本中,作为管理员,您可以将本地 Tekton Hub 实例配置为使用自定义数据库,而不是默认数据库。
  • 在这个版本中,作为集群管理员,如果您启用本地 Tekton Hub 实例,它会定期刷新数据库,以便目录中的更改出现在 Tekton Hub web 控制台中。您可以调整刷新之间的周期。

    在以前的版本中,要将目录中的任务和管道添加到数据库中,您需要手动执行该任务或设置 cron 任务来为您完成这个任务。

  • 在这个版本中,您可以使用最小配置安装并运行 Tekton Hub 实例。这样,您可以开始使用团队来确定他们可能需要的其他自定义。
  • 在这个版本中,将 GIT_SSL_CAINFO 添加到 git-clone 任务,以便您可以克隆安全的存储库。
1.8.1.5. Tekton Chains
重要

Tekton 链只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,您可以使用 OIDC 而不是静态令牌登录到 vault。这个更改意味着 Spire 可以生成 OIDC 凭证,以便只允许可信工作负载登录到 vault。另外,您可以将 vault 地址作为配置值传递,而不是将其作为环境变量注入。
  • 在升级 Red Hat OpenShift Pipelines Operator 后,openshift-pipelines 命名空间中的 Tekton Chains 的 chains-config 配置映射会自动重置为 default,因为在使用 Red Hat OpenShift Pipelines Operator 安装时不支持直接更新配置映射。但是,在此次更新中,您可以使用 TektonChain 自定义资源配置 Tekton 链。这个功能可让您在升级后保留配置,这与 chains-config 配置映射不同,这在升级过程中会被覆盖。
1.8.1.6. Tekton Hub
重要

Tekton Hub 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,如果您使用 Operator 安装一个新的 Tekton Hub 实例,则 Tekton Hub 登录默认是禁用的。要启用登录和评级功能,必须在安装 Tekton Hub 时创建 Hub API secret。

    注意

    因为在 Red Hat OpenShift Pipelines 1.7 中默认启用了 Tekton Hub 登录,所以如果升级 Operator,在 Red Hat OpenShift Pipelines 1.8 中会默认启用登录。要禁用此登录,请参阅从 OpenShift Pipelines 1.7.x -→ 1.8.x 升级后禁用 Tekton Hub 登录

  • 在这个版本中,作为管理员,您可以将本地 Tekton Hub 实例配置为使用自定义 PostgreSQL 13 数据库,而不是默认数据库。为此,请创建一个名为 tekton-hub-dbSecret 资源。例如:

    apiVersion: v1
    kind: Secret
    metadata:
      name: tekton-hub-db
      labels:
        app: tekton-hub-db
    type: Opaque
    stringData:
      POSTGRES_HOST: <hostname>
      POSTGRES_DB: <database_name>
      POSTGRES_USER: <username>
      POSTGRES_PASSWORD: <password>
      POSTGRES_PORT: <listening_port_number>
  • 在这个版本中,您不再需要登录到 Tekton Hub web 控制台,将目录中的资源添加到数据库。现在,当 Tekton Hub API 首次运行时,这些资源会自动添加。
  • 在这个版本中,通过调用目录刷新 API 作业,每 30 分钟自动刷新目录。用户可以配置这个间隔。
1.8.1.7. Pipelines 作为代码(Pipelines as Code)
重要

Pipelines as Code (PAC) 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  • 在这个版本中,作为开发人员,如果您试图将重复的存储库添加到 Pipelines 作为代码运行,则从 tkn-pac CLI 工具获得通知。输入 tkn pac create repository 时,每个仓库必须具有一个唯一的 URL。此通知还有助于防止劫持漏洞攻击。
  • 在这个版本中,作为开发人员,您可以使用新的 tkn-pac setup cli 命令,使用 webhook 机制将 Git 存储库作为代码添加到 Pipelines 中。这样,即使在使用 GitHub Apps 时也可以使用 Pipelines 作为代码。此功能包括对 GitHub、GitLab 和 BitBucket 上的存储库的支持。
  • 在这个版本中,Pipelines 作为代码支持 GitLab 与特征集成,如下所示:

    • 项目或组的 ACL(访问权限控制列表)
    • 允许的用户的 /ok-to-test 支持
    • /retest 支持。
  • 在这个版本中,您可以使用通用表达式语言 (CEL) 执行高级管道过滤。使用 CEL,您可以使用 PipelineRun 资源中的注解匹配带有不同 Git 供应商事件的管道运行。例如:

      ...
      annotations:
         pipelinesascode.tekton.dev/on-cel-expression: |
          event == "pull_request" && target_branch == "main" && source_branch == "wip"
  • 在以前的版本中,作为开发人员,每个 Git 事件在 .tekton 目录中只能运行一个管道运行,如拉取请求。在这个版本中,您可以在 .tekton 目录中运行多个管道。Web 控制台显示运行的状态和报告。管道并行运行,并报告回 Git 提供程序接口。
  • 在这个版本中,您可以通过对拉取请求为 /test/retest 添加注释来测试或重新测试管道运行。您还可以按名称指定管道运行。例如,您可以输入 /test <pipelinerun_name>/retest <pipelinerun-name>
  • 在这个版本中,您可以使用新的 tkn-pac delete repository 命令删除存储库自定义资源及其关联的 secret。

1.8.2. 可能会造成问题的更改

  • 在这个版本中,TaskRunPipelineRun 资源的默认指标级别改为以下值:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: config-observability
      namespace: tekton-pipelines
      labels:
        app.kubernetes.io/instance: default
        app.kubernetes.io/part-of: tekton-pipelines
    data:
      _example: |
      ...
        metrics.taskrun.level: "task"
        metrics.taskrun.duration-type: "histogram"
        metrics.pipelinerun.level: "pipeline"
        metrics.pipelinerun.duration-type: "histogram"
  • 在这个版本中,如果 PipelinePipelineRun 资源中存在注解或标签,Run 类型中的值将具有优先权。如果 TaskTaskRun 资源中存在注解或标签,则也是如此。
  • 在 Red Hat OpenShift Pipelines 1.8 中,之前弃用的 PipelineRun.Spec.ServiceAccountNames 字段已被删除。使用 PipelineRun.Spec.TaskRunSpecs 字段替代。
  • 在 Red Hat OpenShift Pipelines 1.8 中,之前已弃用的 TaskRun.Status.ResourceResults.ResourceRef 字段已被删除。使用 TaskRun.Status.ResourceResults.ResourceName 字段。
  • 在 Red Hat OpenShift Pipelines 1.8 中,之前已弃用的 Conditions 资源类型已被删除。从包含它的 Pipeline 资源定义中删除 Conditions 资源。在 PipelineRun 定义中使用 when 表达式。
  • 对于 Tekton 链,在这个发行版本中删除了 tekton-provenance 格式。通过在 TektonChain 自定义资源中设置 "artifacts.taskrun.format": "in-toto" 来使用 in-toto 格式。
  • Red Hat OpenShift Pipelines 1.7.x 作为代码 0.5.x 附带。当前的更新附带了 Pipelines,作为代码 0.10.x。此更改在新控制器的 openshift-pipelines 命名空间中创建新路由。您必须在使用 Pipelines 作为代码的 GitHub Apps 或 Webhook 中更新此路由。要获取路由,请使用以下命令:

    $ oc get route -n openshift-pipelines pipelines-as-code-controller \
      --template='https://{{ .spec.host }}'
  • 在这个版本中,Pipelines 作为 Code 会重命名 Repository 自定义资源定义 (CRD) 的默认 secret 密钥。在 CRD 中,将 token 替换为 provider.token,并将 secret 替换为 webhook.secret
  • 在这个版本中,Pipelines 作为代码将特殊模板变量替换为支持用于私有仓库的多个管道运行的特殊模板变量。在管道运行中,将 secret: pac-git-basic-auth-{{repo_owner}}-{{repo_name}} 替换为 secret: {{ git_auth_secret }}
  • 在这个版本中,Pipelines as Code 更新 tkn-pac CLI 工具中的以下命令:

    • tkn pac repository create 替换为 tkn pac create repository
    • tkn pac repository delete 替换为 tkn pac delete repository
    • tkn pac repository list 替换为 tkn pac list

1.8.3. 弃用和删除的功能

  • 从 OpenShift Container Platform 4.11 开始,会删除用于安装和升级 Red Hat OpenShift Pipelines Operator 的 previewstable 频道。要安装和升级 Operator,请使用适当的 pipelines-<version> 频道,或最新稳定版本的 latest 频道。例如,要安装 OpenShift Pipelines Operator 版本 1.8.x,请使用 pipelines-1.8 频道。

    注意

    在 OpenShift Container Platform 4.10 及更早的版本中,您可以使用 previewstable 频道来安装和升级 Operator。

  • tekton.dev/v1alpha1 API 版本的支持(在 Red Hat OpenShift Pipelines GA 1.6 中已弃用)计划在以后的 Red Hat OpenShift Pipelines GA 1.9 发行版本中删除。

    此更改会影响管道组件,其中包括 TaskRun, PipelineRun, Task, Pipeline, 和 tekton.dev/v1alpha1 类似。另外,将现有资源更新为使用 apiVersion: tekton.dev/v1beta1,如 Migrating From Tekton v1alpha1 to Tekton v1beta1 所述。

    tekton.dev/v1alpha1 API 版本的程序错误修复和支持仅到当前 GA 1.8 生命周期结束为止。

    重要

    对于 Tekton Operatoroperator.tekton.dev/v1alpha1 API 版本没有弃用。您不需要更改此值。

  • 在 Red Hat OpenShift Pipelines 1.8 中,PipelineResource 自定义资源 (CR) 可用,但不再被支持。PipelineResource CR 是一个技术预览功能,它属于 tekton.dev/v1alpha1 API 的一部分,它已被弃用,并计划在以后的 Red Hat OpenShift Pipelines GA 1.9 发行版本中删除。
  • 在 Red Hat OpenShift Pipelines 1.8 中,Condition 自定义资源 (CR) 已删除。Condition CR 是 tekton.dev/v1alpha1 API 的一部分,它已被弃用,计划在以后的 Red Hat OpenShift Pipelines GA 1.9 发行版本中删除。
  • 在 Red Hat OpenShift Pipelines 1.8 中,gsutilgcr.io 镜像已被删除。这个删除可能会破坏带有依赖于此镜像的 Pipeline 资源的集群。程序错误修复和支持只到 Red Hat OpenShift Pipelines 1.7 生命周期结束为主。
  • 在 Red Hat OpenShift Pipelines 1.8 中,Pipeline.Status.TaskRunsPipelineRun.Status.Runs 字段已弃用,计划在以后的发行版本中被删除。请参阅 PipelineRuns 中的 TEP-0100: 嵌入式 TaskRuns 和 Runs Status
  • 在 Red Hat OpenShift Pipelines 1.8 中,pipelineRunCancelled 状态已弃用,计划在以后的发行版本中被删除。现在,PipelineRun 对象的安全终止已从 alpha 功能提升到 stable 功能。(请参阅 TEP-0058: Graceful Pipeline Run Termination。)另外,您可以使用 Cancelled 状态替换 pipelineRunCancelled 状态。

    您不需要更改 PipelineTask 资源。如果您有会取消管道运行的工具,则必须在下一个发行版本中更新这些工具。这个更改也会影响 CLI、IDE 扩展等工具,以便支持新的 PipelineRun 状态。

    由于这个功能默认可用,所以您不再需要在 TektonConfig 自定义资源定义中将 pipeline.enable-api-fields 字段设置为 alpha

  • 在 Red Hat OpenShift Pipelines 1.8 中,PipelineRun 中的 timeout 字段已弃用。反之,使用 PipelineRun.Timeouts 字段,它现在从 alpha 功能提升到 stable 功能。

    由于这个功能默认可用,所以您不再需要在 TektonConfig 自定义资源定义中将 pipeline.enable-api-fields 字段设置为 alpha

  • 在 Red Hat OpenShift Pipelines 1.8 中,init 容器在 LimitRange 对象的默认请求计算中省略。

1.8.4. 已知问题

  • s2i-nodejs 管道无法使用 nodejs:14-ubi8-minimal 镜像流来执行 source-to-image (S2I) 构建。使用该镜像流会生成一个 error building at STEP "RUN /usr/libexec/s2i/assemble": exit status 127 信息。

    临时解决方案: 使用 nodejs:14-ubi8 而不是 nodejs:14-ubi8-minimal 镜像流。

  • 当您运行 Maven 和 Jib-Maven 集群任务时,默认容器镜像仅支持 Intel(x86)架构。因此,在 ARM、IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE (s390x) 集群上的任务将失败。

    作为临时解决方案,您可以通过将 MAVEN_IMAGE 参数值设置为 maven:3.6.3-adoptopenjdk-11 来指定自定义镜像。

    提示

    在您使用 tkn hub 在 ARM、IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x) 上基于 Tekton Catalog 安装任务前,请验证是否可以在这些平台上执行任务。要检查 ppc64les390x 是否列在任务信息的"Platforms"部分,您可以运行以下命令: tkn hub info task <name>

  • 在 ARM、IBM Power Systems、IBM Z 和 LinuxONE 中,不支持 s2i-dotnet 集群任务。
  • 隐式参数映射会错误地将参数从顶级 PipelinePipelineRun 定义传递给 taskRef 任务。映射应该只在顶层资源中使用任务进行,并带有非线 taskSpec 规格。这个问题只通过将 TektonConfig 自定义资源定义的 pipeline 部分中的 enable-api-fields 字段设置为 alpha 来影响启用了这个功能的集群。

1.8.5. 修复的问题

  • 在此次更新之前,管道的指标在 Web 控制台的 Developer 视图中运行的指标不完整且过期。在这个版本中,这个问题已被解决,指标正确。
  • 在此次更新之前,如果管道有两个失败并有 retries=2 的并行任务,则最终任务永不会运行,管道超时并且无法运行。例如,pipelines-operator-subscription 任务会间歇性地失败,并显示以下错误消息: Unable to connect to server: EOF。在这个版本中,这个问题已被解决,以便最终任务始终运行。
  • 在此次更新之前,如果管道运行因为任务运行失败而停止,则其他任务运行可能无法完成重试。因此,不会调度 finally 任务,这会导致管道挂起。 这个版本解决了这个问题。TaskRunsRun 对象可以在管道运行停止时重试,即使是安全停止也是如此,以便管道运行可以完成。
  • 在这个版本中,当 TaskRun 对象的命名空间中存在一个或多个 LimitRange 对象时,会改变如何计算资源要求。现在,当从 LimitRange 对象发出请求时,调度程序现在考虑 step 容器并排除所有其他应用容器,如 sidecar 容器。
  • 在此次更新之前,在特定的条件下,标志软件包可能会错误地解析子命令,并带有双短划线终止符 --。在这种情况下,它会运行 entrypoint 子命令,而不是实际命令。在这个版本中解决了这个问题,这个问题会解决,entrypoint 会运行正确的命令。
  • 在此次更新之前,如果拉取镜像失败,控制器可能会生成多个 panics,或者其拉取 (pull) 状态不完整。在这个版本中解决了这个问题,方法是检查 step.ImageID 值而不是 status.TaskSpec 值。
  • 在此次更新之前,取消一个包含未计划的自定义任务的管道运行会生成 PipelineRunCouldntCancel 错误。在这个版本中解决了这个问题。您可以取消包含非调度自定义任务的管道运行,而不会生成这个错误。
  • 在此次更新之前,如果在 $params["<NAME>"]$params['<NAME>']<NAME> 中包括了一个句点字符 (.),则不会提取句点右侧的任何部分。例如,对于 $params["org.ipsum.lorem"],只会提取y org 部分。

    在这个版本中解决了这个问题,$params 可以提取完整的值。例如,$params["org.ipsum.lorem"]$params['org.ipsum.lorem'] 是有效的,<NAME> 的完整值 org.ipsum.lorem 都会被提取。

    如果 <NAME> 没有包含在单引号或双引号中,还会抛出一个错误。例如,$params.org.ipsum.lorem 是无效,并生成验证错误。

  • 在这个版本中,Trigger 资源支持自定义拦截器,并确保自定义拦截器服务的端口与 ClusterInterceptor 定义文件中的端口相同。
  • 在此次更新之前,Tekton Chains 和 Operator 组件的 tkn version 命令无法正常工作。在这个版本中解决了这个问题,命令可以正常工作,并返回这些组件的版本信息。
  • 在此次更新之前,如果您运行 tkn pr delete --ignore-running 命令,且管道运行没有 status.condition 值,tkn CLI 工具会生成 null-pointer 错误 (NPE)。在这个版本中解决了这个问题,CLI 工具现在会生成错误,并正确忽略仍然运行的管道运行。
  • 在此次更新之前,如果您使用 tkn pr delete --keep <value>tkn tr delete --keep <value> 命令,且管道运行或任务运行的数量小于其中的值,则命令不会如预期返回一个错误。在这个版本中解决了这个问题,以便命令在这些条件下正确返回错误。
  • 在此次更新之前,如果您使用 tkn pr deletetkn tr delete 命令以及 -p-t 标志与 --ignore-running 标志一起,则命令会错误地删除运行或待处理资源。在这个版本中解决了这个问题,这些命令可以正确地忽略运行或待处理资源。
  • 在此版本中,您可以使用 TektonChain 自定义资源配置 Tekton 链。这个功能可让您在升级后保留配置,这与 chains-config 配置映射不同,这在升级过程中会被覆盖。
  • 在这个版本中,除了 buildahs2i 集群任务外,ClusterTask 资源不再默认以 root 用户身份运行。
  • 在此次更新之前,当将 init 用作第一个参数并后跟两个或更多个参数时,Red Hat OpenShift Pipelines 1.7.1 上的任务会失败。在这个版本中,这些标志会被正确解析,任务可以运行成功。
  • 在此次更新之前,因为存在无效的角色绑定,在 OpenShift Container Platform 4.9 和 4.10 上安装 Red Hat OpenShift Pipelines Operator 会失败,并显示以下错误消息:

    error updating rolebinding openshift-operators-prometheus-k8s-read-binding: RoleBinding.rbac.authorization.k8s.io
    "openshift-operators-prometheus-k8s-read-binding" is invalid:
    roleRef: Invalid value: rbac.RoleRef{APIGroup:"rbac.authorization.k8s.io", Kind:"Role", Name:"openshift-operator-read"}: cannot change roleRef

    在这个版本中解决了这个问题,不再会发生失败。

  • 在以前的版本中,升级 Red Hat OpenShift Pipelines Operator 会导致重新创建 pipeline 服务帐户,这意味着链接到服务帐户的 secret 会丢失。在这个版本中解决了这个问题。在升级过程中,Operator 不再重新创建 pipeline 服务帐户。因此,已附加到 pipeline 服务帐户的 secret 在升级后会保留,资源(任务和管道)可以继续正常工作。
  • 在这个版本中,如果在 TektonConfig 自定义资源 (CR) 中配置了基础架构节点设置,Pipelines as Code pod 在基础架构节点上运行。
  • 在以前的版本中,使用资源修剪器时,每个命名空间 Operator 创建了一个在独立容器中运行的命令。这个设计在有大量命名空间的集群中消耗太多资源。例如,要运行单个命令,带有 1000 个命名空间的集群会在 pod 中生成 1000 个容器。

    在这个版本中解决了这个问题。它将基于命名空间的配置传递给作业,以便所有命令在循环中的一个容器中运行。

  • 在 Tekton Chains 中,您必须定义一个名为 signed-secrets 的 secret,以存放用于签名任务和镜像的密钥。但是,在更新前,更新 Red Hat OpenShift Pipelines Operator 会重置或覆盖这个 secret,密钥会丢失。在这个版本中解决了这个问题。现在,如果在通过 Operator 安装 Tekton Chains 后配置了 secret,secret 会保留,且升级不会覆盖它。
  • 在此次更新之前,所有 S2I 构建任务都会失败,并显示类似以下消息的错误:

    Error: error writing "0 0 4294967295\n" to /proc/22/uid_map: write /proc/22/uid_map: operation not permitted
    time="2022-03-04T09:47:57Z" level=error msg="error writing \"0 0 4294967295\\n\" to /proc/22/uid_map: write /proc/22/uid_map: operation not permitted"
    time="2022-03-04T09:47:57Z" level=error msg="(unable to determine exit status)"

    在这个版本中,pipeline-scc 安全性上下文约束 (SCC) 与 BuildahS2I 集群任务所需的 SETFCAP 功能兼容。因此,BuildahS2I 构建任务可以成功运行。

    要成功运行 Buildah 集群任务和 S2I 构建任务,适用于使用各种语言和框架编写的应用程序,添加以下适当的 steps 对象(如 buildpush)的代码片段。

    securityContext:
      capabilities:
        add: ["SETFCAP"]
  • 在此次更新之前,安装 Red Hat OpenShift Pipelines Operator 所需的时间比预期的要长。这个版本会优化一些设置来加快安装过程。
  • 在这个版本中,Buildah 和 S2I 集群任务比之前的版本要少。有些步骤已合并到一个步骤中,它们最好使用 ResourceQuotaLimitRange 对象,且不需要更多资源。
  • 在这个版本中,在集群任务中升级 Buildah、tkn CLI 工具和 skopeo CLI 工具版本。
  • 在此次更新之前,如果任何命名空间处于 Terminating 状态,Operator 会在创建 RBAC 资源时失败。在这个版本中,Operator 忽略了命名空间处于 Terminating 状态,并创建 RBAC 资源。
  • 在此次更新之前,prune cronjobs 的 pod 没有在基础架构节点上调度。相反,它们被调度到 worker 节点上,或没有调度到任何节点。在这个版本中,如果在 TektonConfig 自定义资源 (CR) 中进行了配置,这些类型的 pod 可以在基础架构节点上调度。

1.8.6. Red Hat OpenShift Pipelines 正式发布 1.8.1 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.8.1 包括在 OpenShift Container Platform 4.10, 4.11 和 4.12 中。

1.8.6.1. 已知问题
  • 默认情况下,容器具有 restricted 权限来提高安全性。restricted 权限适用于 Red Hat OpenShift Pipelines Operator 中的所有控制器 pod,以及一些集群任务。由于权限受限,git-clone 集群任务在特定配置下会失败。

    临时解决方案:无.您可以跟踪此问题 SRVKP-2634

  • 当安装程序集合处于失败状态时,TektonConfig 自定义资源的状态会被错误地显示为 True,而不是 False

    示例:失败的安装程序集

    $ oc get tektoninstallerset
    NAME                                     READY   REASON
    addon-clustertasks-nx5xz                 False   Error
    addon-communityclustertasks-cfb2p        True
    addon-consolecli-ftrb8                   True
    addon-openshift-67dj2                    True
    addon-pac-cf7pz                          True
    addon-pipelines-fvllm                    True
    addon-triggers-b2wtt                     True
    addon-versioned-clustertasks-1-8-hqhnw   False   Error
    pipeline-w75ww                           True
    postpipeline-lrs22                       True
    prepipeline-ldlhw                        True
    rhosp-rbac-4dmgb                         True
    trigger-hfg64                            True
    validating-mutating-webhoook-28rf7       True

    示例: 不正确的 TektonConfig 状态

    $ oc get tektonconfig config
    NAME     VERSION   READY   REASON
    config   1.8.1     True

1.8.6.2. 修复的问题
  • 在此次更新之前,pruner 会删除运行管道的任务运行,并显示以下警告:some tasks were indicated completed without ancestors being done。在这个版本中,pruner 会保留作为运行管道一部分的任务运行。
  • 在此次更新之前,pipeline-1.8 是安装 Red Hat OpenShift Pipelines Operator 1.8.x 的默认频道。在这个版本中,latest 是默认频道。
  • 在此次更新之前,作为 Code 控制器 pod 的 Pipelines 无法访问用户公开的证书。在这个版本中,Pipelines as Code 可以访问路由,Git 存储库由自签名或自定义证书保护。
  • 在此次更新之前,在从 Red Hat OpenShift Pipelines 1.7.2 升级到 1.8.0 后,任务会失败并带有 RBAC 错误。在这个版本中,任务会成功运行,不会出现 RBAC 错误。
  • 在此次更新之前,无法使用 tkn CLI 工具删除包含类型为 arrayresult 对象的任务运行和管道运行。在这个版本中,可以使用 tkn CLI 工具删除包含类型为 arrayresult 对象的任务运行和管道运行。
  • 在此次更新之前,如果管道规格包含带有类型为 arrayENV_VARS 参数的任务,则管道运行会失败,并带有以下错误:invalid input params for task func-buildpacks: param types don’t match the user-specified type: [ENV_VARS]。在这个版本中,带有这样的管道和任务规格的管道不会失败。
  • 在此次更新之前,集群管理员无法向 Buildah 集群任务提供 config.json 文件来访问容器 registry。在这个版本中,集群管理员可以使用 dockerconfig 工作区为 Buildah 集群任务提供 config.json 文件。

1.8.7. Red Hat OpenShift Pipelines General Availability 1.8.2 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.8.2 包括在 OpenShift Container Platform 4.10, 4.11 和 4.12 中。

1.8.7.1. 修复的问题
  • 在此次更新之前,当使用 SSH 密钥克隆存储库时,git-clone 任务会失败。在这个版本中,git-init 任务中的非 root 用户的角色会被删除,SSH 程序会在 $HOME/.ssh/ 目录中查找正确的密钥。

1.9. Red Hat OpenShift Pipelines 正式发行 1.7 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA)1.7 包括在 OpenShift Container Platform 4.9, 4.10, 和 4.11 中。

1.9.1. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.7 中的新内容。

1.9.1.1. Pipelines
  • 在这个版本中,pipelines-<version> 是安装 Red Hat OpenShift Pipelines Operator 的默认频道。例如,安装 OpenShift Pipelines Operator 版本 1.7 的默认频道是 pipelines-1.7。集群管理员还可使用 latest 频道来安装 Operator 的最新稳定版本。

    注意

    previewstable 频道将在以后的版本中被弃用并删除。

  • 当您在用户命名空间中运行命令时,您的容器以 root 身份运行(用户 ID 0),但对主机具有用户特权。在这个版本中,要在用户命名空间中运行 pod,您必须传递 CRI-O 期望的注解。

    • 要为所有用户添加这些注解,请运行 oc edit clustertask buildah 命令并编辑 buildah 集群任务。
    • 要将注解添加到特定命名空间,请将集群任务导出为该命名空间的任务。
  • 在此次更新之前,如果没有满足某些条件,则 when 表达式会跳过一个 Task 对象及其依赖的任务。在这个版本中,您可以限制 when 表达式只保护 Task 对象,而不是它的依赖项任务。要启用此更新,请在 TektonConfig CRD 中将 scope-when-expressions-to-task 标志设置为 true

    注意

    scope-when-expressions-to-task 标记已弃用,并将在以后的发行版本中删除。作为 OpenShift Pipelines 的最佳实践,使用 when 表达式会被限制为只保护 任务

  • 在这个版本中,您可以在任务中的工作区的 subPath 字段中使用变量替换。
  • 在这个版本中,您可以使用带单引号或双引号的 bracket 表示法引用参数和结果。在此次更新之前,只能使用点表示法。例如,现在以下内容等同于:

    • $(param.myparam), $(param['myparam']), and $(param["myparam"]).

      您可以使用单引号或双引号括起包含有问题的字符的参数名称,如 "."。例如,$(param['my.param'])$(param["my.param"])

  • 在这个版本中,您可以在任务定义中包含步骤的 onError 参数,而无需启用 enable-api-fields 标志。
1.9.1.2. 触发器
  • 在这个版本中,feature-flag-triggers 配置映射具有一个新的字段 labels-exclusion-pattern。您可以将此字段的值设置为正则表达式(regex)模式。控制器过滤出与事件监听器从事件监听器传播到为事件监听器创建的资源匹配的正则表达式模式的标签。
  • 在这个版本中,TriggerGroups 字段添加到 EventListener 规格中。使用此字段,您可以在选择和运行一组触发器前指定要运行的拦截器。要启用此功能,在 TektonConfig 自定义资源定义的 pipeline 部分,您必须将 enable-api-fields 字段设置为 alpha
  • 在这个版本中,Trigger 资源支持 TriggerTemplate 模板定义的自定义运行。
  • 在这个版本中,Triggers 支持从 EventListener pod 发送 Kubernetes 事件。
  • 在这个版本中,以下对象提供了计数指标: ClusterInteceptorEventListenerTriggerTemplateClusterTriggerBindingTriggerBinding
  • 在这个版本中,ServicePort 规格添加到 Kubernetes 资源。您可以使用此规格来修改公开事件监听器服务的端口。默认端口为 8080
  • 在这个版本中,您可以使用 EventListener 规格中的 targetURI 字段在触发器处理过程中发送云事件。要启用此功能,在 TektonConfig 自定义资源定义的 pipeline 部分,您必须将 enable-api-fields 字段设置为 alpha
  • 在这个版本中,tekton-triggers-eventlistener-roles 对象除了已存在的 create 动词外,现在还添加了一个 patch 动词。
  • 在这个版本中,securityContext.runAsUser 参数会从事件监听器部署中删除。
1.9.1.3. CLI
  • 在这个版本中,tkn [pipeline | pipelinerun] export 命令会导出一个管道或管道作为 YAML 文件运行。例如:

    • openshift-pipelines 命名空间中导出名为 test_pipeline 的管道:

      $ tkn pipeline export test_pipeline -n openshift-pipelines
    • openshift-pipelines 命名空间中导出名为 test_pipeline_run 的管道运行:

      $ tkn pipelinerun export test_pipeline_run -n openshift-pipelines
  • 在这个版本中,--grace 选项添加到 tkn pipelinerun cancel 中。使用 --grace 选项终止管道运行,而不是强制终止。要启用此功能,在 TektonConfig 自定义资源定义的 pipeline 部分,您必须将 enable-api-fields 字段设置为 alpha
  • 在这个版本中,在 tkn version 命令的输出中添加了 Operator 和链版本。

    重要

    Tekton 链是技术预览功能。

  • 在这个版本中,当取消管道运行时,tkn pipelinerun describe 命令显示所有取消的任务运行。在此修复之前,仅显示一个任务运行。
  • 在这个版本中,您可以在运行 tkn [t | p | p | ct] start 命令时跳过使用 --skip-optional-workspace 标记时,为可选工作区提供请求规格。您也可以在以交互模式运行时跳过它。
  • 在这个版本中,您可以使用 tkn chain 命令管理 Tekton 链。您还可以使用 --chains-namespace 选项指定要安装 Tekton 链的命名空间。

    重要

    Tekton 链是技术预览功能。

1.9.1.4. Operator
  • 在这个版本中,您可以使用 Red Hat OpenShift Pipelines Operator 来安装和部署 Tekton Hub 和 Tekton 链。

    重要

    集群中的 Tekton Hub 链和部署是技术预览功能。

  • 在这个版本中,您可以查找并使用 Pipelines 作为代码(PAC)作为附加选项。

    重要

    作为代码,管道是技术预览功能。

  • 在这个版本中,您可以通过将 communityClusterTasks 参数设置为 false 来禁用社区集群任务的安装。例如:

    ...
    spec:
      profile: all
      targetNamespace: openshift-pipelines
      addon:
        params:
        - name: clusterTasks
          value: "true"
        - name: pipelineTemplates
          value: "true"
        - name: communityClusterTasks
          value: "false"
    ...
  • 在这个版本中,您可以通过 Developer 视角禁用 Tekton Hub 集成,方法是将 TektonConfig 自定义资源中的 enable-devconsole-integration 标志设置为 false。例如:

    ...
    hub:
      params:
        - name: enable-devconsole-integration
          value: "true"
    ...
  • 在这个版本中,operator-config.yaml 配置映射启用 tkn version 命令的输出来显示 Operator 版本。
  • 在这个版本中,argocd-task-sync-and-wait 任务的版本被修改为 v0.2
  • 对于这个版本的 TektonConfig CRD ,oc get tektonconfig 命令会显示 OPerator 版本。
  • 在这个版本中,服务监控器添加到 Triggers 指标中。
1.9.1.5. Hub
重要

在集群中部署 Tekton Hub 是一个技术预览功能。

Tekton Hub 可帮助您发现、搜索和共享 CI/CD 工作流可重复使用的任务和管道。Tekton Hub 的一个公共实例位于 hub.tekton.dev 中。

集群管理员可以使用 Red Hat OpenShift Pipelines 1.7 推出,集群管理员也可以在企业集群中安装并部署 Tekton Hub 的自定义实例。您可以使用特定于您的机构的可重复使用的任务和管道来策展目录。

1.9.1.6. 链
重要

Tekton 链是技术预览功能。

Tekton Chains 是一个 Kubernetes 自定义资源定义(CRD)控制器。您可以使用它来管理使用 Red Hat OpenShift Pipelines 创建的任务和管道的供应链安全。

默认情况下,Tekton Chains 会监控 OpenShift Container Platform 集群中运行的任务。链会对完成的任务运行进行快照,将其转换为一个或多个标准有效负载格式,并签署并存储所有工件。

Tekton Chains 支持以下功能:

  • 您可以使用加密密钥类型和服务(如 cosign )为任务运行、任务运行结果和 OCI registry 镜像签名。
  • 您可以使用"测试"格式,如 in-toto
  • 您可以使用 OCI 存储库作为存储后端安全存储签名和签名工件。
1.9.1.7. 管道作为代码(PAC)
重要

作为代码,管道是技术预览功能。

使用 Pipelines 作为 Code,具有所需权限的集群管理员和用户可以将管道模板定义为源代码 Git 存储库的一部分。当由源代码推送或配置的 Git 存储库的拉取请求触发时,该功能将运行管道和报告状态。

作为代码的管道支持以下功能:

  • 拉取请求状态。在迭代拉取请求时,拉取请求的状态和控制会在托管 Git 存储库的平台上进行。
  • GitHub 检查 API 来设置管道运行的状态,包括重新检查。
  • GitHub 拉取请求和提交事件。
  • 在注释中拉取请求操作,如 /retest
  • Git 事件过滤,以及每个事件的独立管道。
  • OpenShift Pipelines 中的自动任务解析用于本地任务、Tekton Hub 和远程 URL。
  • 使用 GitHub blob 和对象 API 来检索配置。
  • 通过 GitHub 机构或使用 Prow 风格的 OWNER 文件访问控制列表(ACL)
  • tkn CLI 工具的 tkn pac 插件,您可以使用它们管理 Pipelines 作为代码软件仓库和 bootstrap。
  • 支持 GitHub 应用程序、GitHub Webhook、Bitbucket 服务器和 Bitbucket 云。

1.9.2. 已弃用的功能

  • 中断更改:此更新从 TektonConfig 自定义资源(CR)中删除 disable-working-directory-overwritedisable-home-env-overwrite 字段。因此,TektonConfig CR 不再自动设置 $HOME 环境变量和 workingDir 参数。您仍然可以使用 Task 自定义资源定义(CRD)中的 envworkingDir 字段来设置 $HOME 环境变量和 workingDir 参数。
  • Conditions 自定义资源定义(CRD)类型已弃用,计划在以后的发行版本中删除。反之,使用推荐的 when 表达式。
  • 有问题的更改: Triggers 资源验证模板,并在没有指定 EventListenerTriggerBinding 值时生成错误。

1.9.3. 已知问题

  • 当您运行 Maven 和 Jib-Maven 集群任务时,默认容器镜像仅支持 Intel(x86)架构。因此,在 ARM、IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE (s390x) 集群上的任务将失败。作为临时解决方案,您可以通过将 MAVEN_IMAGE 参数值设置为 maven:3.6.3-adoptopenjdk-11 来指定自定义镜像。

    提示

    在您使用 tkn hub 在 ARM、IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x) 上基于 Tekton Catalog 安装任务前,请验证是否可以在这些平台上执行任务。要检查 ppc64les390x 是否列在任务信息的"Platforms"部分,您可以运行以下命令: tkn hub info task <name>

  • 在 IBM Power Systems、IBM Z 和 LinuxONE 中,不支持 s2i-dotnet 集群任务。
  • 您无法使用 nodejs:14-ubi8-minimal 镜像流,因为这样做会生成以下错误:

    STEP 7: RUN /usr/libexec/s2i/assemble
    /bin/sh: /usr/libexec/s2i/assemble: No such file or directory
    subprocess exited with status 127
    subprocess exited with status 127
    error building at STEP "RUN /usr/libexec/s2i/assemble": exit status 127
    time="2021-11-04T13:05:26Z" level=error msg="exit status 127"
  • 隐式参数映射会错误地将参数从顶级 PipelinePipelineRun 定义传递给 taskRef 任务。映射应该只在顶层资源中使用任务进行,并带有非线 taskSpec 规格。这个问题只通过将 TektonConfig 自定义资源定义的 pipeline 部分中的 enable-api-fields 字段设置为 alpha 来影响启用了这个功能的集群。

1.9.4. 修复的问题

  • 在这个版本中,如果 PipelinePipelineRun 对象定义中存在 labelsannotations 的元数据,PipelineRun 类型中的值会具有优先权。您可以观察 TaskTaskRun 对象的类似行为。
  • 在这个版本中,如果 timeout.tasks 字段或 timeout.finally 字段设置为 0,则 timeout.pipeline 也被设置为 0
  • 在这个版本中,-x set 标记已从不使用 shebang 的脚本中删除。在这个版本中,减少了脚本执行的潜在数据泄漏。
  • 在这个版本中,Git 凭证中的用户名中存在的任何反斜杠字符都会被转义,并带有 .gitconfig 文件中的额外反斜杠。
  • 在这个版本中,EventListener 对象的 finalizer 属性不需要清理日志记录和配置映射。
  • 在这个版本中,与事件监听器服务器关联的默认 HTTP 客户端会被删除,并添加自定义 HTTP 客户端。因此,超时有所改进。
  • 在这个版本中,Triggers 集群角色现在可以处理所有者引用。
  • 在这个版本中,当多个拦截器返回扩展时,事件监听器中的竞争条件不会发生。
  • 在这个版本中,tkn pr delete 命令不会删除使用 ignore-running 标记运行的管道。
  • 在这个版本中,当您修改任何附加组件参数时,Operator pod 不会继续重启。
  • 在这个版本中,如果订阅和配置自定义资源中没有配置,tkn serve CLI pod 会被调度到 infra 节点上。
  • 在这个版本中,在升级过程中不会删除指定版本的集群任务。

1.9.5. Red Hat OpenShift Pipelines 正式发行 1.7.1 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA)1.7.1 包括在 OpenShift Container Platform 4.9, 4.10, 和 4.11 中。

1.9.5.1. 修复的问题
  • 在此次更新之前,升级 Red Hat OpenShift Pipelines Operator 会删除与 Tekton Hub 关联的数据库中的数据并安装新的数据库。在这个版本中,Operator 升级会保留数据。
  • 在此次更新之前,只有集群管理员才能访问 OpenShift Container Platform 控制台中的管道指标。在这个版本中,与其他集群角色的用户也可以访问管道指标。
  • 在此次更新之前,管道对包含发出大型终止消息的任务的管道运行失败。管道运行失败,因为 pod 中所有容器的终止信息总数不能超过 12 KB。在这个版本中,使用同一镜像的 place-toolsstep-init 初始化容器会合并,以减少每个任务的 pod 中运行的容器数量。该解决方案可减少运行失败管道的几率,这可尽量减少在任务 pod 中运行的容器数量。但是,它不会删除终止消息的最大允许大小限制。
  • 在此次更新之前,直接从 Tekton Hub web 控制台访问资源 URL 会导致 Nginx 404 错误。在这个版本中,Tekton Hub web 控制台镜像已被修复,以便直接从 Tekton Hub web 控制台访问资源 URL。
  • 在此次更新之前,对于每个命名空间,资源修剪器作业都会创建一个单独的容器来修剪资源。在这个版本中,资源修剪器作业作为一个容器中的一个循环运行所有命名空间的命令。

1.9.6. Red Hat OpenShift Pipelines 正式发布 1.7.2 发行注记

在这个版本中,Red Hat OpenShift Pipelines General Availability (GA)1.7.2 包括在 OpenShift Container Platform 4.9、4.10 及以后的版本中。

1.9.6.1. 已知问题
  • 在升级 Red Hat OpenShift Pipelines Operator 后,openshift-pipelines 命名空间中的 Tekton Chains 的 chains-config 配置映射会自动重置为默认。目前,这个问题还没有临时解决方案。
1.9.6.2. 修复的问题
  • 在此次更新之前,当将 init 用作第一个参数并后跟两个或更多个参数时,OpenShift Pipelines 1.7.1 上的任务会失败。在这个版本中,这些标志会被正确解析,任务可以运行成功。
  • 在此次更新之前,因为存在无效的角色绑定,在 OpenShift Container Platform 4.9 和 4.10 上安装 Red Hat OpenShift Pipelines Operator 会失败,并显示以下错误消息:

    error updating rolebinding openshift-operators-prometheus-k8s-read-binding: RoleBinding.rbac.authorization.k8s.io "openshift-operators-prometheus-k8s-read-binding" is invalid: roleRef: Invalid value: rbac.RoleRef{APIGroup:"rbac.authorization.k8s.io", Kind:"Role", Name:"openshift-operator-read"}: cannot change roleRef

    在这个版本中,Red Hat OpenShift Pipelines Operator 安装有不同的角色绑定命名空间,以避免与其他 Operator 安装冲突。

  • 在此次更新之前,升级 Operator 会触发 Tekton Chains 的 signed-secrets secret 键重置为默认值。在这个版本中,在升级 Operator 后自定义 secret 密钥会保留。

    注意

    升级到 Red Hat OpenShift Pipelines 1.7.2 会重置密钥。但是,当您升级到将来的版本时,会需要保留该密钥。

  • 在此次更新之前,所有 S2I 构建任务都会失败,并显示类似以下消息的错误:

    Error: error writing "0 0 4294967295\n" to /proc/22/uid_map: write /proc/22/uid_map: operation not permitted
    time="2022-03-04T09:47:57Z" level=error msg="error writing \"0 0 4294967295\\n\" to /proc/22/uid_map: write /proc/22/uid_map: operation not permitted"
    time="2022-03-04T09:47:57Z" level=error msg="(unable to determine exit status)"

    在这个版本中,pipeline-scc 安全性上下文约束 (SCC) 与 BuildahS2I 集群任务所需的 SETFCAP 功能兼容。因此,BuildahS2I 构建任务可以成功运行。

    要成功运行 Buildah 集群任务和 S2I 构建任务,适用于使用各种语言和框架编写的应用程序,添加以下适当的 steps 对象(如 buildpush)的代码片段。

    securityContext:
      capabilities:
        add: ["SETFCAP"]

1.9.7. Red Hat OpenShift Pipelines 正式发布 1.7.3 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA)1.7.3 包括在 OpenShift Container Platform 4.9, 4.10, 和 4.11 中。

1.9.7.1. 修复的问题
  • 在此次更新之前,如果任何命名空间处于 Terminating 状态,Operator 会在创建 RBAC 资源时失败。在这个版本中,Operator 忽略了命名空间处于 Terminating 状态,并创建 RBAC 资源。
  • 在以前的版本中,升级 Red Hat OpenShift Pipelines Operator 会导致重新创建 pipeline 服务帐户,这意味着链接到服务帐户的 secret 会丢失。在这个版本中解决了这个问题。在升级过程中,Operator 不再重新创建 pipeline 服务帐户。因此,已附加到 pipeline 服务帐户的 secret 在升级后会保留,资源(任务和管道)可以继续正常工作。

1.10. Red Hat OpenShift Pipelines 正式发行 1.6 发行注记

在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA)1.6 包括在 OpenShift Container Platform 4.9 中。

1.10.1. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.6 中的新内容。

  • 在这个版本中,您可以配置管道或任务的 start 命令(使用 --output <string>,其中 <string>yamljson )来返回 YAML 或 JSON 格式的字符串。如果没有使用 --output 选项,start 命令会返回人类友好的消息,而其他程序很难解析该消息。返回 YAML 或 JSON 格式的字符串对于持续集成(CI)环境非常有用。例如,在创建了资源后,您可以使用 yqjq 解析有关资源的 YAML 或 JSON 格式消息,并等待该资源终止而不使用 showlog 选项。
  • 在这个版本中,您可以使用 Podman 的 auth.json 身份验证文件对 registry 进行身份验证。例如,您可以使用 tkn bundle push 来使用 Podman 而不是 Docker CLI 推送到远程 registry。
  • 在这个版本中,如果您使用 tkn [taskrun | pipelinerun] delete --all 命令,您可以使用新的 --keep-since <minutes> 选项来指定一个分钟数,存在时间少于这个分钟数的运行会被保留。例如,若要保持存在的时间少于五分钟的运行,输入 tkn [taskrun | pipelinerun] delete -all --keep-since 5
  • 在这个版本中,当删除任务运行或管道运行时,您可以将 --parent-resource--keep-since 选项一起使用。例如,tkn pipelinerun delete --pipeline pipelinename --keep-since 5 命令会保留其父资源名为 pipelinename,其存在时间为五分钟或更短的管道运行。对于任务运行,tkn tr delete -t <taskname> --keep-since 5tkn tr delete --clustertask <taskname> --keep-since 5 有类似效果。
  • 在这个版本中,增加了对用于 v1beta1 资源的触发器资源的支持。
  • 在这个版本中,在 tkn pipelinerun deletetkn taskrun delete 命令中添加了一个 ignore-running 选项。
  • 在这个版本中,为 tkn tasktkn clustertask 命令添加一个 create 子命令。
  • 在这个版本中,当使用 tkn pipelinerun delete --all 命令时,您可以使用新的 --label <string> 选项来根据标签过滤管道运行。另外,您还可以在 --label 选项中使用 === 作为相等运算符,或者 != 作为不相等运算符。例如,tkn pipelinerun delete --all --label asdftkn pipelinerun delete --all --label==asdf 命令都会删除带有 asdf 标签的所有管道运行。
  • 在这个版本中,您可以从配置映射获取已安装的 Tekton 组件版本,或者从部署控制器获取配置映射的版本。
  • 在这个版本中,触发器支持使用 feature-flagsconfig-defaults 配置映射来分别配置功能标记和设置默认值。
  • 在这个版本中,添加了一个新的指标 eventlistener_event_count,您可以使用它来统计 EventListener 资源接收的事件。
  • 在这个版本中添加了 v1beta1 Go API 类型。在这个版本中,触发器支持 v1beta1 API 版本。

    在当前发行版本中,v1alpha1 功能已弃用,并将在以后的发行版本中删除。改为使用 v1beta1 功能替代。

  • 在当前发行版本中,默认启用自动运行资源。另外,您可以使用以下新注解为每个命名空间单独配置自动运行任务运行和管道运行:

    • operator.tekton.dev/prune.schedule:如果此注解的值与 TektonConfig 自定义资源定义中指定的值不同,则会在该命名空间中创建新的 cron 作业。
    • operator.tekton.dev/prune.skip:设置为 true 时,配置它的命名空间不会被修剪。
    • operator.tekton.dev/prune.resources:此注解接受以逗号分隔的资源列表。要修剪单一资源,如管道运行,将此注解设置为 "pipelinerun"。要修剪多个资源,如任务运行和管道运行,将此注解设置为 "taskrun, pipelinerun"
    • operator.tekton.dev/prune.keep:使用此注解保留资源而不进行修剪。
    • operator.tekton.dev/prune.keep-since:使用此注解来根据其存在的时间来保留资源。此注解的值必须等于资源的年龄(以分钟为单位)。例如,若要保留在五天内创建的资源,请将 keep-since 设置为 7200

      注意

      keepkeep-since 注释是互斥的。对于任何资源,您只能配置其中一个。

    • operator.tekton.dev/prune.strategy:将此注解的值设置为 keepkeep-since
  • 管理员可以禁用在整个集群中创建 pipeline 服务帐户创建,从而防止因为错误地使用关联的 SCC(这与 anyuid 非常相似)造成权限升级的问题。
  • 现在,您可以使用 TektonConfig 自定义资源(CR)和单个组件的 CR 配置功能标记和组件,如 TektonPipelineTektonTriggers。此级别的颗粒度有助于为各个组件的 Tekton OCI 捆绑包自定义和测试 alpha 功能。
  • 现在,您可以为 PipelineRun 资源配置可选的 Timeouts 字段。例如,您可以单独为管道运行、每个任务运行以及 finally 任务配置超时。
  • TaskRun 资源生成的 Pod 现在会设置 pod 的 activeDeadlineSeconds 字段。这可让 OpenShift 将它们视为终止,并允许您将具有特定作用域的 ResourceQuota 对象用于容器集。
  • 您可以使用 configmaps 在任务运行、管道运行、任务和管道上消除指标标签或标签类型。另外,您可以为测量持续时间配置不同类型的指标,如直方图、量表或最后一个值。
  • 您可以统一定义 pod 的请求和限值,因为 Tekton 现在通过考虑 MinMaxDefaultDefaultRequest 字段来全面支持 LimitRange 对象。
  • 引入了以下 alpha 功能:

    • 现在,管道运行可以在运行 finally 任务后停止,而不是之前停止直接运行所有任务的行为。在这个版本中添加了以下 spec.status 值:

      • StoppedRunFinally 将在当前运行的任务完成后停止,然后运行 finally 任务。
      • CancelledRunFinally 将立即取消正在运行的任务,然后运行 finally 任务。
      • Cancelled 将保留 PipelineRunCancelled 状态提供的以前行为。

        注意

        Cancelled 状态替换已弃用的 PipelineRunCancelled 状态,该状态将在 v1 版本中删除。

    • 现在,您可以使用 oc debug 命令将任务运行设置为 debug 模式,这会暂停执行并允许您检查 pod 中的特定步骤。
    • 当您将一个步骤的 onError 字段设置为 continue 时,会记录该步骤的退出代码并传递给后续步骤。但是,任务运行不会失败,任务中其余步骤的执行将继续。要保留现有的行为,您可以将 onError 字段的值设置为 stopAndFail
    • 任务现在可以接受比实际使用更多的参数。启用 alpha 功能标记时,参数可以隐式传播到内联规格。例如,内联任务可以访问其父管道运行的参数,而不必为任务明确定义每个参数。
    • 如果您为 alpha 功能启用标记,则 When 表达式下的条件将仅适用于直接关联的任务,而不是任务的依赖项。要将 When 表达式应用到关联的任务及其依赖关系中,您必须将表达式与每个相依任务单独关联。请注意,进入下一步是 Tekton 的任何新 API 版本中 When 表达式的默认行为。现有的默认行为将被弃用,而由此更新替代。
  • 当前发行版本允许您通过在 TektonConfig 自定义资源(CR)中指定 nodeSelectortolerations 值来配置节点选择。Operator 将这些值添加到它创建的所有部署中。

    • 要为 Operator 的控制器和 webhook 部署配置节点选择,请在安装 Operator 后编辑 Subscription CR 规格中的 config.nodeSelectorconfig.tolerations 字段。
    • 要在基础架构节点上部署 OpenShift Pipelines 的其余 control plane pod,请使用 nodeSelectortolerations 字段更新 TektonConfig CR。然后,修改会应用到 Operator 创建的所有 pod。

1.10.2. 已弃用的功能

  • 在 CLI 0.21.0 中,已弃用了对 clustertask, task, taskrun, pipeline, 和 pipelinerun 的所有 v1alpha1 资源的支持。这些资源现已过时,并将在以后的发行版本中删除。
  • 在 Tekton Triggers v0.16.0 中,冗余的 status 标签已从 EventListener 资源的指标中删除。

    重要

    中断更改: status 标签已从 eventlistener_http_duration_seconds_* 指标中删除。删除基于 status 标签的查询。

  • 在当前发行版本中,v1alpha1 功能已弃用,并将在以后的发行版本中删除。在这个版本中,您可以改为使用 v1beta1 Go API 类型。触发器现在支持 v1beta1 API 版本。
  • 在当前发行版本中,EventListener 资源会在触发器完成处理前发送响应。

    重要

    中断更改:使用此更改时,EventListener 资源会在创建资源时停止响应 201 Created 的状态代码。相反,它使用 202 Accepted 的响应代码进行响应。

  • 当前发行版本从 EventListener 资源中删除 podTemplate 字段。

    重要

    中断更改:删除了作为 #1100 一部分的 podTemplate 字段。

  • 当前发行版本从 EventListener 资源规格中删除已弃用的 replicas 字段。

    重要

    中断更改:已弃用的 replicas 字段已被删除。

  • 在 Red Hat OpenShift Pipelines 1.6 中,HOME="/tekton/home"workingDir="/workspace" 的值从 Step 对象的规格中删除。

    相反,Red Hat OpenShift Pipelines 将 HOMEworkingDir 设置为运行 Step 对象的容器定义的值。您可以在 Step 对象的规格中覆盖这些值。

    要使用旧的行为,您可以将 TektonConfig CR 中的 disable-working-directory-overwritedisable-home-env-overwrite 字段改为 false

    apiVersion: operator.tekton.dev/v1alpha1
      kind: TektonConfig
      metadata:
        name: config
      spec:
        pipeline:
          disable-working-directory-overwrite: false
          disable-home-env-overwrite: false
      ...
    重要

    TektonConfig CR 中的 disable-working-directory-overwritedisable-home-env-overwrite 字段现已弃用,并将在以后的发行版本中删除。

1.10.3. 已知问题

  • 当您运行 Maven 和 Jib-Maven 集群任务时,默认容器镜像仅支持 Intel(x86)架构。因此,在 IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x)集群上的任务将失败。作为临时解决方案,您可以通过将 MAVEN_IMAGE 参数值设置为 maven:3.6.3-adoptopenjdk-11 来指定自定义镜像。
  • 在 IBM Power Systems、IBM Z 和 LinuxONE 中,不支持 s2i-dotnet 集群任务。
  • 在您使用 tkn hub 在 IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x) 上基于 Tekton Catalog 安装任务前,请验证是否可以在这些平台上执行任务。要检查 ppc64les390x 是否列在任务信息的"Platforms"部分,您可以运行以下命令: tkn hub info task <name>
  • 您无法使用 nodejs:14-ubi8-minimal 镜像流,因为这样做会生成以下错误:

    STEP 7: RUN /usr/libexec/s2i/assemble
    /bin/sh: /usr/libexec/s2i/assemble: No such file or directory
    subprocess exited with status 127
    subprocess exited with status 127
    error building at STEP "RUN /usr/libexec/s2i/assemble": exit status 127
    time="2021-11-04T13:05:26Z" level=error msg="exit status 127"

1.10.4. 修复的问题

  • 现在,IBM Power Systems、IBM Z 和 LinuxONE 支持 tkn hub 命令。
  • 在更新前,当用户运行 tkn 命令并完成管道运行后,终端不可用,即使指定了 retries 也是如此。在任务运行或管道运行中指定超时无效。在这个版本中解决了这个问题,终端可以在运行命令后可用。
  • 在更新前,运行 tkn pipelinerun delete --all 会删除所有资源。在这个版本中,处于 running 状态的资源无法被删除。
  • 在这个版本中,使用 tkn version --component=<component> 命令不会返回组件版本。在这个版本中解决了这个问题,这个命令会返回组件版本。
  • 在更新前,当您使用 tkn pr logs 命令时,它会以错误的任务顺序显示管道输出日志。在这个版本中解决了这个问题,已完成的 PipelineRuns 的日志会在适当的 TaskRun 执行顺序中列出。
  • 在这个版本中,编辑正在运行的管道规格可能会阻止管道运行在完成后停止。在这个版本中,只获取定义一次,然后使用存储在状态中的规格进行验证,从而解决了这个问题。当 PipelineRunTaskRun 指代的 PipelineTask 在运行时会发生变化,这个变化减少了出现竞争条件的可能性。
  • When 表达式值可以有数组参数引用,例如 values: [$(params.arrayParam[*])]

1.10.5. Red Hat OpenShift Pipelines 正式发行版本 1.6.1 发行注记

1.10.5.1. 已知问题
  • 从旧版本升级到 Red Hat OpenShift Pipelines 1.6.1 后,OpenShift Pipelines 可能会进入不一致的状态,因为您无法对 Tekton 资源(tasks 和 pipelines)执行任何操作(create/delete/apply)。例如,在删除资源时,您可能会遇到以下错误:

    Error from server (InternalError): Internal error occurred: failed calling webhook "validation.webhook.pipeline.tekton.dev": Post "https://tekton-pipelines-webhook.openshift-pipelines.svc:443/resource-validation?timeout=10s": service "tekton-pipelines-webhook" not found.
1.10.5.2. 修复的问题
  • Red Hat OpenShift Pipelines 设置的 SSL_CERT_DIR 环境变量(/tekton-custom-certs)不会用证书文件覆盖以下默认系统目录:

    • /etc/pki/tls/certs
    • /etc/ssl/certs
    • /system/etc/security/cacerts
  • Horizontal Pod Autoscaler 可以管理 Red Hat OpenShift Pipelines Operator 控制的部署副本数。在这个发行版本中,如果最终用户或集群代理更改了计数,Red Hat OpenShift Pipelines Operator 不会重置管理的部署的副本计数。但是,升级 Red Hat OpenShift Pipelines Operator 时会重置副本。
  • 现在,根据 TektonConfig 自定义资源中指定的节点选择器和容限(toleration)限制将把 tkn CLI 的 pod 调度到节点上。

1.10.6. Red Hat OpenShift Pipelines 正式发行版本 1.6.2 发行注记

1.10.6.1. 已知问题
  • 当您创建新项目时,pipeline 服务帐户的创建会被延迟,并删除现有集群任务和管道模板需要超过 10 分钟。
1.10.6.2. 修复的问题
  • 在此次更新之前,在从旧版本升级到 Red Hat OpenShift Pipelines 1.6.1 后,会为管道创建多个 Tekton 安装程序集实例。在这个版本中,Operator 可确保升级后每个类型为 TektonInstallerSet 的一个实例都存在。
  • 在此次更新之前,Operator 中的所有协调程序都使用组件版本在升级到旧版本的 Red Hat OpenShift Pipelines 1.6.1 期间决定资源重新创建。因此,这些资源不会被重新创建,其组件版本没有在升级过程中改变。在这个版本中,Operator 使用 Operator 版本而不是组件版本来决定升级过程中的资源重新创建。
  • 在此次更新之前,升级后,集群中缺少管道 Webhook 服务。这是因为配置映射上的升级死锁。在这个版本中,如果集群中不存在配置映射,添加了一个机制来禁用 Webhook 验证。因此,在升级后管道 Webhook 服务会保留在集群中。
  • 在此次更新之前,在任何配置更改到命名空间后,自动运行操作的 cron 作业会被重新创建。在这个版本中,只有在命名空间中有相关注解改变时,才会重新创建 auto-pruning 的 cron 任务。
  • Tekton Pipelines 的上游版本被修订为 v0.28.3,它包括以下修复:

    • 修复 PipelineRunTaskRun 对象,以允许进行标签或注解。
    • 对于隐式参数:

      • 不要将 PipelineSpec 参数应用到 TaskRefs 对象。
      • 禁用 Pipeline 对象的隐式参数行为。

1.10.7. Red Hat OpenShift Pipelines 正式发布 1.6.3 发行注记

1.10.7.1. 修复的问题
  • 在此次更新之前,Red Hat OpenShift Pipelines Operator 从组件(如 Pipelines 和 Triggers)中安装 Pod 安全策略。但是,作为组件的一部分提供的 Pod 安全策略在以前的版本中已被弃用。在这个版本中,Operator 会停止从组件安装 Pod 安全策略。因此,以下升级路径会受到影响:

    • 从 OpenShift Pipelines 1.6.1 或 1.6.2 升级到 OpenShift Pipelines 1.6.3 会删除 Pod 安全策略,包括 Pipelines 和 Triggers 组件中的 Pod 安全策略。
    • 从 OpenShift Pipelines 1.5.x 升级到 1.6.3 会保留从组件安装的 Pod 安全策略。作为集群管理员,您可以手动删除它们。

      注意

      当您升级到将来的版本时,Red Hat OpenShift Pipelines Operator 会自动删除所有过时的 Pod 安全策略。

  • 在此次更新之前,只有集群管理员才能访问 OpenShift Container Platform 控制台中的管道指标。在这个版本中,与其他集群角色的用户也可以访问管道指标。
  • 在此次更新之前,带有 OpenShift Pipelines Operator 的基于角色的访问控制 (RBAC) 问题会导致升级或安装组件的问题。这个版本提高了安装各种 Red Hat OpenShift Pipelines 组件的可靠性和一致性。
  • 在此次更新之前,在 TektonConfig CR 中将 clusterTaskspipelineTemplates 字段设置为 false 时,会降低删除集群任务和管道模板。这个版本提高了 Tekton 资源(如集群任务和管道模板)的生命周期管理速度。

1.10.8. Red Hat OpenShift Pipelines 正式发布 1.6.4 发行注记

1.10.8.1. 已知问题
  • 从 Red Hat OpenShift Pipelines 1.5.2 升级到 1.6.4 后,访问事件监听程序路由会返回 503 错误。

    临时解决方案:修改事件监听器路由的 YAML 文件中的目标端口。

    1. 为相关命名空间提取路由名称。

      $ oc get route -n <namespace>
    2. 编辑路由以修改 targetPort 字段的值。

      $ oc edit route -n <namespace> <el-route_name>

      示例:现有事件监听程序路由

      ...
      spec:
        host: el-event-listener-q8c3w5-test-upgrade1.apps.ve49aws.aws.ospqa.com
        port:
          targetPort: 8000
        to:
          kind: Service
          name: el-event-listener-q8c3w5
          weight: 100
        wildcardPolicy: None
      ...

      示例:修改事件监听程序路由

      ...
      spec:
        host: el-event-listener-q8c3w5-test-upgrade1.apps.ve49aws.aws.ospqa.com
        port:
          targetPort: http-listener
        to:
          kind: Service
          name: el-event-listener-q8c3w5
          weight: 100
        wildcardPolicy: None
      ...

1.10.8.2. 修复的问题
  • 在此次更新之前,如果任何命名空间处于 Terminating 状态,Operator 会在创建 RBAC 资源时失败。在这个版本中,Operator 忽略了命名空间处于 Terminating 状态,并创建 RBAC 资源。
  • 在此次更新之前,该任务会在没有注解指定关联的 Tekton 控制器发行版本而运行失败或重启。在这个版本中,包含适当的注解会被自动运行,没有失败或重启的任务。

1.11. Red Hat OpenShift Pipelines 正式发行 1.5 发行注记

Red Hat OpenShift Pipelines General Availability (GA) 1.5 现在包括在 OpenShift Container Platform 4.8 中。

1.11.1. 兼容性和支持列表

这个版本中的一些功能当前还只是一个技术预览。它们并不适用于在生产环境中使用。

在下表中,被标记为以下状态的功能:

TP

技术预览

GA

公开发行

请参阅红帽门户网站中关于对技术预览功能支持范围的信息:

表 1.2. 兼容性和支持列表
功能版本支持状态

Pipelines

0.24

GA

CLI

0.19

GA

目录

0.24

GA

触发器

0.14

TP

Pipeline 资源

-

TP

如果您有疑问或希望提供反馈信息,请向产品团队发送邮件 pipelines-interest@redhat.com

1.11.2. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.5 中的新内容。

  • Pipeline 运行和任务运行将由目标命名空间中的 cron 作业自动修剪。cron 作业使用 IMAGE_JOB_PRUNER_TKN 环境变量来获取 tkn image 的值。在这个版本中,TektonConfig 自定义资源包括以下字段:

    ...
    pruner:
      resources:
        - pipelinerun
        - taskrun
      schedule: "*/5 * * * *" # cron schedule
      keep: 2 # delete all keeping n
    ...
  • 在 OpenShift Container Platform 中,您可以通过修改 TektonConfig 自定义资源中的新参数 clusterTaskspipelinesTemplates 的值来自定义 Tekton Add-ons 组件的安装:

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      profile: all
      targetNamespace: openshift-pipelines
      addon:
        params:
        - name: clusterTasks
          value: "true"
        - name: pipelineTemplates
          value: "true"
    ...

    如果您使用 TektonConfig 创建附加组件,或者直接使用 Tekton Add-ons 创建附加组件,则允许进行自定义。但是,如果没有传递参数,控制器会添加带有默认值的参数。

    注意
    • 如果使用 TektonConfig 自定义资源创建附加组件,并且稍后在 Addon 自定义资源中更改参数值,则 TektonConfig 自定义资源中的值将覆盖更改。
    • 只有在 clusterTasks 参数的值为 true 时,才可将 pipelinesTemplates 参数的值设置为 true
  • enableMetrics 参数添加到 TektonConfig 自定义资源中。您可以使用它来禁用服务监控器,这是 OpenShift Container Platform 的 Tekton Pipelines 的一部分。

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      profile: all
      targetNamespace: openshift-pipelines
      pipeline:
        params:
        - name: enableMetrics
          value: "true"
    ...
  • 添加了 EventListener OpenCensus 指标(在进程级别捕获指标)。
  • 触发器现在具有标签选择器;您可以使用标签为事件监听程序配置触发器。
  • 添加了用于注册拦截器的 ClusterInterceptor 自定义资源定义,允许您注册您可以插入的新 Interceptor 类型。另外,还会进行以下相关更改:

    • 在触发器规格中,您可以使用包含 ref 字段的新 API 来配置拦截器来引用集群拦截器。另外,您可以使用 params 字段添加传递到拦截器进行处理的参数。
    • 捆绑的拦截器 CEL、GitHub、GitLab 和 BitBucket 已迁移。它们使用新的 ClusterInterceptor 自定义资源定义来实施。
    • 核心拦截器迁移到新格式,使用旧语法创建的任何新触发器都会自动切换到新的 refparams 语法。
  • 要在显示日志时禁用任务名称的前缀或步骤,可将 --prefix 选项用于 log 命令。
  • 要显示特定组件的版本,请使用 tkn version 命令中的新的 --component 标志。
  • 添加了 tkn hub check-upgrade 命令,其他命令会根据管道版本进行修改。此外,search 命令输出中也会显示目录名称。
  • start 命令中添加了对可选工作区的支持。
  • 如果 plugins 目录中不存在插件,则会在当前路径中搜索它们。
  • tkn start [task | clustertask | pipeline] 命令以互动方式启动,并询问 params 值,即使指定了默认参数也是如此。若要停止交互式提示,可在调用 命令时传递 --use-param-defaults 标志。例如:

    $ tkn pipeline start build-and-deploy \
        -w name=shared-workspace,volumeClaimTemplateFile=https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.13/01_pipeline/03_persistent_volume_claim.yaml \
        -p deployment-name=pipelines-vote-api \
        -p git-url=https://github.com/openshift/pipelines-vote-api.git \
        -p IMAGE=image-registry.openshift-image-registry.svc:5000/pipelines-tutorial/pipelines-vote-api \
        --use-param-defaults
  • version 字段在 tkn task describe 命令中添加。
  • 如果只有一个资源,则会自动选择 TriggerTemplateTriggerBindingClusterTriggerBindingEventlistener 等资源的选项会添加到 describe 命令中。
  • tkn pr describe 命令中添加了跳过的任务部分。
  • 添加了对 tkn clustertask logs 的支持。
  • 移除 config.yaml 中的 YAML 合并和变量。另外,现在 kustomizeytt 等工具可以更轻松地使用 release.yaml 文件。
  • 添加了对包含句点字符(".")的资源名称的支持。
  • PodTemplate 规格中的 hostAliases 数组添加到主机名解析的 pod 级别覆盖中。它通过修改 /etc/hosts 文件来实现。
  • 引入了一个变量 $(tasks.status),用于访问任务的聚合执行状态。
  • 为 Windows 添加入口点二进制构建。

1.11.3. 已弃用的功能

  • when 表达式中,对写入的字段的支持会被删除。when 表达式仅支持使用小写字母编写的字段。

    注意

    如果您在 Tekton Pipelines v0.16 (Operator v1.2.x) 中应用了一个带有 when 表达式的管道,则必须重新应用它。

  • 当您将 Red Hat OpenShift Pipelines Operator 升级到 v1.5 时,openshift-clientopenshift-client-v-1-5-0 集群任务会具有 SCRIPT 参数。但是,ARGS 参数和 git 资源会从 openshift-client 集群任务的规格中删除。这个变化可能会造成问题,只有在 ClusterTask 资源的 name 字段中没有特定版本的集群任务才可以无缝地进行升级。

    要防止管道运行出现问题,在升级后使用 SCRIPT 参数,因为它会将之前在 ARGS 参数中指定的值移到集群任务的 SCRIPT 参数中。例如:

    ...
    - name: deploy
      params:
      - name: SCRIPT
        value: oc rollout status <deployment-name>
      runAfter:
        - build
      taskRef:
        kind: ClusterTask
        name: openshift-client
    ...
  • 当您从 Red Hat OpenShift Pipelines Operator v1.4 升级到 v1.5 时,TektonConfig 自定义资源的配置集名称现在会改变。

    表 1.3. TektonConfig 自定义资源的配置集
    Pipelines 1.5 中的配置集Pipelines 1.4 中的对应的配置集安装的 Tekton 组件

    All (默认配置集)

    All (默认配置集)

    Pipelines、Triggers、Add-ons

    Basic

    默认

    Pipelines、Triggers

    Lite

    Basic

    Pipelines

    注意

    如果在 TektonConfig 自定义资源的 config 实例中使用 profile: all,则不需要更改资源规格。

    但是,如果安装的 Operator 在升级前是 Default 或 Basic 配置集,则必须在升级后编辑 TektonConfig 自定义资源的 config 实例。例如,如果配置在升级前是 profile: basic,请确保在升级到 Pipelines 1.5 后为 profile: lite

  • disable-home-env-overwritedisable-working-dir-overwrite 字段现已弃用,并将在以后的发行版本中删除。在本发行版本中,这些标志的默认值被设置为 true,以便向后兼容。

    注意

    在下一个发行版本 (Red Hat OpenShift Pipelines 1.6) 中,HOME 环境变量不会自动设置为 /tekton/home,对于任务运行的默认工作目录也不会设置为 /workspace。这些默认设置与步骤中镜像 Dockerfile 设置的任何值冲突。

  • ServiceTypepodTemplate 字段已从 EventListener spec 中删除。
  • 控制器服务帐户不再请求集群范围的权限来列出和监视命名空间。
  • EventListener 资源的状态有一个名为 Ready 的新条件。

    注意

    将来,EventListener 资源的其他状态条件将会被弃用,而使用 Ready 状态条件。

  • EventListener 响应中的 eventListenernamespace 字段已弃用。现在改为使用 eventListenerUID 字段。
  • replicasEventListener spec 中已被弃用。相反,spec.replicas 字段移到 KubernetesResource spec 中的 spec.resources.kubernetesResource.replicas

    注意

    replicas 字段将在以后的发行版本中删除。

  • 配置内核拦截器的旧方法已弃用。但是,它会继续正常工作,直到在以后的版本中被删除。现在,Trigger 资源中的拦截器被配置为使用新的基于 refparams 的语法。生成的默认 webhook 会自动将旧语法的使用切换为新触发器的新语法。
  • 对于 ClusterRoleBinding 资源,使用 Userbac.authorization.k8s.io/v1 而不是已弃用的 deprecatedrbac.authorization.k8s.io/v1beta1
  • 在集群角色中,对资源(如 serviceaccountssecretsconfigmapslimitranges 等)的集群范围的写访问权限已被移除。另外,对资源(如 deploymentsstatefulsetsdeployment/finalizers 等)的集群范围的访问权限也被移除。
  • Tekton 不再使用 caching.internal.knative.dev 组中的 image 自定义资源定义,它已在此发行版本中排除。

1.11.4. 已知问题

  • git-cli 集群任务使用 alpine/git 基础镜像构建,它预期 /root 作为用户的主目录。但是,这并没有在 git-cli 集群任务中显式设置。

    在 Tekton 中,任务的每个步骤都会使用 /tekton/home 覆盖默认主目录,除非另有指定。这会覆盖基础镜像的 $HOME 环境变量,从而导致 git-cli 集群任务失败。

    此问题有望在即将发布的版本中解决。对于 Red Hat OpenShift Pipelines 1.5 及更早的版本,您可以使用以下任一临时解决方案来避免 git-cli 集群任务失败:

    • 在步骤中设置 $HOME 环境变量,使其不会被覆盖。

      1. [可选] 如果您使用 Operator 安装了 Red Hat OpenShift Pipelines,然后将 git-cli 集群任务克隆到一个单独的任务中。此方法可确保 Operator 不会覆盖对集群任务所做的更改。
      2. 执行 oc edit clustertasks git-cli 命令。
      3. 将预期的 HOME 环境变量添加到步骤的 YAML 中:

        ...
        steps:
          - name: git
            env:
            - name: HOME
              value: /root
            image: $(params.BASE_IMAGE)
            workingDir: $(workspaces.source.path)
        ...
        警告

        对于 Operator 安装的 Red Hat OpenShift Pipelines,如果您在更改 HOME 环境变量前没有将 git-cli 集群任务克隆到单独的任务中,则会在 Operator 协调过程中覆盖更改。

    • 禁用在 feature-flags 配置映射中覆盖 HOME 环境变量。

      1. 执行 oc edit -n openshift-pipelines configmap feature-flags 命令。
      2. disable-home-env-overwrite 标志的值设置为 true

        警告
        • 如果使用 Operator 安装 Red Hat OpenShift Pipelines,则在 Operator 协调过程中会覆盖更改。
        • 修改 disable-home-env-overwrite 标志的默认值可能会破坏其他任务和集群任务,因为它会更改所有任务的默认值。
    • git-cli 集群任务使用其他服务帐户,因为在使用管道的默认服务帐户时会覆盖 HOME 环境变量。

      1. 创建新服务帐户。
      2. 将您的 Git secret 链接到您刚才创建的服务帐户。
      3. 在执行任务或管道时使用服务帐户。
  • 在 IBM Power Systems、IBM Z 和 LinuxONE 中,不支持 s2i-dotnet 集群任务和 tkn hub 命令。
  • 当您运行 Maven 和 Jib-Maven 集群任务时,默认容器镜像仅支持 Intel(x86)架构。因此,在 IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x)集群上的任务将失败。作为临时解决方案,您可以通过将 MAVEN_IMAGE 参数值设置为 maven:3.6.3-adoptopenjdk-11 来指定自定义镜像。

1.11.5. 修复的问题

  • dag 任务中的 when 表达式不允许指定任何其他任务访问执行状态的上下文变量 ($(tasks.<pipelineTask>.status))。
  • 使用 Owner UID 而不是 Owner 名称,这有助于在 PipelineRun 资源快速删除并重新创建的情况下,避免通过删除 volumeClaimTemplate PVC 创建的竞争条件。
  • 为非 root 用户触发的 build-base 镜像添加了 pullrequest-init 的新 Dockerfile。
  • 当一个管道或任务在运行时使用 -f 选项,且它的定义中的 param 中没有定义 type,将生成一个验证错误,而不是管道或任务以静默方式运行失败。
  • 对于 tkn start [task | pipeline | clustertask] 命令,--workspace 标记的描述现在一致。
  • 在解析参数时,如果遇到空数组,则对应的交互式帮助现在会显示为空字符串。

1.12. Red Hat OpenShift Pipelines 正式发布 1.4 发行注记

Red Hat OpenShift Pipelines General Availability(GA)1.4 现在包括在 OpenShift Container Platform 4.7 中。

注意

除了 stable 和 preview Operator 频道外,Red Hat OpenShift Pipelines Operator 1.4.0 还带有 ocp-4.6、ocp-4.5 和 ocp-4.4 弃用的频道。这些过时的频道及其支持将在以下 Red Hat OpenShift Pipelines 发行版本中删除。

1.12.1. 兼容性和支持列表

这个版本中的一些功能当前还只是一个技术预览。它们并不适用于在生产环境中使用。

在下表中,被标记为以下状态的功能:

TP

技术预览

GA

公开发行

请参阅红帽门户网站中关于对技术预览功能支持范围的信息:

表 1.4. 兼容性和支持列表
功能版本支持状态

Pipelines

0.22

GA

CLI

0.17

GA

目录

0.22

GA

触发器

0.12

TP

Pipeline 资源

-

TP

如果您有疑问或希望提供反馈信息,请向产品团队发送邮件 pipelines-interest@redhat.com

1.12.2. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.4 中的新内容。

  • 自定义任务有以下改进:

    • Pipeline 结果现在可以引用自定义任务生成的结果。
    • 自定义任务现在可以使用工作区、服务帐户和 pod 模板来构建更复杂的自定义任务。
  • finally 的任务包括以下改进:

    • finally 任务中支持 when 表达式,它可以有效地保证执行,并提高了任务的可重复使用性。
    • finally 任务可以被配置为消耗同一管道中任何任务的结果。

      注意

      OpenShift Container Platform 4.7 web 控制台中不支持 when 表达式和 finally 任务。

  • 添加了对 dockercfgdockerconfigjson 类型的多个 secret 的支持,以便在运行时进行身份验证。
  • 添加支持 git-clone 任务的 sparse-checkout 的功能。这可让您将存储库的子集克隆为本地副本,并帮助您限制克隆的存储库的大小。
  • 您可以创建管道以待处理状态运行,而无需实际启动它们。在负载非常重的集群中,这允许 Operator 控制管道运行的开始时间。
  • 确保为控制器手动设置 SYSTEM_NAMESPACE 环境变量 ; 这在之前被默认设置。
  • 现在,一个非 root 用户被添加到管道的构建基础镜像中,以便 git-init 能够以非 root 用户身份克隆存储库。
  • 支持在管道运行启动前在已解析的资源间验证依赖项。管道中的所有结果变量都必须有效,管道中的可选工作区只能传递给期望管道启动运行的任务。
  • controller 和 Webhook 作为非 root 组运行,并且删除了它们的多余功能,以使它们更加安全。
  • 您可以使用 tkn pr logs 命令查看重试任务运行的日志流。
  • 您可以使用 tkn tr delete 命令中的 --clustertask 选项删除与特定集群任务关联的所有任务。
  • 通过引入一个新的 customResource 字段,增加了对在 EventListener 资源中使用 Knative 服务的支持。
  • 当事件有效负载没有使用 JSON 格式时,会显示错误消息。
  • 源控制拦截器(如 GitLab、BitBucket 和 GitHub)现在使用新的 InterceptorRequestInterceptorResponse 类型的接口。
  • 新的 CEL 功能 marsagingJSON 被实现,以便您可以将 JSON 对象或数组编码到字符串。
  • 为 CEL 添加了 HTTP 处理器,并添加了源控制内核拦截器。它将四个核心拦截器打包到单一 HTTP 服务器中,该服务器部署在 tekton-pipelines 命名空间中。EventListener 对象通过 HTTP 服务器将事件转发到拦截器。每个拦截器都位于不同的路径。例如,CEL 拦截器位于 /cel 路径中。
  • pipelines-scc 安全性上下文约束(SCC)与默认的 pipeline 服务帐户一同使用。此新服务帐户与 anyuid 类似,但 OpenShift Container Platform 4.7 的 SCC 在 YAML 中定义中有一个小的差别:

    fsGroup:
      type: MustRunAs

1.12.3. 已弃用的功能

  • 不支持 pipeline 资源存储中的 build-gcs 子类型和 gcs-fetcher 镜像。
  • 在集群任务的 TaskRun 字段中,删除标签 tekton.dev/task
  • 对于 webhook,移除了与字段 admissionReviewVersions 对应的 v1beta1 值。
  • 用于构建和部署的 creds-init 帮助程序镜像已被删除。
  • 在触发器 spec 和绑定中,弃用的字段 template.name 已被删除,并使用 template.ref 替代。您应该更新所有 eventListener 定义,以使用 ref 字段。

    注意

    从 OpenShift Pipelines 1.3.x 和早期版本升级到 OpenShift Pipelines 1.4.0 会中断事件监听程序,因为 template.name 字段不可用。在这种情况下,使用 OpenShift Pipelines 1.4.1 来提供恢复的 template.name 字段。

  • 对于 EventListener 自定义资源/对象,PodTemplateServiceType 字段已弃用,并使用 Resource 替代。
  • 过时的 spec 风格内嵌绑定已被删除。
  • spec 字段已从 triggerSpecBinding 中删除。
  • 事件 ID 已从包括五个字符的随机字符串改为 UUID。

1.12.4. 已知问题

  • Developer 视角中,管道指标和触发器功能仅适用于 OpenShift Container Platform 4.7.6 或更高版本。
  • 在 IBM Power Systems、IBM Z 和 LinuxONE 中,不支持 tkn hub 命令。
  • 当您在 IBM Power Systems(ppc64le)、IBM Z 和 LinuxONE(s390x)集群上运行 Maven 和 Jib Maven 集群任务时,将 MAVEN_IMAGE 参数值设置为 maven:3.6.3-adoptopenjdk-11
  • 如果您在触发器绑定中有以下配置,触发器会因为不正确处理 JSON 格式抛出错误:

    params:
      - name: github_json
        value: $(body)

    要解决这个问题:

    • 如果您使用触发器 v0.11.0 及更高版本,请使用 marshalJSON CEL 函数,该函数使用 JSON 对象或数组,并将该对象或数组的 JSON 编码作为字符串返回。
    • 如果使用旧的触发器版本,请在触发器模板中添加以下注解:

      annotations:
        triggers.tekton.dev/old-escape-quotes: "true"
  • 当从 OpenShift Pipelines 1.3.x 升级到 1.4.x 时,您必须重新创建路由。

1.12.5. 修复的问题

  • 在以前的版本中,tekton.dev/task 标签已从集群任务运行中删除,并且引进了 tekton.dev/clusterTask 标签。此更改导致的问题可以通过修复 clustertask describedelete 命令来解决。另外,也修改了任务的 lastrun 功能,从而解决应用到在旧版管道中运行任务中的 tekton.dev/task 标签的问题。
  • 当进行交互式 tkn pipeline start pipelinename 时,会以互动方式创建一个 PipelineResource。如果资源状态不是 niltkn p start 命令会输出资源状态。
  • 在以前的版本中,tekton.dev/task=name 标签已从集群任务创建的任务中删除。在这个版本中,使用 --last 标志修改 tkn clustertask start 命令,以检查所创建的任务运行中的 tekton.dev/task=name 标签。
  • 当任务使用内联任务规格时,在运行 tkn pipeline describe 命令时对应的任务运行会被嵌入到管道中,任务名称返回为内嵌。
  • 修复了 tkn version 命令,显示已安装的 Tekton CLI 工具的版本,无需配置的 kubeConfiguration 命名空间或对集群的访问。
  • 如果使用意外的参数或者使用多个参数,则 tkn completion 命令会出错。
  • 在以前的版本中,当管道转换为 v1alpha1 版本并恢复到 v1beta1 版本时,带有嵌套在一个管道规格中的 finally 的任务将会丢失那些 finally 任务。修复了转换过程中发生的这个错误,以避免潜在的数据丢失。现在,带有嵌套在管道规格中的 finally 任务的管道运行会被序列化并存储在 alpha 版本中,它们只会在以后进行反序列化。
  • 在以前的版本中,当服务帐户中的 secrets 字段被设置为 {} 时,pod 生成中会出现一个错误。任务运行失败,显示 CouldntGetTask,因为带有空 secret 名称的 GET 请求返回了一个错误,表示资源名称可能不是空的。这个问题已通过避免 kubeclient GET 请求中的空 secret 名称来解决。
  • 现在,可以请求带有 v1beta1 API 版本的管道和 v1alpha1 版本,而不会丢失 finall 任务。应用返回的 v1alpha1 版本将以 v1beta1 来保存资源,finally 部分恢复到其原始状态。
  • 在以前的版本中,控制器中的一个未设置的 selfLink 字段在 Kubernetes v1.20 集群中造成错误。作为一个临时修复,在没有自动填充的 selfLink 字段的值时,CloudEvent source 字段被设置为与当前源 URI 匹配的值。
  • 在以前的版本中,带有点(如 gcr.io )的 secret 名称会导致任务运行创建失败。这是因为内部使用的 secret 名称作为卷挂载名称的一部分。卷挂载名称遵循 RFC1123 DNS 标签标准,它不允许使用点作为名称的一部分。这个问题已通过将点替换为横线来解决。
  • 现在,上下文变量会在 finally 任务中进行验证。
  • 在以前的版本中,当任务运行协调器传递了一个任务运行,且没有之前的状态更新,其中包含它创建的 pod 的名称时,任务运行协调程序会列出与任务运行关联的 pod。任务运行协调程序使用任务运行标签(被传播到 pod)来查找 pod。在任务运行期间更改这些标签,会导致代码找不到现有的 pod。因此,会创建重复的 pod。这个问题已通过在查找 pod 时将任务运行协调器更改为只使用 tekton.dev/taskRun Tekton 控制的标签来解决。
  • 在以前的版本中,当管道接受一个可选的工作区并将其传递给管道任务时,如果未提供工作区,管道运行协调器会停止并出错,即使缺少的工作区绑定是可选工作区的有效状态。这个问题已被解决,确保管道运行的协调器不会无法创建任务运行,即使未提供可选的工作区。
  • 排序步骤状态的顺序与步骤容器的顺序匹配。
  • 在以前的版本中,当 Pod 遇到 CreateContainerConfigError 原因时,任务运行状态被设置为 unknown,这意味着任务和管道会运行,直到 pod 超时为止。这个问题已通过将任务运行状态设置为 false 来解决这个问题,因此当 pod 遇到 CreateContainerConfigError 原因时,任务被设置为 failed。
  • 在以前的版本中,管道结果会在管道运行完成后在第一次协调时解析。这可能会导致管道运行的 Succeeded 条件被覆盖。因此,最终状态信息丢失,可能会使监视管道运行条件的任何服务混淆。当管道运行进入 SucceededTrue 条件时,这个问题可以通过将管道结果解析移到协调结束时来解决。
  • 现在,执行状态变量已被验证。这可避免在验证上下文变量来访问执行状态时验证任务结果。
  • 在以前的版本中,包含无效变量的管道结果将添加到管道运行中,并包含变量的字面表达式。因此,很难评估结果是否正确填充。这个问题已通过过滤管道运行结果来解决,该结果引用了失败的任务运行。现在,包含无效变量的管道结果将完全不会被管道运行发送。
  • 现在,tkn eventlistener describe 命令已被修复,以避免在没有模板的情况下崩溃。它还显示有关触发器引用的详情。
  • 从 OpenShift Pipelines 1.3.x 及更早的版本升级到 OpenShift Pipelines 1.4.0 会破坏事件监听程序,因为 template.name 不可用。在 OpenShift Pipelines 1.4.1 中,template.name 已被恢复,以避免触发器中的事件监听程序。
  • 在 OpenShift Pipelines 1.4.1 中,ConsoleQuickStart 自定义资源已更新,以匹配 OpenShift Container Platform 4.7 的功能和行为。

1.13. Red Hat OpenShift Pipelines 技术预览 1.3 发行注记

1.13.1. 新功能

Red Hat OpenShift Pipelines 技术预览(TP)1.3 现在包括在 OpenShift Container Platform 4.7 中。Red Hat OpenShift Pipelines TP 1.3 更新为支持:

  • Tekton Pipelines 0.19.0
  • Tekton tkn CLI 0.15.0
  • Tekton Triggers 0.10.2
  • 基于 Tekton Catalog 0.19.0 的集群任务
  • OpenShift Container Platform 4.7 中的 IBM Power Systems
  • OpenShift Container Platform 4.7 上的 IBM Z 和 LinuxONE

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.3 中的新内容。

1.13.1.1. Pipelines
  • 构建镜像的任务,如 S2I 和 Buildah 任务,现在发出构建的镜像 URL,其中包含镜像 SHA。
  • 由于 Conditions 自定义资源定义(CRD)已弃用,管道任务中引用自定义资源的条件会被禁止。
  • 现在,在 Task CRD 中为以下字段添加了变量扩展: spec.steps[].imagePullPolicyspec.sidecar[].imagePullPolicy
  • 您可以通过将 disable-creds-init feature-flag 设置为 true 来禁用 Tekton 中的内置凭证机制。
  • 现在,当在 PipelineRun 配置的 Status 字段中的 Skipped TasksTask Runs 部分中列出了表达式时,可以解析。
  • git init 命令现在可以克隆递归子模块。
  • 现在,Task CR 的作者可以为 Task spec 的一个步骤指定超时。
  • 现在,您可以将入口点镜像基于 distroless/static:nonroot 镜像,赋予将其复制到目的地的模式,而无需依赖基础镜像中存在的 cp 命令。
  • 现在,您可以使用配置标记 require-git-ssh-secret-known-hosts 来禁止在 Git SSH secret 中省略已知主机。当标志值设为 true 时,必须在 Git SSH secret 中包含 known_host 字段。标志的默认值为 false
  • 现在引进了可选工作区的概念。任务或管道可能会声明一个工作区(workspace),并有条件地更改其行为。任务运行或管道运行可能省略了工作区,因此修改任务或管道行为。默认任务运行工作区不会添加到忽略的可选工作区。
  • 现在,在 Tekton 中进行凭证初始化会检测一个与非 SSH URL 搭配使用的 SSH 凭证,而 Git pipeline 资源与 Git pipeline 资源相同,并在步骤容器中记录警告。
  • 如果 pod 模板指定的关联性被关联性代理覆盖,则任务运行控制器会发出警告事件。
  • 任务运行协调程序现在记录了在任务运行完成后发送的云事件的指标。这包括重试。
1.13.1.2. Pipelines CLI
  • 现在,在以下命令中添加了对 --no-headers flag 的支持: tkn condition listtkn triggerbinding listtkn eventlistener listtkn clustertask listtkn clustertriggerbinding list
  • 当一起使用时,--last--use 选项会覆盖 --prefix-name--timeout 选项。
  • 现在,添加了 tkn eventlistener logs 命令来查看 EventListener 日志。
  • tekton hub 命令现在被集成到 tkn CLI。
  • --nocolour 选项现在改为 --no-color
  • --all-namespaces 标志添加到以下命令中: tkn triggertemplate listtkn condition listtkn triggerbinding listtkn eventlistener list
1.13.1.3. 触发器
  • 现在,您可以在 EventListener 模板中指定资源信息。
  • 现在,EventListener 服务帐户除具有所有触发器资源的 get verb 外,还具有 listwatch verb。这可让您使用 ListersEventListenerTriggerTriggerBindingTriggerTemplateClusterTriggerBinding 资源中获取数据。您可以使用此功能创建 Sink 对象,而不是指定多个通知器,直接向 API 服务器发出调用。
  • 添加了一个新的 Interceptor 接口,以支持不可变的输入事件正文。拦截器现在可以在一个新的 extensions 字段中添加数据或字段,且无法修改输入正文使其不可变。CEL 拦截器使用这个新的 Interceptor 接口。
  • EventListener 资源中添加了一个 namespaceSelector 字段。使用它来指定 EventListener 资源可以从中获取用于处理事件的 Trigger 对象的命名空间。要使用 namespaceSelector 字段,EventListener 资源的服务帐户必须具有集群角色。
  • 触发器 EventListener 资源现在支持到 eventlistener pod 的端到端安全连接。
  • TriggerTemplates 资源中把 " 替换为 \" 的转义行为现在已被删除。
  • 一个支持 Kubernetes 资源的、新的 resources 项已作为 EventListener spec 的一部分被添加。
  • 添加了对 CEL 拦截器的新功能,它支持 ASCII 字符串的大写和小写。
  • 您可以使用触发器中的 namevalue 字段,或事件监听程序来嵌入 TriggerBinding 资源。
  • PodSecurityPolicy 配置已更新,可在受限环境中运行。它确保容器必须以非 root 运行。另外,使用 Pod 安全策略的基于角色的访问控制也从集群范围移到命名空间范围。这样可确保触发器无法使用与命名空间不相关的其他 Pod 安全策略。
  • 现在,添加了对内嵌触发器模板的支持。您可以使用 name 字段来指代嵌入的模板,或者在 spec 字段中嵌入模板。

1.13.2. 已弃用的功能

  • 使用 PipelineResources CRD 的管道模板现已弃用,并将在以后的发行版本中删除。
  • template.name 字段已弃用,被 template.ref 字段替代,并将在以后的发行版本中删除。
  • 使用 -c 作为 --check 命令的缩写已被删除。另外,全局 tkn 标志被添加到 version 命令中。

1.13.3. 已知问题

  • CEL 覆盖在新的顶层 extensions 功能中添加字段,而不是修改传入的事件正文。TriggerBinding 资源可以使用 $(extensions.<key>) 语法访问这个新 extensions 功能中的值。更新您的绑定,使用 $(extensions.<key>) 语法而不是 $(body.<overlay-key>) 语法。
  • " 替换为 \" 的参数转义行为现在已被删除。如果您需要保留旧的转义参数行为,请在 TriggerTemplate 规格中添加 tekton.dev/old-escape-quotes: true" 注解。
  • 您可以使用触发器中的 namevalue 字段,或事件监听程序来嵌入 TriggerBinding 资源。但是,您无法为单个绑定指定 nameref 字段。使用 ref 字段引用 TriggerBinding 资源以及内嵌绑定的 name 字段。
  • 拦截器无法试图引用 EventListener 资源命名空间以外的 secret。您必须在 'EventListener' 资源的命名空间中包含 secret。
  • 在 Triggers 0.9.0 及之后的版本中,如果基于正文或标头的 TriggerBinding 参数在事件有效负载中缺失或格式不正确,则使用默认值而不是显示错误。
  • 通过使用 Tekton Pipelines 0.16.x 的 WhenExpression 对象创建的任务和管道必须重新应用来修复它们的 JSON 注解。
  • 当管道接受一个可选的工作区,并将其提供给某个任务时,如果未提供工作区,管道会运行停止。
  • 要在断开连接的环境中使用 Buildah 集群任务,请确保 Dockerfile 使用作为基础镜像的内部镜像流,然后使用与任何 S2I 集群任务相同的方法。

1.13.4. 修复的问题

  • CEL 拦截器添加的扩展通过在事件正文中添加 Extensions 字段传递给 Webhook 拦截器。
  • 现在,日志读取器的活动超时可以使用 LogOptions 字段进行配置。但是,10 秒的默认超时行为会被保留。
  • 当一个任务运行或管道运行完成后,log 命令会忽略 --follow 标记,它会读取可用的日志而不是实时的日志。
  • 对以下 Tekton 资源的引用现在标准化,并在 tkn 命令中的所有面向用户的信息中保持一致: EventListenerTriggerBindingClusterTriggerBindingConditionTriggerTemplate
  • 在以前的版本中,如果您启动了使用 --use-taskrun <canceled-task-run-name>--use-pipelinerun <canceled-pipeline-run-name>--last 标记的、已被取消的任务运行或管道运行,新的运行将会被取消。这个程序漏洞现已解决。
  • 现在,tkn pr desc 命令已被改进,以便在管道有条件运行时不会失败。
  • 当使用 --task 选项删除使用 tkn tr delete 运行的任务时,且集群任务具有相同名称的集群任务存在时,集群任务运行的任务也会被删除。作为临时解决方案,使用 TaskRefKind 字段过滤运行的任务。
  • tkn triggertemplate describe 命令在输出中只会显示 apiVersion 值的一部分。例如,只显示 triggers.tekton.dev,而不是 triggers.tekton.dev/v1alpha1。这个程序漏洞现已解决。
  • 在某些情况下,webhook 无法获取租期且无法正常工作。这个程序漏洞现已解决。
  • 在 v0.16.3 中创建的带有 when 表达式的管道现在可以在 v0.17.1 及之后的版本中运行。升级后,您不需要重新应用之前版本中创建的管道定义,因为现在支持注解中第一个字母的大写和小写。
  • 默认情况下,leader-election-ha 字段为高可用性启用。当 disable-ha 控制器标记设置为 true 时,它会禁用高可用性支持。
  • 现在,解决了重复云事件的问题。现在,只有在条件改变状态、原因或消息时才发送云事件。
  • PipelineRunTaskRun spec 中没有服务帐户名称时,控制器会使用 config-defaults 配置映射中的服务帐户名称。如果在 config-defaults 配置映射中也缺少服务帐户名称,控制器现在会在 spec 中将其设置为 default
  • 现在,当同一个持久性卷声明用于多个工作区,但具有不同子路径时,支持验证是否与关联性偏好兼容。

1.14. Red Hat OpenShift Pipelines 技术预览 1.2 发行注记

1.14.1. 新功能

Red Hat OpenShift Pipelines 技术预览(TP)1.2 现在包括在 OpenShift Container Platform 4.6 中。Red Hat OpenShift Pipelines TP 1.2 更新为支持:

  • Tekton Pipelines 0.16.3
  • Tekton tkn CLI 0.13.1
  • Tekton Triggers 0.8.1
  • 基于 Tekton Catalog 0.16 的集群任务
  • OpenShift Container Platform 4.6 中的 IBM Power Systems
  • OpenShift Container Platform 4.6 上的 IBM Z 和 LinuxONE

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.2 中的新内容。

1.14.1.1. Pipelines
  • 此 Red Hat OpenShift Pipelines 发行版本添加了对断开连接的安装的支持。

    注意

    IBM Power Systems、IBM Z 和 LinuxONE 目前不支持在受限环境中安装。

  • 现在,您可以使用 when 字段而不是 conditions 资源,仅在满足特定条件时运行任务。WhenExpression 资源的关键组件是 InputOperatorValues。如果所有表达式都评估的结果都为 True, 则任务运行。如果表达式评估的结果为 False,则任务被跳过。
  • 现在,如果某个任务运行被取消或超时,则步骤(Step)状态被更新。
  • 现在,支持 Git 大文件存储(LFS)来使用 git-init 构建基础镜像。
  • 现在,当某个任务嵌入到管道中时,您可以使用 taskSpec 字段来指定元数据,如标识(label)和注解(annotation)。
  • 现在,Pipeline 运行支持云事件。现在,对于云事件管道资源发送的带有 backoff 的云事件会进行重试。
  • 现在,可以为声明了 Task、但没有明确指定 TaskRun 资源的工作区(workspace)设置一个默认的 Workspace 配置。
  • 支持 PipelineRun 命名空间和 TaskRun 命名空间的命名空间变量插入。
  • 现在,添加了对 TaskRun 对象的验证,以检查当 TaskRun 资源与 Affinity Assistant 关联时,是否使用一个以上的持久性卷声明工作区。如果使用多个持久性卷声明工作区,则任务运行会失败,并且有一个 TaskRunValidationFailed 条件。请注意,默认情况下, Affinity Assistant 在 Red Hat OpenShift Pipelines 中被禁用,因此您需要启用 Affinity Assistant 来使用它。
1.14.1.2. Pipelines CLI
  • tkn task describetkn taskrun describetkn clustertask describetkn pipeline describetkn pipelinerun describe 命令现在:

    • 如果存在其中之一,会自动选择 TaskTaskRunClusterTaskPipelinePipelineRun
    • 在相应的输出中显示 TaskTaskRunClusterTaskPipelinePipelineRun 资源的结果。
    • 在相应的输出中显示 TaskTaskRunClusterTaskPipelinePipelineRun 资源中声明的工作区。
  • 现在,您可以使用 tkn clustertask start 命令的 --prefix-name 选项指定任务运行名称前缀。
  • 现在为 tkn clustertask start 命令提供了互动模式支持。
  • 现在,您可以使用 TaskRunPipelineRun 对象的本地或远程文件定义指定管道支持的 PodTemplate 属性。
  • 现在,您可以在 tkn clustertask start 命令中使用 --use-params-defaults 选项,使用 ClusterTask 配置中设置的默认值并创建任务运行。
  • 现在,如果有些参数没有指定默认值,tkn pipeline start 命令的 --use-param-defaults 标志会提示以互动模式提供。
1.14.1.3. 触发器
  • 添加了一个名为 parseYAML 的通用表达语言(CEL)函数,用来将 YAML 字符串解析为一个映射的字符串。
  • 在评估表达式和解析 hook 正文以创建评估环境时,改进了解析 CEL 表达式的错误消息,使其更加精细。
  • 现在,可以支持 marsing 布尔值和映射,如果它们被用作 CEL 覆盖机制中的表达式值。
  • EventListener 对象中添加了以下字段:

    • replicas 字段通过在 YAML 文件中指定副本数,使事件监听程序能够运行多个 pod。
    • NodeSelector 字段使 EventListener 对象能够将事件监听器 pod 调度到特定的节点。
  • Webhook 拦截器现在可以解析 EventListener-Request-URL 标头,从事件监听器处理的原始请求 URL 中提取参数。
  • 现在,事件监听器的注解可以被传播到部署、服务和其他 pod。请注意,服务或部署的自定义注解将被覆盖,因此必须在事件监听程序注解中添加它们以便传播它们。
  • 现在,当用户将 spec.replicas 值指定为 负数时,可以正确验证 EventListener 规格中的副本。
  • 现在,您可以在 EventListener spec 中指定 TriggerCRD 项,作为一个使用 TriggerRef 项的引用来独立创建 TriggerCRD 项,然后在EventListener spec 中绑定它。
  • 现在,提供了对 TriggerCRD 对象的验证和默认值。

1.14.2. 已弃用的功能

  • $(params) 参数现已从 triggertemplate 资源中删除,由 $(tt.params) 替代,以避免 resourcetemplatetriggertemplate 资源参数间的混淆。
  • 基于可选的基于 EventListenerTrigger 的身份验证级别的 ServiceAccount 引用,已从对象引用改为一个 ServiceAccountName 字符串。这样可确保 ServiceAccount 引用与 EventListenerTrigger 对象位于同一个命名空间中。
  • Conditions 自定义资源定义(CRD)现已弃用,已使用 WhenExpressions CRD 替代。
  • PipelineRun.Spec.ServiceAccountNames 对象已启用,被 PipelineRun.Spec.TaskRunSpec[].ServiceAccountName 对象替代。

1.14.3. 已知问题

  • 此 Red Hat OpenShift Pipelines 发行版本添加了对断开连接的安装的支持。但是,集群任务使用的一些镜像必须进行镜像(mirror)才能在断开连接的集群中工作。
  • 在卸载 Red Hat OpenShift Pipelines Operator 后,openshift 命名空间中的管道不会被删除。使用 oc delete pipelines -n openshift --all 命令删除管道。
  • 卸载 Red Hat OpenShift Pipelines Operator 不会删除事件监听程序。

    作为临时解决方案,删除 EventListenerPod CRD:

    1. 使用 foregroundDeletion 终结器编辑 EventListener 对象:

      $ oc patch el/<eventlistener_name> -p '{"metadata":{"finalizers":["foregroundDeletion"]}}' --type=merge

      例如:

      $ oc patch el/github-listener-interceptor -p '{"metadata":{"finalizers":["foregroundDeletion"]}}' --type=merge
    2. 删除 EventListener CRD:

      $ oc patch crd/eventlisteners.triggers.tekton.dev -p '{"metadata":{"finalizers":[]}}' --type=merge
  • 当您运行多架构容器镜像任务时,如果在 IBM Power Systems(ppc64le)或 IBM Z(s390x)集群上没有命令规格,则 TaskRun 资源会失败,并显示以下错误:

    Error executing command: fork/exec /bin/bash: exec format error

    作为临时解决方案,使用特定架构的容器镜像或指定 sha256 摘要指向正确的架构。要获得 sha256 摘要,请输入:

    $ skopeo inspect --raw <image_name>| jq '.manifests[] | select(.platform.architecture == "<architecture>") | .digest'

1.14.4. 修复的问题

  • 现在,添加了一个简单的语法验证用于检查 CEL 过滤器、Webhook 验证器中的覆盖以及拦截器中的表达式。
  • 触发器不再覆盖底层部署和服务对象上的注解。
  • 在以前的版本中,事件监听器将停止接受事件。EventListener sink 增加了一个 120 秒的空闲超时来解决这个问题。
  • 在以前的版本中,取消一个带有 Failed(Canceled) 状态的管道运行会给出一个成功信息。这个问题已被解决,现在在这种情况下会显示错误。
  • tkn eventlistener list 命令现在提供列出的事件监听器的状态,从而使您可以轻松地识别可用的事件。
  • 现在,当没有安装触发器或没有找到资源时,triggers listtriggers describe 命令会显示一致的错误信息。
  • 在以前的版本中,在云事件交付过程中会产生大量闲置连接。DisableKeepAlives: true 参数添加到 cloudeventclient 配置来修复这个问题。因此,会为每个云事件设置一个新的连接。
  • 在以前的版本中,creds-init 代码也会向磁盘写入空文件,即使未提供给定类型的凭证。在这个版本中,creds-init 代码只为从正确注解的 secret 中挂载的凭证写入文件。

1.15. Red Hat OpenShift Pipelines 技术预览 1.1 发行注记

1.15.1. 新功能

Red Hat OpenShift Pipelines 技术预览(TP)1.1 现在包括在 OpenShift Container Platform 4.5 中。Red Hat OpenShift Pipelines TP 1.1 更新为支持:

  • Tekton Pipelines 0.14.3
  • Tekton tkn CLI 0.11.0
  • Tekton Triggers 0.6.1
  • 基于 Tekton Catalog 0.14 的集群任务

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.1 中的新内容。

1.15.1.1. Pipelines
  • 现在可以使用工作区而不是管道资源。建议您在 OpenShift Pipelines 中使用 Workspaces 而不是 PipelineResources,因为 PipelineResources 很难调试,范围有限,且不容易重复使用。如需有关 Workspaces 的更多信息,请参阅了解 OpenShift Pipelines。
  • 添加了对卷声明模板的工作空间支持:

    • 管道运行和任务运行的卷声明模板现在可以添加为工作区的卷源。然后,tkton-controller 使用模板创建一个持久性卷声明(PVC),该模板被视为管道中运行的所有任务的 PVC。因此,您不需要在每次绑定多个任务的工作空间时都定义 PVC 配置。
    • 当卷声明模板用作卷源时,支持使用变量替换来查找 PVC 名称。
  • 支持改进的审核:

    • PipelineRun.Status 字段现在包含管道中运行的每个任务的状态,以及用于实例化用于监控管道运行进度的管道规格。
    • Pipeline 结果已添加到 pipeline 规格和 PipelineRun 状态中。
    • TaskRun.Status 字段现在包含用于实例化 TaskRun 资源的具体任务规格。
  • 支持在条件中应用默认参数。
  • 现在,通过引用集群任务创建的任务运行会添加 tekton.dev/clusterTask 标签,而不是 tekton.dev/task 标签。
  • kube config writer 现在在资源结构中添加了 ClientKeyDataClientCertificateData 配置,以便使用 kubeconfig-creator 任务替换 pipeline 资源类型集群。
  • 现在,feature-flagsconfig-defaults 配置映射的名称可以自定义。
  • 现在,在任务运行使用的 pod 模板中支持主机网络。
  • 现在,可以使用 Affinity Assistant 支持任务运行中共享工作空间卷的节点关联性。默认情况下,这在 OpenShift Pipelines 上被禁用。
  • Pod 模板已更新,使用 imagePullSecrets 指定在启动一个 pod 时,容器运行时用来拉取容器镜像的 secret。
  • 如果控制器无法更新任务运行,则支持从任务运行控制器发出警告事件。
  • 在所有资源中添加了标准或者推荐的 k8s 标签,以标识属于应用程序或组件的资源。
  • 现在,Entrypoint 进程被通知有信号,然后这些信号会使用一个 Entrypoint 进程的专用 PID 组来传播这些信号。
  • pod 模板现在可以在运行时使用任务运行 specs 在任务级别设置。
  • 支持放出 Kubernetes 事件:

    • 控制器现在会为其他任务运行生命周期事件发出事件 - taskrun startedtaskrun running
    • 频道运行控制器现在会在管道每次启动时放出一个事件。
  • 除了默认的 Kubernetes 事件外,现在还提供对任务运行的支持。可将控制器配置为发送任何任务运行事件(如创建、启动和失败)作为云事件。
  • 支持使用 $context.<task|taskRun|pipelineRun>.name 变量来引用管道运行和任务运行时的适当名称。
  • 现在提供了管道运行参数的验证,以确保管道运行提供了管道所需的所有参数。这也允许管道运行在所需参数之外提供额外的参数。
  • 现在,您可以使用管道 YAML 文件中的 finally 字段指定管道中的任务,这些任务会在管道退出前始终执行。
  • git-clone 集群任务现在可用。
1.15.1.2. Pipelines CLI
  • tkn dlistener describe 命令现在可以支持内嵌触发器绑定。
  • 支持在使用不正确的子命令时推荐子命令并给出建议。
  • 现在,如果管道中只有一个任务存在,tkn task describe 命令会自动选择该任务。
  • 现在您可以使用默认参数值启动任务,方法是在 tkn task start 命令中指定 --use-param-defaults 标记。
  • 现在,您可以使用 tkn pipeline starttkn task start 命令的 --workspace 选项为管道运行或任务指定卷声明模板。
  • tkn pipelinerun logs 命令现在会显示 finally 部分中列出的最终任务的日志。
  • 现在,为 tkn task start 命令提供了互动模式支持,并为以下 tkn 资源提供 describe 子命令: pipeline, PipelineRuntasktaskrunclustertaskpipelineresource
  • tkn version 命令现在显示集群中安装的触发器版本。
  • tkn pipeline describe 命令现在显示为频道中使用的任务指定的参数值和超时。
  • 添加了对 tkn pipelinerun describetkn taskrun describe 命令的 --last 选项的支持,以分别描述最新的频道运行或任务运行。
  • tkn pipeline describe 命令现在显示管道中适用于任务的条件。
  • 现在,您可以在 tkn resource list 命令中使用 --no-headers--all-namespaces 标记。
1.15.1.3. 触发器
  • 现在以下通用表达式语言(CEL)功能可用:

    • parseURL 用来解析和提取一个 URL 的部分内容
    • parseJSON 用来解析嵌入在 deployment webhook 中的 payload 字段中的字符串中的 JSON 值类型
  • 添加了来自 Bitbucket 的 webhook 的新拦截器。
  • 现在,在使用 kubectl get 列出时,事件监听器会显示 Address URLAvailable status 作为额外的项。
  • 触发器模板参数现在使用 $(tt.params.<paramName>) 语法而不是 $(params.<paramName>) 来减少触发器模板和资源模板参数之间的混淆。
  • 现在,您可以在 EventListener CRD 中添加 容限,以确保事件监听程序使用相同的配置,即使所有节点都因为安全或管理问题而产生污点也是如此。
  • 现在,您可以在 URL/live 中为事件监听器添加就绪探测(Readiness Probe)。
  • 现在,添加了对在事件监听器触发器中嵌入 TriggerBinding 规格的支持。
  • 触发器资源现在附带推荐的 app.kubernetes.io 标签注解。

1.15.2. 已弃用的功能

本发行版本中已弃用了以下内容:

  • 所有集群范围命令(包括 clustertaskclustertriggerbinding 命令)的 --namespace-n 标志都已弃用。它将在以后的发行版本中被删除。
  • 事件监听器中的 triggers.bindings 中的 name 字段已弃用。现在使用 ref 字段替代,并将在以后的发行版本中删除。
  • 使用 $(params) 的触发器模板中的变量插值已经被弃用,现在使用 $(tt.params) 来减少与管道变量插入语法的混乱。在以后的发行版本中会删除 $(params.<paramName>) 语法。
  • 在集群任务中弃用了 tekton.dev/task 标签。
  • TaskRun.Status.ResourceResults.ResourceRef 字段已弃用,并将被删除。
  • tkn pipeline createtkn task createtkn resource create -f 子命令已被删除。
  • tkn 命令中删除了命名空间验证。
  • tkn ct start 命令中的默认超时时间(1h)以及 -t 标志已被删除。
  • s2i 集群任务已弃用。

1.15.3. 已知问题

  • 条件(Conditions)不支持工作区。
  • tkn clustertask start 命令不支持 --workspace 选项和互动模式。
  • 支持 $(params.<paramName>) 语法的向后兼容性会强制您使用带有特定管道参数的触发器模板,因为触发器 s Webhook 无法将触发器参数与管道参数区分开。
  • 当针对 tekton_taskrun_counttekton_taskrun_duration_seconds_count 运行一个 promQL 查询时,Pipeline metrics 会报告不正确的值。
  • 当为一个工作区指定了一个不存在的 PVC 名称时,管道运行和任务运行会维持在 RunningRunning(Pending) 的状态。

1.15.4. 修复的问题

  • 在以前的版本中,如果任务和集群任务的名称是相同的,则 tkn task delete <name> --trs 命令会同时删除 Task 和 ClusterTask。在这个版本中,该命令只删除任务 <name> 创建的任务运行。
  • 以前,tkn pr delete -p <name> --keep 2 命令会在使用 --keep 是忽略 -p 标志,并将删除除最后两个以外的所有管道运行。在这个版本中,命令只删除由管道 <name> 创建的管道运行,但最后两个除外。
  • tkn triggertemplate describe 输出现在以表格式而不是 YAML 格式显示资源模板。
  • 在以前的版本中,当一个新用户添加到容器时,buildah 集群任务会失败。在这个版本中,这个问题已被解决。

1.16. Red Hat OpenShift Pipelines 技术预览 1.0 发行注记

1.16.1. 新功能

Red Hat OpenShift Pipelines 技术预览(TP)1.0 现在包括在 OpenShift Container Platform 4.4 中。Red Hat OpenShift Pipelines TP 1.0 更新为支持:

  • Tekton Pipelines 0.11.3
  • Tekton tkn CLI 0.9.0
  • Tekton Triggers 0.4.0
  • 基于 Tekton Catalog 0.11 的集群任务

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.0 中的新内容。

1.16.1.1. Pipelines
  • 支持 v1beta1 API 版本。
  • 支持改进的限制范围。在以前的版本中,限制范围仅为任务运行和管道运行指定。现在不需要显式指定限制范围。使用命名空间中的最小限制范围。
  • 支持使用任务结果和任务参数在任务间共享数据。
  • 现在,管道可以被配置为不覆盖 HOME 环境变量和步骤的工作目录。
  • 与任务步骤类似,sidecar 现在支持脚本模式。
  • 现在,您可以在任务运行 podTemplate 资源中指定不同的调度程序名称。
  • 支持使用 Star Array Notation 替换变量。
  • Tekton 控制器现在可以配置为监控单个命名空间。
  • 现在,在管道、任务、集群任务、资源和条件规格中添加了一个新的 description 字段。
  • 在 Git pipeline 资源中添加代理参数。
1.16.1.2. Pipelines CLI
  • 现在为以下 tkn 资源添加了 describe 子命令: EventListenerConditiontriggerTemplateClusterTaskTriggerSBinding
  • 在以下资源中添加 v1beta1 支持以及 v1alpha1 的向后兼容性: ClusterTaskTaskPipelinePipelineRunTaskRun
  • 以下命令现在可以使用 --all-namespaces 标志选项列出所有命名空间的输出结果: tkn task listtkn pipeline listtkn taskrun listtkn pipelinerun list

    这些命令的输出也可以通过 --no-headers 选项在没有标头的情况下显示信息。

  • 现在您可以使用默认参数值启动管道,方法是在 tkn pipelines start 命令中指定 --use-param-defaults 标记。
  • 现在,在 tkn pipeline starttkn task start 命令中增加了对工作区的支持。
  • 现在增加了一个新命令 clustertriggerbinding,它带有以下子命令:describedeletelist
  • 现在,您可以使用本地或远程 yaml 文件直接启动管道运行。
  • describe 子命令现在显示一个改进的详细输出。现在,除了新的项,如 descriptiontimeoutparam descriptionsidecar status,命令输出还提供了关于一个特定 tkn 资源的更详细的信息。
  • 现在,如果命名空间中只有一个任务,tkn task log 命令会直接显示日志。
1.16.1.3. 触发器
  • 现在触发器可以同时创建 v1alpha1v1beta1 管道资源。
  • 支持新的通用表达式语言(CEL)拦截器功能 - compareSecret。此功能安全地将字符串与 CEL 表达式中的 secret 进行比较。
  • 支持在事件监听器触发器级别进行身份验证和授权。

1.16.2. 已弃用的功能

本发行版本中已弃用了以下内容:

  • Steps 规格中的环境变量 $HOME,变量 workingDir 已被弃用,并可能在以后的发行版本中有所变化。目前,在 Step 容器中,HOMEworkingDir 变量会分别被 /tekton/home/workspace 变量覆盖。

    在以后的发行版本中,这两个字段将不会被修改,它将被设置为容器镜像和 Task YAML 中定义的值。在本发行版本中,使用 disable-home-env-overwritedisable-working-directory-overwrite 标记来禁用覆盖 HOMEworkingDir 变量。

  • 以下命令已弃用,并可能在以后的发行版本中删除: tkn pipeline createtkn task create
  • tkn resource create 命令中使用 -f 标志现已弃用。以后的发行版本中可能会删除它。
  • tkn clustertask create 命令中的 -t 标记和 --timeout 标记(使用秒格式)现已被弃用。现在只支持持续超时格式,例如 1h30s。这些已弃用的标记可能会在以后的版本中删除。

1.16.3. 已知问题

  • 如果您要从 Red Hat OpenShift Pipelines 的旧版本升级,则必须删除您现有的部署,然后再升级到 Red Hat OpenShift Pipelines 版本 1.0。要删除现有的部署,您必须首先删除自定义资源,然后卸载 Red Hat OpenShift Pipelines Operator。如需了解更多详细信息,请参阅卸载 Red Hat OpenShift Pipelines 部分。
  • 提交相同的 v1alpha1 任务多次会导致错误。在重新提交一个 v1alpha1 任务时,使用 oc replace 命令而不是 oc apply
  • 当一个新用户添加到容器时,buildah 集群任务无法正常工作。

    当安装 Operator 时,buildah 集群任务的 --storage-driver 标志没有指定,因此它会被设置为默认值。在某些情况下,这会导致存储驱动程序设置不正确。当添加一个新用户时,错误的 storage-driver 会造成 buildah 集群任务失败并带有以下错误:

    useradd: /etc/passwd.8: lock file already used
    useradd: cannot lock /etc/passwd; try again later.

    作为临时解决方案,在 buildah-task.yaml 文件中手工把 --storage-driver 标识的值设置为 overlay

    1. cluster-admin 身份登录到集群:

      $ oc login -u <login> -p <password> https://openshift.example.com:6443
    2. 使用 oc edit 命令编辑 buildah 集群任务:

      $ oc edit clustertask buildah

      buildah clustertask YAML 文件的最新版本会在由 EDITOR 环境变量指定的编辑器中打开。

    3. Steps 字段中找到以下 command 字段:

       command: ['buildah', 'bud', '--format=$(params.FORMAT)', '--tls-verify=$(params.TLSVERIFY)', '--layers', '-f', '$(params.DOCKERFILE)', '-t', '$(resources.outputs.image.url)', '$(params.CONTEXT)']
    4. 使用以下内容替换 command 字段:

       command: ['buildah', '--storage-driver=overlay', 'bud', '--format=$(params.FORMAT)', '--tls-verify=$(params.TLSVERIFY)', '--no-cache', '-f', '$(params.DOCKERFILE)', '-t', '$(params.IMAGE)', '$(params.CONTEXT)']
    5. 保存文件并退出。

    另外,您还可以直接在 web 控制台中直接修改 buildah 集群任务 YAML 文件:进入 PipelinesCluster Tasksbuildah。从 Actions 菜单中选择 Edit Cluster Task,如前所示替换 command 项。

1.16.4. 修复的问题

  • 在以前的版本中,即使镜像构建已在进行中,DeploymentConfig 任务也会触发新的部署构建。这会导致管道部署失败。在这个版本中,deploy task 命令被 oc rollout status 命令替代,它会等待正在进行中的部署完成。
  • 现在在管道模板中添加了对 APP_NAME 参数的支持。
  • 在以前的版本中,Java S2I 的管道模板无法在 registry 中查找镜像。在这个版本中,使用现有镜像管道资源而不是用户提供的 IMAGE_NAME 参数来查找镜像。
  • 所有 OpenShift Pipelines 镜像现在都基于 Red Hat Universal Base Images(UBI)。
  • 在以前的版本中,当管道在 tekton-pipelines 以外的命名空间中安装时,tkn version 命令会将管道版本显示为 unknown 。在这个版本中,tkn version 命令会在任意命名空间中显示正确的管道版本。
  • tkn version 命令不再支持 -c 标志。
  • 非管理员用户现在可以列出集群触发器绑定。
  • 现在为 CEL 拦截器修复了事件监听程序 CompareSecret 功能。
  • 现在,当任务和集群任务的名称相同时,任务和集群任务的 listdescribestart 子命令可以正确地显示输出。
  • 在以前的版本中,OpenShift Pipelines Operator 修改了特权安全性上下文约束 (SCC),这会在集群升级过程中造成错误。这个错误现已解决。
  • tekton-pipelines 命名空间中,现在将所有任务运行和管道运行的超时设置为使用配置映射的 default-timeout-minutes 字段。
  • 在以前的版本中,Web 控制台中的管道部分没有为非管理员用户显示。这个问题现已解决。

第 2 章 关于 Red Hat OpenShift Pipelines

Red Hat OpenShift Pipelines 是一个基于 Kubernetes 资源的云原生的持续集成和持续交付(continuous integration and continuous delivery,简称 CI/CD)的解决方案。它通过提取底层实现的详情,使用 Tekton 构建块进行跨多个平台的自动部署。Tekton 引入了多个标准自定义资源定义 (CRD),用于定义可跨 Kubernetes 分布的 CI/CD 管道。

注意

因为 Red Hat OpenShift Pipelines 的发行节奏与 OpenShift Container Platform 不同,所以 Red Hat OpenShift Pipelines 文档现在为每个产品的次版本提供单独的文档。

Red Hat OpenShift Pipelines 文档包括在 https://docs.openshift.com/pipelines/

特定版本的文档使用版本选择器下拉列表,或者直接将版本添加到 URL,例如 https://docs.openshift.com/pipelines/1.13

另外,Red Hat OpenShift Pipelines 文档也包括在红帽客户门户网站 https://access.redhat.com/documentation/zh-cn/red_hat_openshift_pipelines/ 中。

如需有关 Red Hat OpenShift Pipelines 生命周期和支持的平台的更多信息,请参阅平台生命周期政策

第 3 章 了解 OpenShift Pipelines

Red Hat OpenShift Pipelines 是一个基于 Kubernetes 资源的云原生的持续集成和持续交付(continuous integration and continuous delivery,简称 CI/CD)的解决方案。它通过提取底层实现的详情,使用 Tekton 构建块进行跨多个平台的自动部署。Tekton 引入了多个标准自定义资源定义 (CRD),用于定义可跨 Kubernetes 分布的 CI/CD 管道。

3.1. 主要特性

  • Red Hat OpenShift Pipelines 是一个无服务器的 CI/CD 系统,它在独立的容器中运行 Pipelines,以及所有需要的依赖组件。
  • Red Hat OpenShift Pipelines 是为开发基于微服务架构的非中心化团队设计的。
  • Red Hat OpenShift Pipelines 使用标准 CI/CD 管道(pipeline)定义,这些定义可轻松扩展并与现有 Kubernetes 工具集成,可让您按需扩展。
  • 您可以通过 Red Hat OpenShift Pipelines 使用 Kubernetes 工具(如 Source-to-Image (S2I)、Buildah、Buildpacks 和 Kaniko)构建镜像,这些工具可移植到任何 Kubernetes 平台。
  • 您可以使用 OpenShift Container Platform 开发控制台来创建 Tekton 资源,查看管道运行的日志,并管理 OpenShift Container Platform 命名空间中的管道。

3.2. OpenShift Pipelines 概念

本指南提供了对管道(pipeline)概念的详细论述。

3.2.1. 任务

Task 资源是管道的构建块,它由按顺序执行的步骤组成。它基本上是一个输入和输出的功能。一个任务可以单独运行,也可以作为管道的一部分运行。任务可以重复使用,并可用于多个管道。

Step(步骤)是由任务顺序执行并实现特定目标(如构建镜像)的一系列命令。每个任务都作为 pod 运行,每个步骤都作为该 pod 中的容器运行。由于步骤在同一个 pod 中运行,所以它们可以访问同一卷来缓存文件、配置映射和 secret。

以下示例显示了 apply-manifests 任务。

apiVersion: tekton.dev/v1 1
kind: Task 2
metadata:
  name: apply-manifests 3
spec: 4
  workspaces:
  - name: source
  params:
    - name: manifest_dir
      description: The directory in source that contains yaml manifests
      type: string
      default: "k8s"
  steps:
    - name: apply
      image: image-registry.openshift-image-registry.svc:5000/openshift/cli:latest
      workingDir: /workspace/source
      command: ["/bin/bash", "-c"]
      args:
        - |-
          echo Applying manifests in $(params.manifest_dir) directory
          oc apply -f $(params.manifest_dir)
          echo -----------------------------------
1
任务 API 版本 v1
2
Kubernetes 对象的类型,任务
3
此任务的唯一名称。
4
列出任务中的参数和步骤,以及任务使用的工作区(workspace)。

此任务启动 pod,并在该 pod 中使用指定镜像运行一个容器,以运行指定的命令。

注意

从 OpenShift Pipelines 1.6 开始,步骤 YAML 文件中的以下默认值会被删除:

  • HOME 环境变量不会被默认为 /tekton/home 目录
  • workingDir 字段不会默认为 /workspace 目录

相反,步骤的容器定义 HOME 环境变量和 workingDir 字段。但是,您可以通过在 YAML 文件中为步骤指定自定义值来覆盖默认值。

作为临时方法,为保持与旧 OpenShift Pipelines 版本向后兼容性,您可以在 TektonConfig 自定义资源定义中将以下字段设置为 false

spec:
  pipeline:
    disable-working-directory-overwrite: false
    disable-home-env-overwrite: false

3.2.2. When 表达式

When 表达式通过设置管道中执行任务的条件来执行任务。它们包含一个组件列表,允许仅在满足特定条件时执行任务。当使用管道 YAML 文件中的 finally 字段指定的最终任务集合中也支持表达式。

表达式的主要组件如下:

  • input:指定静态输入或变量,如参数、任务结果和执行状态。您必须输入有效的输入。如果没有输入有效输入,则其值默认为空字符串。
  • operator:指定一个输入与一组 values 的关系。输入 innotin 作为 operator 的值。
  • values:指定字符串值的数组。输入由静态值或变量组成的非空数组,如参数、结果和工作空间的绑定状态。

在任务运行前评估表达式时声明的。如果 when 表达式的值为 True,则任务将运行。如果 when 表达式的值为 False,则跳过任务。

您可以在各种用例中使用 when 表达式。例如,是否:

  • 上一任务的结果如预期所示。
  • 之前的提交中更改了 Git 存储库中的文件。
  • 镜像是否存在于 registry 中。
  • 有可选的工作区可用。

以下示例显示了管道运行的 when 表达式。只有在满足以下条件时,管道运行才会执行 create-file 任务:path 参数为README.md,只有来自 check-file 的任务的 exists 结果为 yes 时才执行 echo-file-exists 任务。

apiVersion: tekton.dev/v1
kind: PipelineRun 1
metadata:
  generateName: guarded-pr-
spec:
  taskRunTemplate:
    serviceAccountName: pipeline
  pipelineSpec:
    params:
      - name: path
        type: string
        description: The path of the file to be created
    workspaces:
      - name: source
        description: |
          This workspace is shared among all the pipeline tasks to read/write common resources
    tasks:
      - name: create-file 2
        when:
          - input: "$(params.path)"
            operator: in
            values: ["README.md"]
        workspaces:
          - name: source
            workspace: source
        taskSpec:
          workspaces:
            - name: source
              description: The workspace to create the readme file in
          steps:
            - name: write-new-stuff
              image: ubuntu
              script: 'touch $(workspaces.source.path)/README.md'
      - name: check-file
        params:
          - name: path
            value: "$(params.path)"
        workspaces:
          - name: source
            workspace: source
        runAfter:
          - create-file
        taskSpec:
          params:
            - name: path
          workspaces:
            - name: source
              description: The workspace to check for the file
          results:
            - name: exists
              description: indicates whether the file exists or is missing
          steps:
            - name: check-file
              image: alpine
              script: |
                if test -f $(workspaces.source.path)/$(params.path); then
                  printf yes | tee /tekton/results/exists
                else
                  printf no | tee /tekton/results/exists
                fi
      - name: echo-file-exists
        when: 3
          - input: "$(tasks.check-file.results.exists)"
            operator: in
            values: ["yes"]
        taskSpec:
          steps:
            - name: echo
              image: ubuntu
              script: 'echo file exists'
...
      - name: task-should-be-skipped-1
        when: 4
          - input: "$(params.path)"
            operator: notin
            values: ["README.md"]
        taskSpec:
          steps:
            - name: echo
              image: ubuntu
              script: exit 1
...
    finally:
      - name: finally-task-should-be-executed
        when: 5
          - input: "$(tasks.echo-file-exists.status)"
            operator: in
            values: ["Succeeded"]
          - input: "$(tasks.status)"
            operator: in
            values: ["Succeeded"]
          - input: "$(tasks.check-file.results.exists)"
            operator: in
            values: ["yes"]
          - input: "$(params.path)"
            operator: in
            values: ["README.md"]
        taskSpec:
          steps:
            - name: echo
              image: ubuntu
              script: 'echo finally done'
  params:
    - name: path
      value: README.md
  workspaces:
    - name: source
      volumeClaimTemplate:
        spec:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 16Mi
1
指定 Kubernetes 对象的类型。在本例中,PipelineRun
2
管道中使用的任务 create-file
3
when 表达式指定,只有来自 check-fileexists 结果为 yes 时才执行 echo-file-exists 任务。
4
when 表达式指定,只有 path 参数是 README.md 时跳过 task-should-be-skipped-1 任务。
5
when 表达式指定,只有 echo-file-exists 任务的执行状态以及任务状态为 Succeeded,来自 check-file 任务的 exists 结果为 yespath 参数是 README.md 时,才执行 finally-task-should-be-executed 任务。

OpenShift Container Platform Web 控制台的 Pipeline Run details 页面显示任务和 when 表达式的状态,如下所示:

  • 所有条件都满足:任务和 when 表达式符号(以钻石形表示)为绿色。
  • 有任何一个条件不符合:任务被跳过。跳过的任务和 when 表达式符号为灰色。
  • 未满足任何条件:任务被跳过。跳过的任务和 when 表达式符号为灰色。
  • 任务运行失败:失败的任务和 when 表达式符号为红色。

3.2.3. 最后的任务

finally 任务是使用管道 YAML 文件中的 finally 字段指定的最终任务集合。finally 任务始终执行管道中的任务,无论管道运行是否成功执行。finally 任务以并行方式执行,在所有管道任务运行后,相应的频道存在前。

您可以配置一个 finally 任务,以使用同一管道中任何任务的结果。这个方法不会更改运行此最终任务的顺序。它在所有非最终任务执行后与其他最终任务并行执行。

以下示例显示了 clone-cleanup-workspace 管道的代码片段。此代码将存储库克隆到共享的工作区,并清理工作区。执行管道任务后,管道 YAML 文件的 finally 中指定的 cleanup 任务会清理工作区。

apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: clone-cleanup-workspace 1
spec:
  workspaces:
    - name: git-source 2
  tasks:
    - name: clone-app-repo 3
      taskRef:
        name: git-clone-from-catalog
      params:
        - name: url
          value: https://github.com/tektoncd/community.git
        - name: subdirectory
          value: application
      workspaces:
        - name: output
          workspace: git-source
  finally:
    - name: cleanup 4
      taskRef: 5
        name: cleanup-workspace
      workspaces: 6
        - name: source
          workspace: git-source
    - name: check-git-commit
      params: 7
        - name: commit
          value: $(tasks.clone-app-repo.results.commit)
      taskSpec: 8
        params:
          - name: commit
        steps:
          - name: check-commit-initialized
            image: alpine
            script: |
              if [[ ! $(params.commit) ]]; then
                exit 1
              fi
1
管道的唯一名称。
2
克隆 git 存储库的共享工作区。
3
将应用存储库克隆到共享工作区的任务。
4
清理共享工作区的任务。
5
对任务运行中要执行的任务的引用。
6
管道中的任务在运行时需要的共享存储卷来接收输入或提供输出。
7
任务所需的参数列表。如果参数没有隐式默认值,您必须明确设置其值。
8
嵌入式任务定义.

3.2.4. TaskRun

TaskRun 使用集群上的特定输入、输出和执行参数来实例化一个任务用来执行它。它可自行调用,或作为管道中每个任务的管道运行的一部分。

任务由执行容器镜像的一个或多个步骤组成,每个容器镜像执行特定的构建工作。任务运行以指定顺序在任务中执行步骤,直到所有步骤都成功执行或发生失败为止。PipelineRunPipelineRun 为管道中的每个任务自动创建。

以下示例显示了使用相关输入参数运行 apply-manifests 任务的任务运行:

apiVersion: tekton.dev/v1 1
kind: TaskRun 2
metadata:
  name: apply-manifests-taskrun 3
spec: 4
  taskRunTemplate:
    serviceAccountName: pipeline
  taskRef: 5
    kind: Task
    name: apply-manifests
  workspaces: 6
  - name: source
    persistentVolumeClaim:
      claimName: source-pvc
1
任务运行 API 版本 v1
2
指定 Kubernetes 对象的类型。在本例中,TaskRun
3
用于标识此任务运行的唯一名称。
4
任务运行的定义。对于此任务运行,指定了任务和所需的工作区。
5
用于此任务运行的任务引用的名称。任务运行执行 apply-manifests 任务。
6
任务运行使用的工作区。

3.2.5. Pipelines

Pipeline 一组 Task(任务)资源,它们按特定顺序执行。执行它们是为了构建复杂的工作流,以自动化应用程序的构建、部署和交付。您可以使用包含一个或多个任务的管道为应用程序定义 CI/CD 工作流。

Pipeline 资源的定义由多个字段或属性组成,它们一起可让管道实现一个特定目标。每个 Pipeline 资源定义必须至少包含一个Task(任务)资源,用于控制特定输入并生成特定的输出。Pipeline 定义也可以根据应用程序要求包括 ConditionsWorkspacesParametersResources

以下示例显示了 build-and-deploy pipeline,它使用 buildah ClusterTask 资源从 Git 存储库构建应用程序镜像:

apiVersion: tekton.dev/v1 1
kind: Pipeline 2
metadata:
  name: build-and-deploy 3
spec: 4
  workspaces: 5
  - name: shared-workspace
  params: 6
  - name: deployment-name
    type: string
    description: name of the deployment to be patched
  - name: git-url
    type: string
    description: url of the git repo for the code of deployment
  - name: git-revision
    type: string
    description: revision to be used from repo of the code for deployment
    default: "pipelines-1.13"
  - name: IMAGE
    type: string
    description: image to be built from the code
  tasks: 7
  - name: fetch-repository
    taskRef:
      name: git-clone
      kind: ClusterTask
    workspaces:
    - name: output
      workspace: shared-workspace
    params:
    - name: url
      value: $(params.git-url)
    - name: subdirectory
      value: ""
    - name: deleteExisting
      value: "true"
    - name: revision
      value: $(params.git-revision)
  - name: build-image 8
    taskRef:
      name: buildah
      kind: ClusterTask
    params:
    - name: TLSVERIFY
      value: "false"
    - name: IMAGE
      value: $(params.IMAGE)
    workspaces:
    - name: source
      workspace: shared-workspace
    runAfter:
    - fetch-repository
  - name: apply-manifests 9
    taskRef:
      name: apply-manifests
    workspaces:
    - name: source
      workspace: shared-workspace
    runAfter: 10
    - build-image
  - name: update-deployment
    taskRef:
      name: update-deployment
    workspaces:
    - name: source
      workspace: shared-workspace
    params:
    - name: deployment
      value: $(params.deployment-name)
    - name: IMAGE
      value: $(params.IMAGE)
    runAfter:
    - apply-manifests
1
Pipeline API 版本 v1
2
指定 Kubernetes 对象的类型。在本例中, Pipeline
3
此管道的唯一名称。
4
指定管道的定义和结构。
5
管道中的所有任务使用的工作区。
6
管道中的所有任务使用的参数。
7
指定管道中使用的任务列表。
8
任务 build-image 使用 buildah ClusterTask 从给定的 Git 仓库构建应用程序镜像。
9
任务 apply-manifests 使用相同名称的用户定义的任务。
10
指定在管道中运行任务的顺序。在本例中,apply-manifests 任务仅在 build-image 任务完成后运行。
注意

Red Hat OpenShift Pipelines Operator 安装 Buildah 集群任务,并创建具有足够权限来构建和推送镜像的管道服务帐户。当与没有权限不足的不同服务帐户关联时,Buildah 集群任务可能会失败。

3.2.6. PipelineRun

PipelineRun 是一种资源类型,它绑定了管道、工作区、凭证和一组特定于运行 CI/CD 工作流的情况的参数值。

管道运行是管道的运行实例。它使用集群上的特定输入、输出和执行参数来实例化 Pipeline 执行。它还为管道运行中的每个任务创建一个任务运行。

管道按顺序运行任务,直到任务完成或任务失败为止。status 字段跟踪和每个任务运行的进度,并存储它以用于监控和审计目的。

以下示例使用相关的资源和参数运行 build-and-deploy 管道:

apiVersion: tekton.dev/v1 1
kind: PipelineRun 2
metadata:
  name: build-deploy-api-pipelinerun 3
spec:
  pipelineRef:
    name: build-and-deploy 4
  params: 5
  - name: deployment-name
    value: vote-api
  - name: git-url
    value: https://github.com/openshift-pipelines/vote-api.git
  - name: IMAGE
    value: image-registry.openshift-image-registry.svc:5000/pipelines-tutorial/vote-api
  workspaces: 6
  - name: shared-workspace
    volumeClaimTemplate:
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 500Mi
1
Pipeline 运行 API 版本 v1
2
Kubernetes 对象的类型。在本例中,PipelineRun
3
用于标识此管道运行的唯一名称。
4
要运行的管道的名称。在本例中,build-and-deploy
5
运行管道所需的参数列表。
6
管道运行使用的工作区。

3.2.7. Workspaces(工作区)

注意

建议您在 Red Hat OpenShift Pipelines 中使用 Workspaces 而不是 PipelineResource CR,因为 PipelineResource CR 很难调试、范围有限,且不容易重复使用。

Workspace 声明管道中任务在运行时需要的共享存储卷来接收输入或提供输出。Workspaces 不指定卷的实际位置,它允许您定义运行时所需的文件系统或部分文件系统。Task 或 Pipeline 会声明 Workspace,您必须提供卷的特定位置详情。然后,它会挂载到任务运行或管道运行中的 Workspace 中。这种将卷声明与运行时存储卷分开来使得任务可以被重复使用、灵活且独立于用户环境。

使用工作区,您可以:

  • 存储任务输入和输出
  • 在任务间共享数据
  • 使用它作为 Secret 中持有的凭证的挂载点
  • 使用它作为配置映射中保存的配置的挂载点
  • 使用它作为机构共享的通用工具的挂载点
  • 创建可加快作业的构建工件缓存

您可以使用以下方法在 TaskRunPipelineRun 中指定工作区:

  • 只读配置映射或 secret
  • 与其他任务共享的现有持久性卷声明
  • 来自提供的 VolumeClaim 模板的持久性卷声明
  • 任务运行完成后丢弃的 emptyDir

以下示例显示了 build-and-deploy 管道的代码片段,它为 build-imageapply-manifests 任务声明 shared-workspace 工作区。

apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: build-and-deploy
spec:
  workspaces: 1
  - name: shared-workspace
  params:
...
  tasks: 2
  - name: build-image
    taskRef:
      name: buildah
      kind: ClusterTask
    params:
    - name: TLSVERIFY
      value: "false"
    - name: IMAGE
      value: $(params.IMAGE)
    workspaces: 3
    - name: source 4
      workspace: shared-workspace 5
    runAfter:
    - fetch-repository
  - name: apply-manifests
    taskRef:
      name: apply-manifests
    workspaces: 6
    - name: source
      workspace: shared-workspace
    runAfter:
      - build-image
...
1
管道中定义的任务共享的 Workspace 列表。管道可以根据需要定义工作区。在这个示例中,只声明了一个名为 shared-workspace 的工作区。
2
管道中使用的任务定义。此片段定义了两个任务: build-imageapply-manifests,它们共享一个通用工作区。
3
build-image 任务中使用的工作区列表。任务定义可以根据需要包含多个工作区。但是,建议任务最多使用一个可写工作区。
4
标识任务中使用的工作区的名称。此任务使用一个名为 source 的工作区。
5
任务使用的管道工作区的名称。请注意,工作区 source 依次使用名为 shared-workspace 的管道工作区。
6
apply-manifests 任务中使用的工作区列表。请注意,此任务与 build-image 任务共享 source 工作区。

工作区可帮助任务共享数据,并允许您指定 Pipeline 中每个任务在执行过程中所需的一个或多个卷。您可以创建持久性卷声明,或者提供一个卷声明模板,用于为您创建持久性卷声明。

以下 build-deploy-api-pipelinerun 管道运行的代码片段使用卷声明模板创建持久性卷声明来为 build-and-deploy 管道中使用的 shared-workspace Workspace 定义存储卷。

apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  name: build-deploy-api-pipelinerun
spec:
  pipelineRef:
    name: build-and-deploy
  params:
...

  workspaces: 1
  - name: shared-workspace 2
    volumeClaimTemplate: 3
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 500Mi
1
指定管道 Workspaces 列表,用于在管道运行中提供卷绑定。
2
提供卷的管道中的工作区名称。
3
指定卷声明模板,该模板可创建一个持久性卷声明来为工作区定义存储卷。

3.2.8. 触发器

使用触发器(Trigger)和 Pipelines 一起创建一个完整的 CI/CD 系统,其中 Kubernetes 资源定义整个 CI/CD 执行。触发器捕获外部事件,如 Git 拉取请求,并处理它们以获取关键信息。将这个事件数据映射到一组预定义的参数会触发一系列任务,然后创建和部署 Kubernetes 资源并实例化管道。

例如,您可以使用 Red Hat OpenShift Pipelines 为应用程序定义 CI/CD 工作流。管道必须启动,才能在应用程序存储库中使任何新的更改生效。通过捕获和处理任何更改事件,并通过触发器部署新镜像的管道运行来自动触发这个过程。

触发器由以下主要资源组成,它们可一起组成可重复使用、分离和自力更生的 CI/CD 系统:

  • TriggerBinding 资源从事件有效负载中提取字段,并将它们保存为参数。

    以下示例显示了 TriggerBinding 资源的代码片段,它从接收的事件有效负载中提取 Git 存储库信息:

    apiVersion: triggers.tekton.dev/v1beta1 1
    kind: TriggerBinding 2
    metadata:
      name: vote-app 3
    spec:
      params: 4
      - name: git-repo-url
        value: $(body.repository.url)
      - name: git-repo-name
        value: $(body.repository.name)
      - name: git-revision
        value: $(body.head_commit.id)
    1
    TriggerBinding 资源的 API 版本。在本例中,v1beta1
    2
    指定 Kubernetes 对象的类型。在本例中,TriggerBinding
    3
    用于标识 TriggerBinding 资源的唯一名称。
    4
    从接收的事件有效负载中提取并传递给 TriggerTemplate 的参数列表。在本例中,Git 仓库 URL、名称和修订版本是从事件有效负载主体中提取的。
  • TriggerTemplate 资源充当创建资源的方式标准。它指定了 TriggerBinding 资源中参数化数据的方式。触发器模板从触发器绑定接收输入,然后执行一系列操作来创建新管道资源,并启动新管道运行。

    以下示例显示了 TriggerTemplate 资源的代码片段,它使用您刚创建的 TriggerBinding 资源提供的 Git 存储库信息创建一个管道运行:

    apiVersion: triggers.tekton.dev/v1beta1 1
    kind: TriggerTemplate 2
    metadata:
      name: vote-app 3
    spec:
      params: 4
      - name: git-repo-url
        description: The git repository url
      - name: git-revision
        description: The git revision
        default: pipelines-1.13
      - name: git-repo-name
        description: The name of the deployment to be created / patched
    
      resourcetemplates: 5
      - apiVersion: tekton.dev/v1
        kind: PipelineRun
        metadata:
          name: build-deploy-$(tt.params.git-repo-name)-$(uid)
        spec:
          taskRunTemplate:
            serviceAccountName: pipeline
          pipelineRef:
            name: build-and-deploy
          params:
          - name: deployment-name
            value: $(tt.params.git-repo-name)
          - name: git-url
            value: $(tt.params.git-repo-url)
          - name: git-revision
            value: $(tt.params.git-revision)
          - name: IMAGE
            value: image-registry.openshift-image-registry.svc:5000/pipelines-tutorial/$(tt.params.git-repo-name)
          workspaces:
          - name: shared-workspace
            volumeClaimTemplate:
             spec:
              accessModes:
               - ReadWriteOnce
              resources:
                requests:
                  storage: 500Mi
    1
    TriggerTemplate 资源的 API 版本。在本例中,v1beta1
    2
    指定 Kubernetes 对象的类型。在本例中,TriggerTemplate
    3
    用于标识 TriggerTemplate 资源的唯一名称。
    4
    TriggerBinding 资源提供的参数。
    5
    指定使用 TriggerBindingEventListener 资源接收的参数创建资源方法的模板列表。
  • Trigger 资源组合了 TriggerBindingTriggerTemplate 资源,以及可选的 interceptors 事件处理器。

    拦截器会处理在 TriggerBinding 资源之前运行的特定平台的所有事件。您可以使用拦截器过滤载荷,验证事件,定义和测试触发器条件,以及实施其他有用的处理。拦截器使用 secret 进行事件验证。在事件数据穿过拦截器后,在将有效负载数据传递给触发器之前,它会被发送到触发器。您还可以使用拦截器修改 EventListener 规格中引用的关联触发器的行为。

    以下示例显示了一个 Trigger 资源的代码片段,名为 vote-trigger,它连接 TriggerBindingTriggerTemplate 资源,以及 interceptors 事件处理器。

    apiVersion: triggers.tekton.dev/v1beta1 1
    kind: Trigger 2
    metadata:
      name: vote-trigger 3
    spec:
      taskRunTemplate:
        serviceAccountName: pipeline 4
      interceptors:
        - ref:
            name: "github" 5
          params: 6
            - name: "secretRef"
              value:
                secretName: github-secret
                secretKey: secretToken
            - name: "eventTypes"
              value: ["push"]
      bindings:
        - ref: vote-app 7
      template: 8
         ref: vote-app
    ---
    apiVersion: v1
    kind: Secret 9
    metadata:
      name: github-secret
    type: Opaque
    stringData:
      secretToken: "1234567"
    1
    Trigger 资源的 API 版本。在本例中,v1beta1
    2
    指定 Kubernetes 对象的类型。在本例中, Trigger
    3
    用于标识 Trigger 资源的唯一名称。
    4
    要使用的服务帐户名称。
    5
    要被引用的拦截器名称。在本例中,是 github
    6
    要指定的参数.
    7
    连接到 TriggerTemplate 资源的 TriggerBinding 资源的名称。
    8
    连接到 TriggerBinding 资源的 TriggerTemplate 资源的名称。
    9
    用于验证事件的 Secret。
  • EventListener 资源提供一个端点或事件接收器(sink),用于使用 JSON 有效负载侦听传入的基于 HTTP 的事件。它从每个 TriggerBinding 资源提取事件参数,然后处理此数据以按照对应的 TriggerTemplate 资源指定的 Kubernetes 资源创建 Kubernetes 资源。EventListener 资源还使用事件 interceptors(拦截器) 在有效负载上执行轻量级事件处理或基本过滤,这可识别有效负载类型并进行自选修改。目前,管道触发器支持五种拦截器:Webhook Interceptors, GitHub 拦截器GitLab 拦截器Bitbucket 拦截器Common Expression Language (CEL) 拦截器

    以下示例显示了一个 EventListener 资源,它引用名为 vote-triggerTrigger 资源。

    apiVersion: triggers.tekton.dev/v1beta1 1
    kind: EventListener 2
    metadata:
      name: vote-app 3
    spec:
      taskRunTemplate:
        serviceAccountName: pipeline 4
      triggers:
        - triggerRef: vote-trigger 5
    1
    EventListener 资源的 API 版本。在本例中,v1beta1
    2
    指定 Kubernetes 对象的类型。在本例中,EventListener
    3
    用于标识 EventListener 资源的唯一名称。
    4
    要使用的服务帐户名称。
    5
    EventListener 资源引用的 Trigger 资源的名称。

3.3. 其他资源

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.