发版日志

Tip

版本 v4.7.x 的维护周期为 2026 年 1 月 15 日至 2026 年 5 月 15 日。

目录

兼容性和支持矩阵

下表展示了 Alauda DevOps Pipelines operator 与 ACP 版本之间的兼容性和支持矩阵。

Alauda DevOps Pipelines VersionComponent VersionACP Version
OperatorPipelinesTriggersCLIChainsHubResultsPipelines as CodeManual Approval GatePruner
4.7.x1.6.x0.34.x0.41.x0.26.x1.23.x0.17.x0.39.x0.7.x0.3.x4.0, 4.1, 4.2
4.6.x (LTS)1.0.x0.32.x0.41.x0.25.x1.22.x0.15.x4.0, 4.1, 4.2
4.4.x1.0.x0.32.x0.41.x0.25.x1.22.x0.15.x4.0, 4.1
4.3.x1.0.x0.32.x0.41.x0.25.x1.22.x0.15.x4.0, 4.1
4.2.x (LTS)1.0.x0.32.x0.41.x0.25.x1.22.x0.15.x4.0, 4.1
4.1.x0.65.x0.30.x0.39.x0.23.x1.19.x0.14.x4.0, 4.1
4.0.x (LTS)0.65.x0.30.x0.39.x0.23.x1.19.x0.13.x4.0, 4.1

v4.7.0

新增及优化功能

Pipeline

  • Pipeline 集成 Sonarqube Connector:在创建或执行 Pipeline 时,支持通过 sonarqube 连接器选择 SONAR_HOST_URLsonar-credentials

  • 本次更新中,TaskRun 因内存不足(OOMKilled)失败时,失败信息中将包含明确的失败原因。

  • 本次更新中,managed-by 注解不再从 Pipeline 控制器传播到 Pod,避免标签误归属。

  • 本次更新中,删除 PVC 资源后,错误处理得到改进,避免资源清理时异常。

  • 本次更新中,支持通过环境变量 THREADS_PER_CONTROLLER 覆盖 threads-per-controller 参数值。

  • 本次更新中,TaskRunSpecs 中的 podTemplate 支持参数引用,支持使用 Matrix 进行多架构构建。

    apiVersion: tekton.dev/v1
    kind: PipelineRun
    metadata:
      name: multi-arch-build
    spec:
      taskRunSpecs:
        - pipelineTaskName: build-and-push-manifest
          podTemplate:
            nodeSelector:
              kubernetes.io/arch: $(params.arch)
      pipelineSpec:
        tasks:
          - name: build-and-push-manifest
            matrix:
              params:
                - name: arch
                  value: ["amd64", "arm64"]
            taskSpec:
              params:
                - name: arch
              steps:
                - name: build-and-push
                  image: ubuntu
                  script: |
                    echo "building on $(params.arch)"
  • 本次更新中,PipelineRun 支持覆盖单个 Task 的超时设置(通过 spec.taskRunSpecs[].timeout),实现更细粒度的超时控制。

    apiVersion: tekton.dev/v1
    kind: PipelineRun
    metadata:
      name: timeout-override-demo
    spec:
      timeouts:
        pipeline: "10m"    # 3. PipelineRun 约束
      pipelineSpec:
        tasks:
        - name: task-a
          timeout: "8m"     # 2. Pipeline 规格超时
          taskSpec: { ... }
        - name: task-b  
          taskSpec: { ... } # 4. 使用全局默认(60m)
      taskRunSpecs:
      - pipelineTaskName: task-a
        timeout: "5m"       # 1. 优先级最高 - 覆盖 8m Pipeline 超时
  • 本次更新中,TaskRunPipelineRun 新增 managedBy 字段,允许将生命周期控制委托给外部控制器或系统。

    apiVersion: tekton.dev/v1
    kind: PipelineRun
    metadata:
      name: externally-managed-pipeline
    spec:
      pipelineRef:
        name: my-pipeline
      managedBy: "custom-controller"
  • 本次更新中,引入了可配置的共享缓存机制,适用于 bundle、git 和 cluster 解析器,减少重复资源拉取,提升 Pipeline 解析性能。

    • Git 解析器缓存配置示例:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: git-resolver-config
        namespace: tekton-pipelines-resolvers
      data:
        default-cache-mode: "always"  # always, never, auto
        enable-git-resolver: "true"
      --- 
      # Pipeline 中的使用示例
      apiVersion: tekton.dev/v1beta1
      kind: PipelineRun
      metadata:
        name: git-clone-demo-pr
      spec:
        pipelineRef:
          resolver: git
          params:
          - name: url
            value: https://github.com/tektoncd/catalog.git
          - name: revision
            value: main
          - name: pathInRepo
            value: pipeline/simple/0.1/simple.yaml
  • 本次更新中,When 表达式中的 input 字段支持解析 Pipeline 中的数组类型参数值。

    apiVersion: tekton.dev/v1
    kind: Pipeline
    metadata:
      name: when-demo
    spec:
      params:
        - name: user-env
          type: string
        - name: env-list
          type: array
          default: ["dev", "test"]
      tasks:
        - name: conditional-task
          when:
            - input: $(params.user-env)
              operator: in
              values: $(params.env-list[*])
          taskSpec:
            steps:
              - name: echo
                image: busybox
                script: |
                  echo "env: $(params.user-env)"
    ---
    apiVersion: tekton.dev/v1
    kind: PipelineRun
    metadata:
      generateName: when-demo-run-success-
    spec:
      pipelineRef:
        name: when-demo
      params:
        - name: user-env
          value: dev
  • 本次更新中,支持 Pipelines 嵌套 Pipelines:Pipeline 现在可以通过 Task 中的 pipelineSpec 字段执行嵌套 Pipeline。

    apiVersion: tekton.dev/v1
    kind: Pipeline
    metadata:
      name: clone-scan-notify
    spec:
      tasks:
        - name: git-clone
          taskRef:
            name: git-clone
        - name: security-scans
          pipelineSpec:  # 嵌套的 pipeline 定义
            tasks:
              - name: scorecards
                taskRef:
                  name: scorecards
              - name: codeql
                taskRef:
                  name: codeql
        - name: notification
          taskRef:
            name: notification

Trigger

  • 本次更新中,系统自动将 HTTP 请求的 Content-Length 头部值填充到 Triggers 的 TriggerBinding 可访问上下文中。

  • 本次更新中,tkn 新增了专门用于 Triggers 的引导命令,简化了使用 tkn 命令配置 Triggers 的复杂度。

Chains

  • 本次更新中,支持禁用镜像签名但保留来源/认证签名。此前 Chains 启用签名功能时,镜像签名、来源生成和认证签名通常是“捆绑”在一起的。详情请参见 Chains Configuration

Results

  • 本次更新中,可通过在 TektonConfig 中设置 disable_storing_incomplete_runs 标志,控制 Result Watcher 对未完成运行的存储行为,降低系统负载。

    #...
    options:
      deployments:
        tekton-results-watcher:
          spec:
            template:
              spec:
                containers:
                - args:
                  - "--disable_storing_incomplete_runs=true"
                  name: watcher
                  resources: {}
    #...
  • 本次更新中,支持基于命名空间、标签、注解和状态配置 PipelineRunTaskRun 结果的细粒度保留策略,实现存储成本与合规调试需求的平衡。

    • 多条综合保留策略的 ConfigMap 示例:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: tekton-results-config-results-retention-policy
        namespace: tekton-pipelines
      data:
        runAt: "0 2 * * *" # 每天凌晨 2 点执行
        defaultRetention: "30d"
        policies: |
          - name: "retain-critical-failures-long-term"
            selector:
              matchNamespaces:
                - "production"
                - "prod-east"
              matchLabels:
                "criticality": ["high"]
              matchStatuses:
                - "Failed"
            retention: "180d"
          - name: "retain-annotated-for-debug"
            selector:
              matchAnnotations:
                "debug/retain": ["true"]
            retention: "14d"
          - name: "default-production-policy"
            selector:
              matchNamespaces:
                - "production"
                - "prod-east"
            retention: "60d"
          - name: "short-term-ci-retention"
            selector:
              matchNamespaces:
                - "ci"
            retention: "7d"

      说明:

      1. productionprod-east 命名空间中带有标签 criticality: high 且状态为失败的 Result 将保留 180 天
      2. 任何带有注解 debug/retain: "true" 的 Result 将保留 14 天
      3. 其他 productionprod-east 命名空间中的 Result 将保留 60 天
      4. ci 命名空间中的 Result 将保留 7 天
      5. 不符合上述任何策略的 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

重大变更

  • Chains v0.26.0 升级至 Cosign v2.6.0,后者不再支持用于无密钥签名的 HS256 JWT 令牌;使用私有 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 的 PipelineTrigger 修复问题:

Pipeline

  • 之前,当 finally 任务失败但整体运行成功时,PipelineRun 状态不正确。本版本修正了 finally 任务失败场景下的 PipelineRun 状态计算。
  • 之前,TaskRun 未正确设置 Pod 的亲和性/反亲和性配置,导致调度行为异常。本版本修正了 TaskRun 的 Pod 亲和性/反亲和性设置。
  • 之前,git 类型的 PipelineResourcerevision 字段为空时错误地校验失败。本版本修正了 git 类型 PipelineResourcerevision 的校验逻辑。
  • 之前,PipelineRun 取消操作未传递到 finally 任务,导致它们在主 Pipeline 取消后仍然运行。本版本确保取消信号正确传递给 finally 任务。
  • 之前,TaskRun 资源在运行中被删除时,关联的 Pod 未被删除,导致孤儿 Pod。本版本确保 TaskRun 控制器在父资源删除时清理 Pod。
  • 之前,重试的 PipelineRun 启动时间计算错误,导致持续时间指标误导。本版本修正了重试 PipelineRun 的启动时间计算。
  • 之前,PipelineRun 未遵守配置的 finally 任务超时,允许其无限运行。本版本使 finally 任务遵守 PipelineRun 超时配置。
  • 之前,TaskRun 指标缺少正确的命名空间标签,难以按命名空间过滤指标。本版本正确包含了命名空间标签。
  • 之前,校验未检测 Pipeline finally 部分的重复任务名,导致运行时错误。本版本更新了校验逻辑,检测并拒绝重复任务名。
  • 之前,当主任务失败且跳过 finally 任务时,PipelineRun 状态卡在 Running。本版本正确将此类场景的状态更新为 Failed。
  • 之前,TaskRun Pod 未继承关联服务账户的注解,导致配置缺失。本版本确保服务账户注解正确传递给 TaskRun Pod。
  • 之前,Tekton CLI 显示的 PipelineRun 持续时间计算错误,显示不准确。本版本修正了 CLI 中的持续时间计算。
  • 之前,取消 PipelineRun 时未清理已完成的 finally 任务,导致资源泄漏。本版本确保取消后清理已完成的 finally 任务。
  • 之前,使用空 subPath 的工作区时,TaskRun 启动失败并报错。本版本支持带空 subPath 的工作区正常启动 TaskRun
  • 之前,重试的 PipelineRun 指标未正确记录,导致监控数据不完整。本版本准确捕获重试相关指标。
  • 之前,PipelineRun 状态在完全取消后仍显示为“Cancelling”,造成状态混淆。本版本正确将状态更新为“Canceled”。
  • 之前,非标准日志路径的 TaskRun Pod 日志无法获取,阻碍任务输出访问。本版本调整了日志获取逻辑,支持非标准日志路径。
  • 之前,校验拒绝了默认值为空的 PipelineParams,尽管空默认值在许多场景下有效。本版本修正了对空默认值的校验。

Trigger

  • 之前,标准 GitHub webhook 默认发送两个头部不受影响,但自定义 webhook 实现必须将 HMAC 签名生成从 SHA-1 更新为 SHA-256,以避免 “no X-Hub-Signature-256 header set” 错误。
  • 之前,Trigger 参数中的 Tekton 变量语法未正确转义,现已转义以防止异常行为。
  • 之前,TriggerGroup 选择多个带扩展的 Triggers 时存在数据竞争,导致并发 map 写入 panic,现已修复 panic。
  • 之前存在数据竞争问题,现通过深拷贝修复。

已知问题

此次发版无相关问题。