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


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

1.3.1. 新功能

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

1.3.1.1. 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 资源。您可以通过将 metrics.running-pipelinerun.level 参数设置为 命名空间,pipeline, 或 pipelinerun,通过 TektonConfig 自定义资源配置级别。默认值为空,它在集群级别设置监控。

    监控在命名空间级别运行的管道运行示例

    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 spec 来指定性能调优值,如 threads-per-controllerkube-api-qpskube-api-burst 和 kube-api-burst,OpenShift Pipelines 会将这些值应用到解析器控制器和其他控制器。

1.3.1.2. Operator

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

    示例命令

    $ tkn task start skopeo-copy -p ARGS="--all --preserve-digests"

  • 在这个版本中,OpenShift Pipelines 应用应用到管道或任务的任何安全性上下文约束(SCC)的临时卷设置。

1.3.1.3. Pipelines 作为代码(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 状态更改原因进行过滤。

1.3.1.4. Tekton Results

  • 在这个版本中,您可以将 Tekton 结果配置为从管道的 YAML 清单中包含某些标签和注解,并在结果表的 summary 字段 列中包含特定的标签和注解。默认情况下使用 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"

1.3.1.5. 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 链,Operator 不会传递任何默认链配置。在这个版本中,如果您没有在 TektonConfig CR 中配置 Tekton 链,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 参数指向容器中的有效文件路径。

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

  • 在这个版本中,已弃用的 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

1.3.3. 修复的问题

  • 在这个版本中,如果 push 事件有效负载不包含提交,Pipelines as Code 控制器不再处理 GitLab push 事件。相反,它会正确地显示错误消息警告用户没有附加提交。
  • 在这个版本中,Pipelines as Code 控制器不再处理 GitLab 标签删除事件,这会导致控制器崩溃。相反,它可以正确地显示错误消息警告用户删除标签事件。
  • 在此次更新之前,一些标准变量、标头值和正文字段(如 body.eventKey 字段)没有在 Bitbucket 服务器的 PipelineRun 资源中解析。在这个版本中,这个问题已被解决。
  • 在这个版本中,如果 SOURCE_IMAGE_URLDESTINATION_IMAGE_URL 参数留空,则 skopeo-copy 任务支持使用 url.txt 文件复制多个镜像。
  • 在此次更新之前,在空仓库中运行 tkn pac create repo 命令会导致生成 . period 符号作为模板中运行的管道名称。在这个版本中,这个问题已被解决,REPO_NAME.git 现在被用作管道运行名称。
  • 在这个版本中,管道运行失败处理已被修复,以便在 status.message 字段中准确报告验证失败,并持续触发 finally 任务,即使任务失败。
  • 在此次更新之前,当 pod 因内存不足错误而失败时,任务运行不会立即失败。相反,它在某些情况下没有响应,然后失败。在这个版本中,任务运行会立即失败。
  • 在此次更新之前,如果 CustomRun 资源引用返回数组的管道或任务资源,日志中会报告结果类型不匹配。在这个版本中,数组结果会被正确处理。
  • 在此次更新之前,当任务运行失败时,在某些情况下,任务中的一些步骤的状态没有在 TaskRun YAML 清单中正确记录。在这个版本中,状态会被正确记录。
  • 在此次更新之前,如果任务中的一个步骤失败,则后续步骤有时会在任务运行或管道运行的 YAML 清单中标记为跳过。在这个版本中,步骤被标记为 skipped。c
  • 在此次更新之前,如果管道运行包含验证失败的任务,后续的 finally 任务没有运行,即使它应该在上一个任务失败后运行。在这个版本中,finally 任务运行。
  • 在此次更新之前,当将 Pipelines as Code 与 GitLab 搭配使用时,如果 .tekton 目录包含 20 个文件,则一些管道运行无法启动。在这个版本中,管道会正确启动。
  • 在此次更新之前,当将 Pipelines as Code 与 BitBucket 搭配使用时,BitBucket 事件中的一个不正确的有效负载可能会导致 Pipelines as Code 控制器崩溃。在这个版本中,控制器不会崩溃,在处理有效负载前验证有效负载,并正确报告错误。
  • 在此次更新之前,当使用 Pipelines as Code 时,当删除完管道前运行的管道时,临时 Git 身份验证 secret 会保留在 OpenShift Container Platform 命名空间中。因此,可能会出现 secret 的配额,在这种情况下,新管道运行无法启动。在这个版本中,Pipelines as Code 可以正确地删除临时 secret。
  • 在此次更新之前,当使用带有 BitBucket 的 Pipelines 作为代码时,当为 on-target-branch 配置管道运行时,标签相关的事件与 on- target-branch: [refs/tags pcscd] 不匹配。这是因为与标签相关的 BitBucket 事件有效负载不包含 refs/tags 前缀。在这个版本中,Pipelines as Code 可以正确地与标签事件匹配。
  • 在此次更新之前,当任务被取消时,Tekton Chains 不会记录任务的规格。在这个版本中,Tekton Chains 会记录任务的规格。
  • 在此次更新之前,在 Tekton Chains 中,任务规格中的记录步骤(TaskRun.Status.steps)可能会不匹配,即使任务运行正确执行了任务中的所有步骤。在这个版本中,任务规格中的步骤以及任务运行中执行的步骤会被正确记录。
  • 在此次更新之前,当管道运行因为超时而终止时,日志输出有时会包含无效且管道运行的状态未正确报告的错误消息。在这个版本中,此类消息不会出现在日志中,状态会被正确报告。
  • 在此次更新之前,当指定一个工作区被挂载到任务的一个或多个步骤中时,OpenShift Pipelines 会为任务中的所有步骤挂载工作区。在这个版本中,工作区只会挂载到指定它的步骤中。
  • 在此次更新之前,当使用 Pipelines as Code 时,如果 OpenShift Container Platform 集群非常忙碌,一些管道运行无法执行,因为并发队列没有正常恢复。在这个版本中,Pipelines as Code 可以正确地管理并发队列并执行所有管道运行。
  • 在此次更新之前,如果您在 TektonConfig CR 中指定默认容器资源要求,然后将 LimitRange 设置应用到管道或任务,则有时不会应用 LimitRange 设置,因为默认要求会覆盖它。在这个版本中,LimitRange 设置会覆盖默认的容器资源要求。
  • 在此次更新之前,如果管道运行或任务运行因为验证错误而无法执行,OpenShift Pipelines 记录并显示管道运行或任务运行的通用 Failed 状态。在这个版本中,OpenShift Pipelines 记录了 Failed Validation 状态。
  • 在此次更新之前,当使用 tkn bundle 命令来读取大型 Tekton 捆绑包的内容时,命令可能会失败。在这个版本中,tkn 命令行工具可以正确地处理大型 Tekton 捆绑包。
  • 在此次更新之前,当使用 tkn 命令行工具查看已完成的管道运行时,因为您在管道中设置的条件被跳过的任务会显示为 Succeeded (Completed)。在这个版本中,它们不再显示为 completed。

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

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

1.3.4.1. 修复的问题

  • 在此次更新之前,如果您定义了包含常规参数和列表参数的 matrix 任务,tekton-pipelines-controller 组件会崩溃并记录分段错误消息。如果没有删除该任务,则组件将继续崩溃,且不会运行任何管道。在这个版本中,控制器不会在这样的情形中崩溃。
  • 在此次更新之前,在某些情况下,Tekton Chains 控制器会重复崩溃,使 Tekton Chains 组件不可用。在这个版本中,控制器不再崩溃。
  • 在此次更新之前,openshift-pipelines 命名空间中的 buildah 任务不允许 BUILD_EXTRA_ARGS 参数中的空格。在这个版本中,buildah 任务允许在 BUILD_EXTRA_ARGS 参数中传递空格。

    BUILD_EXTRA_ARGS 参数的示例,其值中带有空格

    # ...
       - name: BUILD_EXTRA_ARGS
         value: '--build-arg EXAMPLE="abc def"'
    # ...

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.