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

Bitbucket Pipeline无法显示Yarn build完整输出及日志截断问题

解决Bitbucket Pipeline日志截断问题

1. 强制刷新命令输出(通用方案)

CI环境下多数命令的标准输出默认采用块缓冲模式,程序结束前未主动刷新缓冲区会导致日志截断,可通过以下方式解决:

方法A:使用unbuffer禁用缓冲

unbuffer属于expect工具包,能强制命令输出实时刷新。先在镜像中安装依赖,再包裹目标命令:

image: node:latest

pipelines:
  branches:
    staging:
      steps:
        - step:
            name: Build
            caches:
              - node
            script:
              - apt-get update && apt-get install -y expect
              - yarn install
              - unbuffer yarn build

方法B:用tee强制行缓冲

tee会将输出同时写入文件和控制台,默认启用行缓冲,避免截断:

script:
  - yarn install
  - yarn build | tee build-output.log

执行后可将build-output.log作为工件保存,方便后续回溯完整日志。

2. React Scripts专属调整

react-scripts的build命令在CI环境下存在输出缓冲特性,可通过环境变量或直接调用脚本强制实时输出:

script:
  - yarn install
  - CI=true yarn build

或直接修改Node.js的输出缓冲设置:

script:
  - yarn install
  - node -e "process.stdout._handle.setBlocking(true); require('react-scripts/scripts/build')"

3. 修复atlassian/ssh-run日志截断

针对ssh-run的输出截断,可通过添加-tt参数强制分配伪终端,确保输出实时刷新:

script:
  - pipe: atlassian/ssh-run:0.6.0
    variables:
      SSH_USER: 'your-user'
      SERVER: 'your-server'
      COMMAND: 'echo "Hello, World!"'
      SSH_OPTIONS: '-tt'

验证

修改配置后重新执行Pipeline,检查yarn build的输出是否包含完整的文件大小列表、部署提示;同时确认ssh-run的echo命令能正常显示完整消息。

内容的提问来源于stack exchange,提问作者Daniel Loureiro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:36:27