You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions复合步骤输出分组失效 原始控制符未正确格式化

GitHub Actions复合步骤日志控制标记不生效问题

问题表现

在工作流中使用复合动作(composite action)时,运行日志无法正常折叠、高亮,直接输出了原始的日志控制标记,异常日志片段:

##[group***Checking out the ref
[command***/usr/bin/git checkout --progress --force -B deployment-manager refs/remotes/origin/deployment-manager
Switched to a new branch 'deployment-manager'
branch 'deployment-manager' set up to track 'origin/deployment-manager'.
##[endgroup***
[command***/usr/bin/git log -1 --format='%H'
'15db9b52614501f2212043fffa9b6df86c047892'
##[group***Run actions/setup-java@v3

group/endgroup/command这类日志装饰器完全没有被解析。

可复现最小配置

工作流文件

on:
  workflow_dispatch:

jobs:
  build:
    permissions:
      contents: read
      id-token: write
    runs-on: ubuntu-latest
    steps:
    - uses: riskalyze/build-actions/ecr-build-push@v2
      with:
        ecr-lifecycle-policy: ${{ secrets.ECR_LIFECYCLE_POLICY }}
        ecr-repo-policy: ${{ secrets.ECR_REPO_POLICY }}
        path: .
        shared-account-id: 123123123123
        shared-role-arn: arn:aws:iam::123123123123:role/githubActionsEcrRole

关联复合动作

调用的复合动作存放在riskalyze/build-actions仓库的ecr-build-push/action.yml路径下。

根因分析

这是GitHub Actions Runner 2.297.0~2.302.0版本存在的已知bug:

  • 该版本区间的runner新增的日志掩码逻辑存在误匹配问题,会把日志控制指令末尾的闭合方括号]识别为需要掩码的敏感内容,替换成掩码占位符***
  • 原本合法的日志控制标记格式为##[group]、##[command]、##[endgroup],被错误篡改后变成##[group***、##[command***、##[endgroup***的无效格式
  • 日志前端无法识别篡改后的标记,就会把这些控制指令当做普通文本直接输出,对应的折叠、命令高亮等格式化逻辑也不会生效
  • 这个bug只有在复合动作内部嵌套调用其他uses类型的步骤时才会触发,和日志里出现的嵌套调用actions/checkout、actions/setup-java的场景完全吻合

解决方法

  • 自托管runner场景:直接把runner版本升级到2.303.0及以上版本,或者降级到2.296.2及更早的无bug版本即可
  • GitHub托管runner场景:该bug已经在新版runner中修复,官方正在逐步全量推送所有托管镜像,删除旧的工作流运行缓存重新触发任务,一般就能自动恢复
  • 复合动作维护者场景:如果需要临时绕开这个问题,可以把复合动作内部嵌套的uses步骤改成原生shell命令实现,减少多层嵌套调用就能避免触发该bug

内容的提问来源于stack exchange,提问作者Jesse Bye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:39:22