1.2. Red Hat OpenShift Pipelines 1.17 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.17 包括在 OpenShift Container Platform 4.15 及更新的版本中。
要使用 OpenShift Pipelines,必须至少使用以下 OpenShift Container Platform 版本:
- 对于 OpenShift Container Platform 版本 4.15: 4.15.42 或更高版本
- 对于 OpenShift Container Platform 版本 4.16: 4.16.26 或更高版本
- 对于 OpenShift Container Platform 版本 4.17: 4.17.7 或更高版本
1.2.1. 新功能 复制链接链接已复制到粘贴板!
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.17 中的新内容:
1.2.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。 -
在这个版本中,当您使用
TektonConfigCR 中的spec.pipeline.performancespec 来指定性能调优值,如threads-per-controller、kube-api-qps、kube-api-burst和 kube-api-burst,OpenShift Pipelines 会将这些值应用到解析器控制器和其他控制器。
1.2.1.2. Operator 复制链接链接已复制到粘贴板!
在这个版本中,您可以使用附加参数运行
skopeo-copy命令,如--all和--preserve-digests。您可以将这些参数作为空格分隔的字符串传递,如下例所示:示例命令
$ tkn task start skopeo-copy -p ARGS="--all --preserve-digests"- 在这个版本中,OpenShift Pipelines 应用应用到管道或任务的任何安全性上下文约束(SCC)的临时卷设置。
1.2.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.2.1.4. Tekton Results 复制链接链接已复制到粘贴板!
在这个版本中,您可以将 Tekton 结果配置为从管道的 YAML 清单中包含某些标签和注解,并在结果表的
summary 字段列中包含特定的标签和注解。默认情况下使用tekton.dev/pipeline标签的值。要进行此更改,请修改TektonResultCR,如下例所示:在
TektonResultCR 中配置概述标签和注解示例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.2.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 # ...在此次更新之前,如果您没有在
TektonConfigCR 中配置 Tekton 链,Operator 不会传递任何默认链配置。在这个版本中,如果您没有在TektonConfigCR 中配置 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-urlURL。现在,您可以使用storage.docdb.mongo-server-url-path参数指向容器中的有效文件路径。
1.2.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.2.3. 修复的问题 复制链接链接已复制到粘贴板!
- 在这个版本中,如果 push 事件有效负载不包含提交,Pipelines as Code 控制器不再处理 GitLab push 事件。相反,它会正确地显示错误消息警告用户没有附加提交。
- 在这个版本中,Pipelines as Code 控制器不再处理 GitLab 标签删除事件,这会导致控制器崩溃。相反,它可以正确地显示错误消息警告用户删除标签事件。
-
在此次更新之前,一些标准变量、标头值和正文字段(如
body.eventKey字段)没有在 Bitbucket 服务器的PipelineRun资源中解析。在这个版本中,这个问题已被解决。 -
在这个版本中,如果
SOURCE_IMAGE_URL和DESTINATION_IMAGE_URL参数留空,则skopeo-copy任务支持使用url.txt文件复制多个镜像。 -
在此次更新之前,在空仓库中运行
tkn pac create repo命令会导致生成.period 符号作为模板中运行的管道名称。在这个版本中,这个问题已被解决,REPO_NAME.git现在被用作管道运行名称。 -
在这个版本中,管道运行失败处理已被修复,以便在
status.message字段中准确报告验证失败,并持续触发finally任务,即使任务失败。 - 在此次更新之前,当 pod 因内存不足错误而失败时,任务运行不会立即失败。相反,它在某些情况下没有响应,然后失败。在这个版本中,任务运行会立即失败。
-
在此次更新之前,如果
CustomRun资源引用返回数组的管道或任务资源,日志中会报告结果类型不匹配。在这个版本中,数组结果会被正确处理。 -
在此次更新之前,当任务运行失败时,在某些情况下,任务中的一些步骤的状态没有在
TaskRunYAML 清单中正确记录。在这个版本中,状态会被正确记录。 - 在此次更新之前,如果任务中的一个步骤失败,则后续步骤有时会在任务运行或管道运行的 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。
-
在此次更新之前,当将 Pipelines as Code 与 Bitbucket Cloud 搭配使用时,当为
on-target-branch配置管道运行时,标签相关的事件与 on-target-branch: [refs/tags输入]不匹配。这是因为 Bitbucket 与标签相关的 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 可以正确地管理并发队列并执行所有管道运行。
-
在此次更新之前,如果您在
TektonConfigCR 中指定默认容器资源要求,然后将LimitRange设置应用到管道或任务,则有时不会应用LimitRange设置,因为默认要求会覆盖它。在这个版本中,LimitRange设置会覆盖默认的容器资源要求。 -
在此次更新之前,如果管道运行或任务运行因为验证错误而无法执行,OpenShift Pipelines 记录并显示管道运行或任务运行的通用
Failed状态。在这个版本中,OpenShift Pipelines 记录了Failed Validation状态。 -
在此次更新之前,当使用
tkn bundle命令来读取大型 Tekton 捆绑包的内容时,命令可能会失败。在这个版本中,tkn命令行工具可以正确地处理大型 Tekton 捆绑包。 -
在此次更新之前,当使用
tkn命令行工具查看已完成的管道运行时,因为您在管道中设置的条件被跳过的任务会显示为Succeeded (Completed)。在这个版本中,它们不再显示为 completed。
1.2.4. Red Hat OpenShift Pipelines 正式发布 1.17.1 发行注记 复制链接链接已复制到粘贴板!
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.17.1 包括在 OpenShift Container Platform 4.15 及更新的版本中。
1.2.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"' # ...
1.2.5. Red Hat OpenShift Pipelines 正式发布 1.17.2 发行注记 复制链接链接已复制到粘贴板!
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.17.2 包括在 OpenShift Container Platform 4.12 中,OpenShift Container Platform 4.14 到 4.18。
1.2.5.1. 修复的问题 复制链接链接已复制到粘贴板!
-
在此次更新之前,sk
op-copy任务需要您显式设置source_image_url和destination_image_url参数。此要求阻止了使用带有url.txt文件的images_url工作区进行批处理镜像复制。在这个版本中,两个参数都默认为空值,并且不包括在严格的验证中,允许任务根据需要回退到url.txt方法。 -
在此次更新之前,当您以 fan-out 和 fan-in 模式使用 listed 任务时,
PipelineRunexecution failed with the error:invalid result reference in pipeline task 'printer': unable to validate result refer pipeline task 'platforms': task spec not found。当下游任务试图使用以下语法引用列表任务中的聚合结果时会出现此问题:$(tasks.<taskName>.results.<resultName>[*])。在这个版本中,OpenShift Pipelines 可以正确地解析并验证列出的任务的结果引用。这启用了动态 fan-out 和 fan-in 任务编配,使用数组和列表表达式,而无需触发验证错误。 - 在此次更新之前,没有从 OpenShift Pipelines 1.16.x 升级到更新的版本。在这个版本中,这个问题已被解决。