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-controller
、kube-api-qps
、kube-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_URL
和DESTINATION_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"' # ...