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

如何在Gitlab CI任务日志中为自定义脚本显示运行时间

GitLab CI 自定义脚本命令显示运行时间的方法

可以直接调用GitLab CI自带的能力实现,也可以通过自定义脚本配置实现,两种方案如下:

方案1:复用GitLab原生区段特性(最贴合需求)

GitLab CI内置的可折叠区段特性,会自动统计每个区段的运行时长,展示效果和系统预置命令完全一致,仅需在自定义脚本前后添加对应的标记即可:

  • 区段开始标记:echo -e "\e[0Ksection_start:$(date +%s):自定义区段ID\r\e[0K区段展示名称"
  • 区段结束标记:echo -e "\e[0Ksection_end:$(date +%s):自定义区段ID\r\e[0K"

使用示例:

job:
  script:
    # 打包区段开始
    - echo -e "\e[0Ksection_start:$(date +%s):build_pkg\r\e[0K执行项目打包"
    - yarn install
    - yarn build
    - tar -zcvf dist.tar.gz dist/
    # 打包区段结束
    - echo -e "\e[0Ksection_end:$(date +%s):build_pkg\r\e[0K"

    # 部署区段开始
    - echo -e "\e[0Ksection_start:$(date +%s):deploy\r\e[0K部署到测试环境"
    - scp dist.tar.gz root@test:/opt/project/
    - ssh root@test "cd /opt/project && tar -xf dist.tar.gz"
    # 部署区段结束
    - echo -e "\e[0Ksection_end:$(date +%s):deploy\r\e[0K"

该方案优势:

  • 完全复用GitLab原生能力,无需额外配置
  • 运行时长展示位置、样式和系统预置命令完全一致
  • 支持区段折叠展开,日志可读性更高

方案2:自定义每行命令的时间前缀

如果需要给每一行自定义命令都添加时间标记,可以通过修改shell的提示符配置实现,还可以自定义显示距离任务启动的时间差:

job:
  script:
    # 记录任务启动时间戳
    - export CI_JOB_START_AT=$(date +%s)
    # 配置命令执行前缀:显示距离任务启动的秒数+当前时间
    - export PS4='+ \033[32m[$(( $(date +%s) - $CI_JOB_START_AT ))s $(date +%H:%M:%S)]\033[0m '
    # 开启命令追踪,每执行一行命令都会打印前缀
    - set -x
    # 后面接你的自定义脚本
    - echo "开始执行任务"
    - sleep 3
    - echo "任务执行完成"

该方案优势:

  • 每行命令都有独立的时间标记,适合排查慢执行命令
  • 时间格式、颜色可以完全自定义,适配不同的日志阅读需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:45:02