×

有关 OpenShift Pipelines 生命周期和受支持平台的更多信息,请参阅 OpenShift Operator 生命周期Red Hat OpenShift Container Platform 生命周期策略

发行说明包含有关新功能和弃用功能、重大更改和已知问题的信息。以下发行说明适用于 OpenShift Container Platform 上最新的 OpenShift Pipelines 发行版。

Red Hat OpenShift Pipelines 是一种基于 Tekton 项目的云原生 CI/CD 体验,它提供:

  • 标准的 Kubernetes 原生管道定义 (CRD)。

  • 无需 CI 服务器管理开销的无服务器管道。

  • 可以使用任何 Kubernetes 工具(例如 S2I、Buildah、JIB 和 Kaniko)构建镜像的可扩展性。

  • 跨任何 Kubernetes 发行版的可移植性。

  • 用于与管道交互的强大的 CLI。

  • 与 OpenShift Container Platform Web 控制台的**开发人员**视角集成的用户体验。

有关 Red Hat OpenShift Pipelines 的概述,请参阅 了解 OpenShift Pipelines

兼容性和支持矩阵

此发行版中的某些功能当前处于 技术预览阶段。这些实验性功能并非旨在用于生产环境。

在下表中,功能使用以下状态标记:

TP

技术预览

GA

通用可用性

表 1. 兼容性和支持矩阵
Red Hat OpenShift Pipelines 版本 组件版本 OpenShift 版本 支持状态

操作符

管道

触发器

CLI

中心

代码即管道

结果

手动批准关卡

1.17

0.65.x

0.30.x

0.39.x

0.23.x (GA)

1.19.x (TP)

0.29.x (GA)

0.13.x (TP)

0.4.x (TP)

4.15, 4.16, 4.17

GA

1.16

0.62.x

0.29.x

0.38.x

0.22.x (GA)

1.18.x (TP)

0.28.x (GA)

0.12.x (TP)

0.3.x (TP)

4.15, 4.16, 4.17

GA

1.15

0.59.x

0.27.x

0.37.x

0.20.x (GA)

1.17.x (TP)

0.27.x (GA)

0.10.x (TP)

0.2.x (TP)

4.14, 4.15, 4.16

GA

1.14

0.56.x

0.26.x

0.35.x

0.20.x (GA)

1.16.x (TP)

0.24.x (GA)

0.9.x (TP)

NA

4.12, 4.13, 4.14, 4.15, 4.16

GA

如有任何问题或反馈,您可以发送电子邮件至产品团队:[email protected]

让开源更具包容性

Red Hat 致力于替换我们代码、文档和 Web 属性中存在问题的语言。我们将从以下四个术语开始:master、slave、blacklist 和 whitelist。由于这项工作的巨大性,这些更改将在未来几个发行版中逐步实施。更多详情,请参阅 我们首席技术官 Chris Wright 的信息

Red Hat OpenShift Pipelines 通用版 1.17 版本说明

此更新使 Red Hat OpenShift Pipelines 通用版 (GA) 1.17 可用于 OpenShift Container Platform 4.15 及更高版本。

新功能

除了错误修复和稳定性改进之外,以下部分重点介绍了 Red Hat OpenShift Pipelines 1.17 的新功能。

Pipelines

  • 在此版本中,您可以使用 Git 解析器配置多个 Git 提供程序,或者可以在 TektonConfig 自定义资源 (CR) 中为同一个 Git 提供程序添加多个配置。然后,您可以使用 configKey 参数指定在不同的任务运行和管道运行中使用的 Git 配置。

    多个 Git 提供程序配置示例
    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
    # ...
      pipeline:
        git-resolver-config:
          # configuration 1
          fetch-timeout: "1m"
          default-url: "https://github.com/tektoncd/catalog.git"
          default-revision: "main"
          scm-type: "github"
          server-url: ""
          api-token-secret-name: ""
          api-token-secret-key: ""
          api-token-secret-namespace: "default"
          default-org: ""
          # configuration 2
          test1.fetch-timeout: "5m"
          test1.default-url: ""
          test1.default-revision: "stable"
          test1.scm-type: "github"
          test1.server-url: "api.internal-github.com"
          test1.api-token-secret-name: "test1-secret"
          test1.api-token-secret-key: "token"
          test1.api-token-secret-namespace: "test1"
          test1.default-org: "tektoncd"
          # configuration 3
          test2.fetch-timeout: "10m"
          test2.default-url: ""
          test2.default-revision: "stable"
          test2.scm-type: "gitlab"
          test2.server-url: "api.internal-gitlab.com"
          test2.api-token-secret-name: "test2-secret"
          test2.api-token-secret-key: "pat"
          test2.api-token-secret-namespace: "test2"
          test2.default-org: "tektoncd-infra"
    # ...
    在管道运行中使用 test1 配置的示例
    apiVersion: tekton.dev/v1
    kind: PipelineRun
    metadata:
      name: example
    spec:
      pipelineRef:
        resolver: git
        params:
        # ...
        - name: configKey
          value: test1
    # ...
  • 通过此更新,您现在可以监控命名空间、管道和管道运行级别以及集群级别的正在运行的 PipelineRun 资源。您可以通过设置 TektonConfig 自定义资源中的 metrics.running-pipelinerun.level 参数值来配置级别,设置为 namespacepipelinepipelinerun。默认值为为空,这将监控设置为集群级别。

    在命名空间级别监控正在运行的管道运行的示例
    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pipeline:
        # ...
        metrics.running-pipelinerun.level: namespace
    # ...
  • 此更新后,在执行管道运行或任务运行后,资源的 YAML 清单中将包含一个标签,显示执行该资源的用户 ID。对于 PipelineRun 资源,标签为 tekton.dev/PipelineRunUID。对于 TaskRun 资源,标签为 tekton.dev/TaskRunUID

  • 此更新后,当您在 TektonConfig CR 中使用 spec.pipeline.performance 规范指定性能调整值(例如 threads-per-controllerkube-api-qpskube-api-burst)时,OpenShift Pipelines 会将这些值应用于解析器控制器以及其他控制器。

Operator

  • 此更新后,您可以使用附加参数运行 skopeo-copy 命令,例如 --all--preserve-digests。您可以将这些参数作为以空格分隔的字符串传递,如下例所示

    命令示例
    $ tkn task start skopeo-copy -p ARGS="--all --preserve-digests"
  • 此更新后,OpenShift Pipelines 会应用您应用于管道或任务的任何安全上下文约束 (SCC) 的临时卷设置。

Pipelines as Code

  • 此更新后,添加了 pipelines_as_code_running_pipelineruns_count 指标,用于显示 Pipelines as Code 中正在运行的 PipelineRun 资源的数量。该指标可以按存储库或命名空间进行筛选。

  • 此更新后,添加了 pipelines_as_code_pipelinerun_duration_seconds_sum 指标,用于显示 Pipelines as Code 中所有 PipelineRun 资源的总持续时间(以秒为单位)。该指标可以按存储库、命名空间、PipelineRun 状态和 PipelineRun 状态更改原因进行筛选。

Tekton Results

  • 此更新后,您可以配置 Tekton Results,以在结果表中的 summary fields 列中包含来自管道和任务的 YAML 清单的某些标签和注释。默认情况下,使用 tekton.dev/pipeline 标签的值。要进行此更改,请修改 TektonResult CR,如下例所示

    TektonResult CR 中配置摘要标签和注释的示例
    apiVersion: operator.tekton.dev/v1
    kind: TektonResult
    metadata:
      name: result
    spec:
      options:
        deployments:
          tekton-results-watcher:
            spec:
              template:
                spec:
                  containers:
                  - name: watcher
                    args:
                    - "--summary_labels=org.tekton.sample_label,tekton.dev/pipeline"
                    - "--summary_annotations=org.tekton.sample_annotation"

Tekton Chains

  • 此更新后,您可以配置 TektonConfig 自定义资源 (CR) 以生成 ecdsa 类型的 x509 密钥对,并将其与 Tekton Chains 一起使用来签署工件。您可以通过将 TektonConfig 自定义资源 (CR) 中的 generateSigningSecret 字段设置为 true 来生成密钥对。

    创建 ecdsa 密钥对的示例
    apiVersion: operator.tekton.dev/v1
    kind: TektonConfig
    metadata:
      name: config
    spec:
    # ...
      chain:
        disabled: false
        generateSigningSecret: true
    # ...
  • 在此更新之前,如果您未在 TektonConfig CR 中配置 Tekton Chains,则 Operator 不会传递任何默认的 Chains 配置。此更新后,如果您未在 TektonConfig CR 中配置 Tekton Chains,则 Operator 会使用以下默认属性设置 Tekton Chains 配置。

    apiVersion: operator.tekton.dev/v1
    kind: TektonConfig
    metadata:
      name: config
    spec:
    # ...
      chain:
        artifacts.taskrun.format: in-toto
        artifacts.taskrun.storage: oci
        artifacts.oci.storage: oci
        artifacts.oci.format: simplesigning
        artifacts.pipelinerun.format: in-toto
        artifacts.pipelinerun.storage: oci
    # ...
  • 此更新后,Tekton Chains 现在支持从指定文件中提取 mongo-server-url URL,该文件可以具有任何名称。您现在可以使用指向容器内有效文件路径的 storage.docdb.mongo-server-url-path 参数。

重大更改

  • 此更新后,已弃用的 ClusterTask 资源已从 Operator 中删除。作为替代方案,您可以使用集群解析器访问 OpenShift Pipelines 在 openshift-pipelines 命名空间中安装的任务。

    在升级到 OpenShift Pipelines 1.17 之前,如果您配置了任何使用 ClusterTask 资源的管道,则必须编辑它们以使用 openshift-pipelines 命名空间中的任务。否则,升级后,管道将失败。

    有关使用 openshift-pipelines 命名空间中任务的更多信息,请参见 OpenShift Pipelines 命名空间中提供的任务

  • 此更新后,社区集群任务已从 Operator 中删除。作为替代方案,您可以从 Tekton 目录(GitHub 资源)下载它们。社区集群任务计划在未来的版本中作为任务添加。以下列表显示了已删除的社区集群任务:

    • argocd-task-sync-and-wait

    • git-cli

    • helm-upgrade-from-repo

    • helm-upgrade-from-source

    • jib-maven

    • kubeconfig-creator

    • pull-request

    • trigger-jenkins-job

已修复的问题

  • 此更新后,如果 GitLab 推送事件有效负载不包含任何提交,则 Pipelines as Code 控制器将不再处理该事件。相反,它会正确显示一条错误消息,警告用户没有附加任何提交。

  • 此更新后,Pipelines as Code 控制器将不再处理 GitLab 标签删除事件,该事件会导致控制器崩溃。相反,它会正确显示一条错误消息,警告用户不支持删除标签事件。

  • 在此更新之前,某些标准变量、标头值和正文字段(例如 body.eventKey 字段)未在 Bitbucket Server 的 PipelineRun 资源中解析。此更新后,该问题已修复。

  • 此更新后,如果 SOURCE_IMAGE_URLDESTINATION_IMAGE_URL 参数为空,则 skopeo-copy 任务支持使用 url.txt 文件复制多个镜像。

  • 在此更新之前,在空存储库上运行 tkn pac create repo 命令会导致 . 点符号作为模板中管道运行的名称生成。此更新后,该问题已修复,现在使用 REPO_NAME.git 作为管道运行名称。

  • 此更新后,管道运行失败处理已修复,以便在 status.message 字段中准确报告验证失败,并始终触发 finally 任务,即使任务验证失败也是如此。

  • 在此更新之前,如果 Pod 由于内存不足错误而失败,则任务运行不会立即失败。相反,它会无响应一段时间,然后失败。此更新后,任务运行会立即失败。

  • 在此更新之前,如果 CustomRun 资源引用返回数组作为结果的管道或任务资源,则会在日志中报告结果类型不匹配。此更新后,数组结果将被正确处理。

  • 在此更新之前,当任务运行失败时,在某些情况下,任务中某些步骤的状态未在 TaskRun YAML 清单中正确记录。此更新后,状态将被正确记录。

  • 在此更新之前,如果任务中的某个步骤失败,则任务运行或流水线运行的 YAML 清单中后续步骤有时不会被标记为跳过。此更新后,这些步骤将被标记为跳过。

  • 在此更新之前,如果流水线运行包含一个验证失败的任务,则后续的finally任务不会运行,即使预期它会在之前任务的任何失败之后运行。此更新后,finally任务将会运行。

  • 在此更新之前,在使用 GitLab 的代码流水线时,如果.tekton目录包含超过 20 个文件,则某些流水线运行将无法启动。此更新后,流水线运行将能够正确启动。

  • 在此更新之前,在使用 BitBucket 的代码流水线时,BitBucket 事件中的错误负载可能导致代码流水线控制器崩溃。此更新后,控制器不会崩溃,会在处理之前验证负载,并正确报告错误。

  • 在此更新之前,在使用代码流水线时,如果在流水线运行完成之前将其删除,则临时 Git 身份验证密钥将保留在 OpenShift Container Platform 命名空间中。由于此问题,密钥配额可能会达到上限,在这种情况下,新的流水线运行将无法启动。此更新后,代码流水线会正确删除临时密钥。

  • 在此更新之前,在使用 BitBucket 的代码流水线时,当流水线运行配置为on-target-branch(例如:on-target-branch: [refs/tags/*])时,不会匹配与标签相关的事件。发生这种情况是因为与标签相关的 BitBucket 事件负载不包含refs/tags前缀。此更新后,代码流水线将正确匹配标签事件。

  • 在此更新之前,当取消任务运行时,Tekton Chains 不会记录任务的规范。此更新后,Tekton Chains 将记录任务的规范。

  • 在此更新之前,在 Tekton Chains 中,任务规范中记录的步骤(TaskRun.Status.steps)可能不匹配,即使任务运行正确执行了任务中的所有步骤。此更新后,任务规范中的步骤和任务运行中执行的步骤将被正确记录。

  • 在此更新之前,当流水线运行因超时而结束时,日志输出有时包含无效的错误消息,并且流水线运行的状态未被正确报告。此更新后,此类消息不会出现在日志中,并且状态将被正确报告。

  • 在此更新之前,当您指定将工作区安装到任务的一个或多个步骤中时,OpenShift Pipelines 会将工作区安装到任务中的所有步骤。此更新后,工作区仅安装在指定它的步骤中。

  • 在此更新之前,在使用代码流水线时,如果 OpenShift Container Platform 集群非常繁忙,则某些流水线运行由于并发队列乱序且代码流水线未正确恢复而无法执行。此更新后,代码流水线将正确管理并发队列并执行所有流水线运行。

  • 在此更新之前,如果您在TektonConfig CR 中指定了默认容器资源需求,然后将LimitRange设置应用于流水线或任务,则有时不会应用LimitRange设置,因为默认需求会覆盖它。此更新后,LimitRange设置将覆盖默认容器资源需求。

  • 在此更新之前,如果流水线运行或任务运行因验证错误而无法执行,OpenShift Pipelines 会记录并显示流水线运行或任务运行的通用失败状态。此更新后,OpenShift Pipelines 将记录验证失败状态。

  • 在此更新之前,当您使用tkn bundle命令读取大型 Tekton bundle 的内容时,该命令可能会失败。此更新后,tkn命令行实用程序将正确处理大型 Tekton bundle。

  • 在此更新之前,当您使用tkn命令行实用程序查看已完成的流水线运行时,由于您在流水线中设置的条件而被跳过的任务将显示为已成功(已完成)。此更新后,它们将不再显示为已完成。