1.2. Red Hat OpenShift Pipelines 1.18 发行注记
在这个版本中,Red Hat OpenShift Pipelines 正式发行(GA) 1.18 包括在 OpenShift Container Platform 4.15 及更新的版本中。
1.2.1. 新功能 复制链接链接已复制到粘贴板!
除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift Pipelines 1.18 中的新内容:
1.2.1.1. Pipelines 复制链接链接已复制到粘贴板!
1.2.1.2. Operator 复制链接链接已复制到粘贴板!
在这个版本中,OpenShift Pipelines 支持社区任务。
在
openshift-pipelines命名空间中默认安装以下社区任务:-
argocd-task-sync-and-wait -
git-cli -
helm-upgrade-from-repo -
helm-upgrade-from-source -
jib-maven -
kubeconfig-creator -
pull-request -
trigger-jenkins-job
-
在这个版本中,OpenShift Pipelines 支持通过
TektonConfigCR 部署新容器。使用
TektonConfigCR 部署新的kube-rbac-proxy容器的示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个版本中,OpenShift Pipelines 控制器的高可用性选项会增强
StatefulSet或dinals,作为现有领导选举机制的替代选择。这可让 Operator 使用带有领导选举机制的快速恢复,或与StatefulSetordinals 一起一致的工作负载分布。领导选举(默认选项)提供了故障切换功能,但可能会导致热响应。相反,新的
StatefulSet或dinals 方法可确保密钥在副本中平均分布,以获得更均衡的工作负载分布。您可以通过将
TektonConfig自定义资源中的statefulset-ordinals参数设置为true来切换到StatefulSetordinals 方法:启用
StatefulSetordinals 功能示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要对高可用性使用
StatefulSet或dinals 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
1.2.1.3. 触发器 复制链接链接已复制到粘贴板!
在这个版本中,OpenShift Pipelines 触发器的
EventListener对象包括ImagePullSecrets字段,以指定监听器用于从私有 registry 中拉取镜像的 secret。使用
ImagePullSecrets字段的示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.1.4. CLI 复制链接链接已复制到粘贴板!
在这个版本中,
opc 命令行工具会随以下组件一起提供:- Pipelines as Code 版本 0.33.0
- CLI 版本 0.40.0
- 结果版本 0.14.0
- Manual Approval Gate 版本 0.5.0
1.2.1.5. Pipelines 作为代码(Pipelines as Code) 复制链接链接已复制到粘贴板!
在这个版本中,
PipelineRun资源可以根据使用 on-path-change 和注解更改的文件来触发,这简化了不需要编写复杂的 CEL 表达式的过程。on-path-change-ignore使用
on-path-change和on-path-change-ignore注解的示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个版本中,可以使用
on-comment注解在 GitHub 上推送提交来触发PipelineRun资源。此功能可让您在触发PipelineRun时更好地控制它,使您能够根据特定的注释匹配。您必须配置管道运行,以使用
on-comment注解启用触发器:通过推送的提交启用管道运行的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 示例配置
/hello-world命令。当您在推送的提交中使用此命令时,例如在main分支上,将触发on-comment-pr管道运行。
在这个版本中,您可以使用
tkn pac info globbing [-s | -d] "<pattern>" 命令测试带有示例输入数据或运行命令的工作目录中的模式。命令测试模式是否在PipelineRun定义中正常工作。例如,您可以测试以下
on-target-branch注解,以确保它与 git 事件有效负载中的main分支匹配:on-target-branch注解示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
tkn pac info globbing -s "refs/heads/main" "refs/heads/*"
$ tkn pac info globbing -s "refs/heads/main" "refs/heads/*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个版本中,Pipelines as Code 支持使用 HTML 实体
在注解中逗号。现在,您可以将用逗号分开的值与值中直接使用的逗号一起使用。例如,要匹配名为
main和branchWith,comma的两个分支,请按如下所示指定注解:带有逗号的注解示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个版本中,在拉取请求关闭或合并后,所有带有
cancel-in-progress: true注解的关联PipelineRun资源都会被自动取消。要启用此功能,请在PipelineRun定义中指定cancel-in-progress注解:cancel-in-progress注解示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Pipelines 中的 cancellation-in-progress 作为代码只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
在这个版本中,当 Pipelines as Code 触发名称的新
PipelineRun资源时,带有cancel-in-progress: true注解的活跃的PipelineRun资源会自动取消。现在,在引发拉取请求并触发PipelineRun后,对同一拉取请求的后续提交会触发新的PipelineRun,旧的过时的PipelineRun会取消保存资源。要启用这个功能,在
PipelineRun资源中将pipelinesascode.tekton.dev/cancel-in-progress注解设置为true:启用取消旧的管道运行的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在此次更新之前,与 Bitbucket Data Center 的 CEL 表达式中使用的
.pathChanged ()函数无法正常工作。在这个版本中,这个功能会被实现。 在这个版本中,您可以使用标签与管道运行匹配来拉取请求。要将管道运行与标签匹配,请在
PipelineRun资源中设置pipelinesascode.tekton.dev/on-label注解。在拉取请求或推送事件中添加标签会立即触发管道运行。如果推送请求或拉取请求仍然具有标签并使用提交更新,则管道运行会再次触发。GitHub、GitLab 和 Gitea 存储库供应商支持此功能。Bitbucket 云和 Bitbucket 数据中心不支持它。
1.2.1.6. Tekton Results 复制链接链接已复制到粘贴板!
- 在这个版本中,Tekton Results 是一个正式发行(GA)功能。
-
在这个版本中,Operator 默认通过
TektonConfigCR 安装并添加 Tekton 结果的配置。 - 在这个版本中,Tekton Results API 服务器使用 OpenShift Pipelines 控制台插件中的代理环境变量将授权标头发送到 Tekton Results API。
- 在这个版本中,从 LokiStack 获取的 Tekton Results 日志记录信息包括每个日志条目的容器名称。
1.2.1.7. Tekton Cache 复制链接链接已复制到粘贴板!
在这个版本中,OpenShift Pipelines 包含新的 tekton-caches 工具功能。
Tekton Cache 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
tekton-caches 工具包括以下功能:
使用
cache-upload和cache-fetch步骤操作,保留构建过程保留其依赖项的缓存目录,将其存储在 S3 存储桶、Google Cloud Services (GCS)存储桶或 OCI 存储库。cache-fetch和cache-upload步骤操作默认安装在openshift-pipelines命名空间中。
1.2.2. 可能会造成问题的更改 复制链接链接已复制到粘贴板!
- 在这个版本中,Tekton Results 不再支持由 Tekton Results watcher 将日志转发到持久性卷(PV)、S3 存储桶或 GCS 存储桶中的存储。
-
在此次更新之前,旧版本的任务和步骤操作安装在
openshift-pipelines命名空间中。在这个版本中,这些旧版本会被删除,只安装最新的两个任务和步骤操作。例如,在 OpenShift Pipelines 1.18 中,已安装的版本的任务和步骤操作为*-1-17-0和*-1-18-0。
1.2.3. 已知问题 复制链接链接已复制到粘贴板!
-
如果您在
TektonConfigCR 的result:部分添加或更改任何参数,则更改不会自动应用。要应用这些更改,请在openshift-pipelines命名空间中重启 Results API 服务器的部署或 pod。
1.2.4. 修复的问题 复制链接链接已复制到粘贴板!
-
在此次更新之前,如果您定义了包含常规参数和
列表参数的任务,tekton-pipelines-controller组件会崩溃并记录分段错误消息。如果没有删除该任务,则组件将继续崩溃,且不会运行任何管道。在这个版本中,控制器不会在这样的情形中崩溃。 -
在此次更新之前,当用户尝试使用 OpenShift Container Platform Web 控制台重新运行基于解析器的
PipelineRun资源时,尝试会出现Invalid PipelineRun 配置出错,无法启动 Pipeline。在这个版本中,重新运行不再会导致错误,并可以正常工作。 -
在此次更新之前,当
PipelineRun资源失败时,OpenShift Container Platform Web 控制台中的PipelineRun资源的 Output 选项卡会显示一个错误消息,而不是可用的结果。在这个版本中,Web 控制台可以正确地显示结果。 -
在此次更新之前,当
CONTEXT和DOCKERFILE参数的值指向不同的目录时,openshift-pipelines命名空间中的buildah任务会失败。在这个版本中,这个问题已被解决。 在此次更新之前,在步骤操作中以默认值的形式引用参数会导致
TaskRun资源引用该步骤操作失败。在这个版本中,这个问题已被解决。使用参数作为值的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在此次更新之前,当创建一个
PipelineRun资源来引用一个远程 Git 存储库,其中包含该仓库之外的符号链接,PipelineRun将失败。在这个版本中,即使符号链接无效,PipelineRun不再会失败。 - 在此次更新之前,内存和临时存储的资源请求可能会超过定义的限制。在这个版本中,这个问题已被解决。
- 在此次更新之前,在使用注入的 sidecar 的集群中运行的管道有时会不会影响 OpenShift Pipelines 控制器。这是因为有故障的 Kubernetes 版本检查造成的。在这个版本中,这个问题已被解决。
- 在此次更新之前,当结果列表包含带有无效结果的重复密钥时,重复会被删除并替换为每个键的最后结果,这可能会更改结果列表的顺序。在这个版本中,当删除重复的键时,结果的顺序会被保留,确保每个密钥的最后有效结果都保留为最终结果。
-
在此次更新之前,当使用 Pipelines as Code 时,在相对路径下托管的 GitLab 实例(例如
https://example.servehttp.com/gitlab)无法正确更新合并请求的状态。虽然初始事件更新可以正常工作,但后续更新(例如,将管道运行标记为Finished)没有出现在 GitLab 中,使状态保持在Running状态。在这个版本中,状态更新可以正常工作。 -
在此次更新之前,当使用 Pipelines as Code 时,如果您在带有空
[]值的PipelineRun资源中传递了onEvent或onTargetBranch注解时,它会阻止与任何PipelineRun资源匹配。在这个版本中,使用带有空值的注解会返回错误。 -
在此次更新之前,在使用 Pipelines 作为代码时,您可以创建
Repository自定义资源(CR)而无需 URL 或带有无效的 URL。在这个版本中,只有在提供有效的 URL 时,才能创建RepositoryCR。您仍然可以在openshift-pipelines命名空间中创建RepositoryCR,而无需 URL,为所有存储库提供默认设置。 -
在此次更新之前,当使用 Pipelines as Code 时,如果在 GitLab 中的 fork 仓库引发拉取请求,
PipelineRun资源被成功创建,但不会在 GitLab UI 中报告其最终状态。在这个版本中,这个问题已被解决。 - 在此次更新之前,当使用 Pipelines as Code 时,GitLab 会显示检查名称作为管道的单一条目运行。这会导致多个管道运行同时运行,其中一个失败。如果其他管道运行成功,它会覆盖失败的状态,管道将显示为成功。在这个版本中,每个检查名称会为每个管道运行单独显示。因此,如果任何管道运行失败,管道的状态会显示正确失败。
-
在此次更新之前,当使用 Pipelines as Code 时,如果您在
PipelineRun资源定义中使用{{ trigger_comment }}变量,然后在 GitHub 中提交多行注释,Pipelines as Code 可能会重新发布管道运行的 YAML 验证错误。在这个版本中,这个问题已被解决。 -
在此次更新之前,当使用 Pipelines as Code 时,一个
/test branch:<branch> 命令,其中分支名称包含可能因为其他命令无法正常工作的部分。例如,在命令/test 分支:a/testbranch中,分支名称包含/test,此命令将失败。在这个版本中,注释中的第一个/test子字符串被视为阻止任何故障的命令。 -
在此次更新之前,当使用 Pipelines as Code 时,如果在 GitHub 中推送提交时,如果一个未授权的用户发送
/test、/retest或其他 GitOps 命令,则会触发PipelineRun资源,即使用户没有授权触发它们。在这个版本中,添加了一个额外的用户授权检查,防止在没有正确验证的情况下触发PipelineRun资源。 -
在此次更新之前,当使用 Pipelines as Code 时,如果未授权用户引发拉取请求,并且存储库管理员发送
/ok-to-test命令,则会创建一个待处理的检查,即使拉取请求事件没有匹配的PipelineRun资源。在这个版本中,如果没有匹配的PipelineRun资源,则不会创建待处理的检查。相反,会创建一个中立检查来描述没有匹配的PipelineRun。 在此次更新之前,当将 Pipelines as Code 与 Bitbucket Data Center 搭配使用时,在 push 事件中,用户无法引用
PipelineRun资源中事件有效负载的所有字段,如body.changes对象。在这个版本中解决了这个问题。使用 {{ body.changes }} 动态变量的示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在此次更新之前,当使用 Pipelines as Code 时,如果您使用
PipelineRun资源中的generateName字段来把资源与传入的Webhook 匹配,则匹配无法正常工作。在这个版本中,这个问题已被解决。 -
在此次更新之前,在使用 Pipelines 作为代码时,
on-cel-expression注解不适用于 Bitbucket 数据中心中的推送事件。在这个版本中,这个问题已被解决。