发版日志
版本 v4.7.x 的维护周期为 2026 年 1 月 15 日至 2026 年 5 月 15 日。
目录
兼容性和支持矩阵
下表展示了 Alauda DevOps Pipelines operator 与 ACP 版本之间的兼容性和支持矩阵。
v4.7.0
新增及优化功能
Pipeline
-
Pipeline 集成
Sonarqube Connector:在创建或执行 Pipeline 时,支持通过 sonarqube 连接器选择SONAR_HOST_URL和sonar-credentials。- 详情请参见 Pipeline Integration with Connector。
- 此功能依赖于
Alauda DevOps Connectorsoperator(版本 >= v1.7.0)。
-
本次更新中,
TaskRun因内存不足(OOMKilled)失败时,失败信息中将包含明确的失败原因。 -
本次更新中,
managed-by注解不再从Pipeline控制器传播到 Pod,避免标签误归属。 -
本次更新中,删除 PVC 资源后,错误处理得到改进,避免资源清理时异常。
-
本次更新中,支持通过环境变量
THREADS_PER_CONTROLLER覆盖threads-per-controller参数值。 -
本次更新中,
TaskRunSpecs中的podTemplate支持参数引用,支持使用 Matrix 进行多架构构建。 -
本次更新中,
PipelineRun支持覆盖单个 Task 的超时设置(通过spec.taskRunSpecs[].timeout),实现更细粒度的超时控制。 -
本次更新中,
TaskRun和PipelineRun新增managedBy字段,允许将生命周期控制委托给外部控制器或系统。 -
本次更新中,引入了可配置的共享缓存机制,适用于 bundle、git 和 cluster 解析器,减少重复资源拉取,提升 Pipeline 解析性能。
-
Git 解析器缓存配置示例:
-
-
本次更新中,When 表达式中的
input字段支持解析 Pipeline 中的数组类型参数值。 -
本次更新中,支持 Pipelines 嵌套 Pipelines:Pipeline 现在可以通过 Task 中的
pipelineSpec字段执行嵌套 Pipeline。
Trigger
-
本次更新中,系统自动将 HTTP 请求的
Content-Length头部值填充到 Triggers 的TriggerBinding可访问上下文中。 -
本次更新中,
tkn新增了专门用于 Triggers 的引导命令,简化了使用tkn命令配置 Triggers 的复杂度。
Chains
- 本次更新中,支持禁用镜像签名但保留来源/认证签名。此前 Chains 启用签名功能时,镜像签名、来源生成和认证签名通常是“捆绑”在一起的。详情请参见 Chains Configuration。
Results
-
本次更新中,可通过在 TektonConfig 中设置
disable_storing_incomplete_runs标志,控制 Result Watcher 对未完成运行的存储行为,降低系统负载。 -
本次更新中,支持基于命名空间、标签、注解和状态配置
PipelineRun和TaskRun结果的细粒度保留策略,实现存储成本与合规调试需求的平衡。-
多条综合保留策略的
ConfigMap示例:说明:
production或prod-east命名空间中带有标签criticality: high且状态为失败的 Result 将保留 180 天。- 任何带有注解
debug/retain: "true"的 Result 将保留 14 天。 - 其他
production或prod-east命名空间中的 Result 将保留 60 天。 ci命名空间中的 Result 将保留 7 天。- 不符合上述任何策略的 Result 将保留默认的
defaultRetention期限 30 天。
-
Pipelines as Code
- Pipelines as Code 支持 GitHub API 调用的详细日志记录,提供 API 交互、时长和限流信息。通过将控制器日志级别设置为 'debug',可更高效地排查复杂问题。此增强重构了代码以对 GitHub 调用进行监控,影响所有类型的 GitHub API 调用。详情请参见 Debugging API interactions。
- 支持在远程
Pipeline定义中使用相对路径引用任务。Pipelines as Code 解析器会基于远程PipelineSpec定义的位置自动构建任务的完整 URL。详情请参见 Overriding tasks from a remote pipeline on a PipelineRun。
Pruner
- 本次更新中,集成了
Tekton Pruner。有关Pruner的更多配置详情,请参见 Tekton Pruner。
重大变更
Chainsv0.26.0 升级至Cosignv2.6.0,后者不再支持用于无密钥签名的HS256JWT 令牌;使用私有 OIDC 提供商且采用HS256的用户必须在升级前切换至RS256。详情请参见 Chains。
修复的问题
产品问题
- 在启用严格 SELinux 限制的 MicroOS 环境中,依赖 Java 工具(如 Maven 和 SonarQube)的 Tekton 任务无法启动,报错 "Error occurred during initialization of VM - Failed to mark memory page as executable"。该问题由 OpenJDK 的 JVM 解释器与 MicroOS 安全限制不兼容导致。此问题影响 MicroOS 环境中所有基于 Java 的 Tekton 任务,导致关键 CI/CD 工作流无法执行。
临时规避办法:
应用临时 SELinux 策略模块,允许容器域(spc_t)使用 execmem 和 execstack 权限:
# 1. 安装所需工具(安装后需重启)
sudo transactional-update pkg install checkpolicy selinux-policy-devel
sudo reboot
# 2. 创建并加载策略模块
cat >/tmp/spc_execmem.te <<'EOF'
module spc_execmem 1.0;
require {
type spc_t;
class process { execmem execstack };
}
allow spc_t self:process { execmem execstack };
EOF
# 3. 编译并加载模块
checkmodule -M -m -o /tmp/spc_execmem.mod /tmp/spc_execmem.te
semodule_package -o /tmp/spc_execmem.pp -m /tmp/spc_execmem.mod
sudo semodule -i /tmp/spc_execmem.pp
移除临时修改:
如果需要恢复默认策略,可以卸载已加载的策略模块:
# 1. 确认模块名
semodule -l | grep spc_execmem
# 2. 卸载模块
sudo semodule -r spc_execmem
注意: 这是临时规避方案,并非最终修复。
Community 问题
本版本解决了来自上游 Tekton Community 的 Pipeline 和 Trigger 修复问题:
Pipeline
- 之前,当
finally任务失败但整体运行成功时,PipelineRun状态不正确。本版本修正了finally任务失败场景下的PipelineRun状态计算。 - 之前,
TaskRun未正确设置 Pod 的亲和性/反亲和性配置,导致调度行为异常。本版本修正了TaskRun的 Pod 亲和性/反亲和性设置。 - 之前,git 类型的
PipelineResource在revision字段为空时错误地校验失败。本版本修正了 git 类型PipelineResource空revision的校验逻辑。 - 之前,
PipelineRun取消操作未传递到finally任务,导致它们在主 Pipeline 取消后仍然运行。本版本确保取消信号正确传递给finally任务。 - 之前,
TaskRun资源在运行中被删除时,关联的 Pod 未被删除,导致孤儿 Pod。本版本确保TaskRun控制器在父资源删除时清理 Pod。 - 之前,重试的
PipelineRun启动时间计算错误,导致持续时间指标误导。本版本修正了重试PipelineRun的启动时间计算。 - 之前,
PipelineRun未遵守配置的finally任务超时,允许其无限运行。本版本使finally任务遵守PipelineRun超时配置。 - 之前,
TaskRun指标缺少正确的命名空间标签,难以按命名空间过滤指标。本版本正确包含了命名空间标签。 - 之前,校验未检测 Pipeline
finally部分的重复任务名,导致运行时错误。本版本更新了校验逻辑,检测并拒绝重复任务名。 - 之前,当主任务失败且跳过
finally任务时,PipelineRun状态卡在 Running。本版本正确将此类场景的状态更新为 Failed。 - 之前,
TaskRunPod 未继承关联服务账户的注解,导致配置缺失。本版本确保服务账户注解正确传递给TaskRunPod。 - 之前,Tekton CLI 显示的
PipelineRun持续时间计算错误,显示不准确。本版本修正了 CLI 中的持续时间计算。 - 之前,取消
PipelineRun时未清理已完成的finally任务,导致资源泄漏。本版本确保取消后清理已完成的finally任务。 - 之前,使用空
subPath的工作区时,TaskRun启动失败并报错。本版本支持带空subPath的工作区正常启动TaskRun。 - 之前,重试的
PipelineRun指标未正确记录,导致监控数据不完整。本版本准确捕获重试相关指标。 - 之前,
PipelineRun状态在完全取消后仍显示为“Cancelling”,造成状态混淆。本版本正确将状态更新为“Canceled”。 - 之前,非标准日志路径的
TaskRunPod 日志无法获取,阻碍任务输出访问。本版本调整了日志获取逻辑,支持非标准日志路径。 - 之前,校验拒绝了默认值为空的
PipelineParams,尽管空默认值在许多场景下有效。本版本修正了对空默认值的校验。
Trigger
- 之前,标准
GitHubwebhook 默认发送两个头部不受影响,但自定义 webhook 实现必须将 HMAC 签名生成从 SHA-1 更新为 SHA-256,以避免 “no X-Hub-Signature-256 header set” 错误。 - 之前,Trigger 参数中的 Tekton 变量语法未正确转义,现已转义以防止异常行为。
- 之前,
TriggerGroup选择多个带扩展的 Triggers 时存在数据竞争,导致并发 map 写入 panic,现已修复 panic。 - 之前存在数据竞争问题,现通过深拷贝修复。
已知问题
此次发版无相关问题。