1.5. Red Hat OpenShift Pipelines 正式发布 1.13 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.13 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.5.1. 新功能
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.13 中的新内容:
在升级到 Red Hat OpenShift Pipelines Operator 1.13 之前,请确保在集群中至少安装了 OpenShift Container Platform 4.12.19 或 4.13.1 版本。
1.5.1.1. Pipelines
- 在此次更新之前,Source-to-Image (S2I)集群任务使用基本的 S2I 容器镜像,它只是一个技术预览。在这个版本中,S2I 集群任务使用发布并完全支持的基本 S2I 容器镜像。
-
在这个版本中,您可以启用一个设置,以便在取消任务运行时,OpenShift Pipelines 会停止任务运行的 pod,但不会删除 pod。要启用此设置,在
TektonConfig
自定义资源(CR)中将pipeline.options.configMaps.feature-flags.data.keep-pod-on-cancel
spec 设置为true
,将pipeline.enable-api-fields
spec 设置为alpha
。 -
在此次更新之前,您必须启用 alpha 功能,才能在任务级别上设置计算资源限值。在这个版本中,您可以使用
TaskRun
CR 的computeResources
spec 来为任务设置资源限值。 -
在这个版本中,在指定任务和使用
displayName
参数时,您可以使用在显示名称中包含参数、结果或上下文变量的参数,例如$(params.application)
,$(tasks.scan.results.report)
,$(context.pipeline.name)
。 -
在这个版本中,当使用 hub 解析器指定远程管道或任务时,您可以在
version
参数中使用 inequation 约束,如 >=0.2.0,< 1.0.0
。 -
在这个版本中,在指定任务时,您可以在
when
表达式中使用通用表达式语言(CEL)表达式。要使用这个功能,您必须在TektonConfig
CR 中将pipeline.options.configMaps.feature-flags.data.enable-cel-in-whenexpression
spec 设置为true
。 在这个版本中,当在
PipelineRun
CR spec 中指定管道时,您可以在后续的内联任务中引用内联任务生成的结果。用法示例
apiVersion: tekton.dev/v1 kind: Task metadata: name: uid-task spec: results: - name: uid steps: - name: uid image: alpine command: ["/bin/sh", "-c"] args: - echo "1001" | tee $(results.uid.path) --- apiVersion: tekton.dev/v1 kind: PipelineRun metadata: name: uid-pipeline-run spec: pipelineSpec: tasks: - name: add-uid taskRef: name: uid-task - name: show-uid taskSpec: steps: - name: show-uid image: alpine command: ["/bin/sh", "-c"] args: - echo $(tasks.add-uid.results.uid)
-
在这个版本中,在配置集群解析器时,您可以将
blocked-namespaces
参数的值设置为*
。使用这个设置时,只允许在allowed-namespaces
参数中列出的命名空间,所有其他命名空间都会被阻断。
1.5.1.2. Operator
在这个版本中,
disable-affinity-assistant
功能标记已弃用,并可能在以后的版本中删除。相反,在TektonConfig
CR 中,您可以将pipeline.options.configMaps.feature-flags.data.coschedule
spec 设置为以下值之一:-
Workspaces
: 如果工作区分配持久性卷声明,则 OpenShift Pipelines 会将所有任务运行调度到同一节点。这是默认设置。 -
PipelineRuns
: OpenShift Pipelines 将管道运行中的所有任务调度到同一节点。 -
isolate-pipelinerun
: OpenShift Pipelines 将管道运行中的所有任务调度到同一节点,并允许一个管道运行同时在节点上运行。如果所有节点都用于其他管道运行,此设置可能会延迟管道运行。 -
禁用
: OpenShift Pipelines 不会将任何有关查找任务运行的特定策略应用到节点。
-
1.5.1.3. 触发器
- 在此次更新之前,核心拦截器在启动时总是创建 TLS secret。在这个版本中,如果集群中不存在 TLS secret,或者现有 secret 中的证书已过期,核心拦截器会创建 TLS secret。
1.5.1.4. CLI
-
在这个版本中,当使用
tkn bundle push
命令时,会创建捆绑包,并将创建时间设置为1970-01-01T00:00:00Z
(Unix epoch time)。此更改可确保从同一源创建的捆绑包镜像始终相同。您可以使用-ctime
参数以 RFC3339 格式设置创建时间。您还可以使用SOURCE_DATE_EPOCH
环境变量来设置创建时间。
1.5.1.5. Pipelines 作为代码(Pipelines as Code)
在这个版本中,在 Pipelines as Code 中,当使用 CEL 表达式进行高级事件匹配时(pipelinesascode.tekton.dev/on-cel-expression),您可以使用
标头和正文
字段来访问 Git 存储库供应商正文传递的完整有效负载。您可以使用此功能根据 Git 存储库发送的任何信息过滤事件。
重要对于事件匹配,使用 CEL 表达式中的有效负载的标头和正文只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
-
在这个版本中,当一个 Pipelines as Code pipeline run 被 push 事件触发时,您可以在对应的提交注释中使用
/test
, /test branch:<branchname>
,/retest
, /retest branch:<branchname
>,
> 命令,来重新运行或取消管道运行。/cancel
, 和 /cancel branch:<branchname 在这个版本中,在使用 Pipelines as Code 时,您可以在远程管道中使用远程任务。因此,您可以在多个存储库间重复使用完整的远程管道。您可以通过添加具有相同名称的任务来覆盖远程管道中的任务。
重要在远程管道上使用远程任务并覆盖任务只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
- 在这个版本中,在使用 Pipelines as Code 时,您可以查看在 Git 仓库供应商中运行的 CI 管道的信息。此信息包括命名空间和关联的管道运行。
1.5.2. 可能会造成问题的更改
-
在此次更新之前,在 Pipelines as Code 中,在使用策略组时,没有明确允许运行 CI (通过机构所有权或其他)运行 CI 的用户有时可以通过创建拉取请求或输入命令(如
ok_to_test
)来执行管道运行。在这个版本中,如果配置了策略组,只有添加到所需策略组的用户才能执行管道运行,而作为所有者机构一部分的用户,但没有在策略组中配置的用户无法执行管道运行。
1.5.3. 已知问题
-
要在任务运行时启用保留 pod,并在
TektonConfig
CR 中将pipeline.options.configMaps.feature-flags.data.keep-pod-on-cancel
spec 设置为true
,您还需要在TektonConfig
CR 中将pipeline.enable-api-fields
spec 设置为alpha
。 - 如果您在任务运行时启用保留 pod,当因为默认超时而取消任务运行时,或者您在管道规格中设置了计时,OpenShift Pipelines 会删除 pod。
1.5.4. 修复的问题
- 在此次更新之前,在清理过程中,可以从集群中删除管道运行用于 Git 身份验证的 secret。在这个版本中,只有在所有使用它的管道运行都被删除时,才会删除 secret。
- 在此次更新之前,当多个 secret 共享相同的前缀并使用 git 接口进行日志记录时,有时会使用一个较短的 secret 启动的过程,并且日志中可能会显示较长的 secret 的一部分。在这个版本中,当将 secret 包括在日志中时,进程现在从最长的 secret 开始,确保日志中没有显示任何 secret 的一部分。
-
在此次更新之前,如果您为管道指定了
结果
spec,管道运行可能会错误地失败,并显示不匹配的类型错误。在这个版本中,如果您为管道指定结果
spec,管道提供的结果会被正确处理。 - 在此次更新之前,当 Tekton 链被配置为 KMS 作为 Hashicorp Vault 时,如果连接到 Vault 时存在底层错误,pod 会启动崩溃。这个问题现已解决,现在在 Tekton Chains 控制器日志中记录错误。
-
在此次更新之前,当使用 Tekton Chains 时,如果您配置了
storage.oci.repository
参数,则在 Tekton Chains 控制器日志中会报告错误。在这个版本中,storage.oci.repository
参数会被正确处理。 - 在此次更新之前,当 Tekton 链配置有 Hashicorp Vault KMS 且与 Vault 的连接存在问题时,Tekton Chains 控制器 pod 可能会导致崩溃。在这个版本中,错误会被处理,并记录在 Tekton Chains 控制器日志中。
1.5.5. Red Hat OpenShift Pipelines 正式发布 1.13.1 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.13.1 包括在 OpenShift Container Platform 4.12 及更新的版本中。
1.5.5.1. 修复的问题
-
在此次更新之前,任务运行有时会失败,并显示
无法停止 sidecar
错误消息。在这个版本中,导致此故障的控制器之间的竞争条件已被修复。 -
在此次更新之前,要在任务运行时启用保留 pod,并在
TektonConfig
CR 中将pipeline.options.configMaps.feature-flags.data.keep-pod-on-cancel
spec 设置为true
,您需要在TektonConfig
CR 中将pipeline.enable-api-fields
spec 设置为alpha
。在这个版本中,在TektonConfig
CR 中将pipeline.options.configMaps.feature-flags.data.keep-pod-on-cancel
spec 设置为true
时,会在任务运行时保留 pod,且不需要额外的设置。 -
在此次更新之前,如果您为任务定义了一个 sidecar,OpenShift Pipelines 在创建
Task
和TaskRun
自定义资源(CR)时不会在定义中验证容器镜像。在运行时,带有无效容器镜像的 sidecar 会导致任务运行失败。在这个版本中,OpenShift Pipelines 在创建Task
和TaskRun
CR 时,在 sidecar 定义中验证容器镜像。 - 在此次更新之前,OpenShift Pipelines 控制器有时会在任务评估参数时崩溃。在这个版本中,控制器不再崩溃。
- 在此次更新之前,如果管道运行中的最终任务失败或被跳过,OpenShift Pipelines 有时会报告管道运行的验证错误。在这个版本中,OpenShift Pipelines 可以正确地报告管道运行的状态。