发行注记
OpenShift Pipelines 发行版本的主要新功能及变化信息
摘要
第 1 章 Red Hat OpenShift Pipelines 发行注记
如需有关 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 控制台的 Developer 视角集成用户体验。
如需了解 Red Hat OpenShift Pipelines 的概述,请参阅了解 OpenShift Pipelines。
1.1. 兼容性和支持列表
这个版本中的一些功能当前还只是一个技术预览。它们并不适用于在生产环境中使用。
在下表中,被标记为以下状态的功能:
TP | 技术预览 |
GA | 公开发行 |
Red Hat OpenShift Pipelines 版本 | 组件版本 | OpenShift 版本 | 支持状态 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
Operator | Pipelines | 触发器 | CLI | 链 | Hub | Pipelines 作为代码(Pipelines as Code) | 结果 | Manual Approval Gate | ||
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, 4.18 | 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, 4.18 | 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) | 不适用 | 4.12, 4.13, 4.14, 4.15, 4.16 | GA |
如果您有疑问或希望提供反馈信息,请向产品团队发送邮件 pipelines-interest@redhat.com。
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
。 -
在这个版本中,当您使用
TektonConfig
CR 中的spec.pipeline.performance
spec 来指定性能调优值,如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
标签的值。要进行此更改,请修改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.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 # ...
在此次更新之前,如果您没有在
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.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
资源引用返回数组的管道或任务资源,日志中会报告结果类型不匹配。在这个版本中,数组结果会被正确处理。 -
在此次更新之前,当任务运行失败时,在某些情况下,任务中的一些步骤的状态没有在
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。
-
在此次更新之前,当将 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 可以正确地管理并发队列并执行所有管道运行。
-
在此次更新之前,如果您在
TektonConfig
CR 中指定默认容器资源要求,然后将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"' # ...