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 支持通过
TektonConfig
CR 部署新容器。使用
TektonConfig
CR 部署新的kube-rbac-proxy
容器的示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个版本中,OpenShift Pipelines 控制器的高可用性选项会增强
StatefulSet
或dinals,作为现有领导选举机制的替代选择。这可让 Operator 使用带有领导选举机制的快速恢复,或与StatefulSet
ordinals 一起一致的工作负载分布。领导选举(默认选项)提供了故障切换功能,但可能会导致热响应。相反,新的
StatefulSet
或dinals 方法可确保密钥在副本中平均分布,以获得更均衡的工作负载分布。您可以通过将
TektonConfig
自定义资源中的statefulset-ordinals
参数设置为true
来切换到StatefulSet
ordinals 方法:启用
StatefulSet
ordinals 功能示例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 复制链接链接已复制到粘贴板!
在这个版本中,
op
c 命令行工具会随以下组件一起提供:- 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 和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 默认通过
TektonConfig
CR 安装并添加 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. 已知问题 复制链接链接已复制到粘贴板!
-
如果您在
TektonConfig
CR 的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 时,才能创建Repository
CR。您仍然可以在openshift-pipelines
命名空间中创建Repository
CR,而无需 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:&
lt;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 数据中心中的推送事件。在这个版本中,这个问题已被解决。