{{< details >}}

  1. Tier: 基础版, 专业版, 旗舰版
  2. Offering: JihuLab.com, 私有化部署

{{< /details >}}

一个作业日志显示了一个 CI/CD 作业 的完整执行历史。

查看作业日志

要查看作业日志:

  1. 选择要查看作业日志的项目。
  2. 在左侧边栏,选择 CI/CD > Pipelines
  3. 选择要检查的流水线。
  4. 在流水线视图中,在作业列表中,选择一个作业以查看作业日志页面。

要查看有关作业及其日志输出的详细信息,请滚动浏览作业日志页面。

全屏模式查看作业日志

{{< history >}}

  • 引入于极狐GitLab 16.7。

{{< /history >}}

您可以通过点击 显示全屏 以全屏模式查看作业日志的内容。

要使用全屏模式,您的网页浏览器也必须支持该模式。如果您的网页浏览器不支持全屏模式,则该选项不可用。

展开和折叠作业日志部分

{{< history >}}

  • 支持多行命令 bash shell 输出的输出引入于极狐GitLab 16.5,使用名为 FF_SCRIPT_SECTIONS功能标志 .

{{< /history >}}

作业日志被分为可以折叠或展开的部分。每个部分显示持续时间。

在以下示例中:

  • 三个部分已折叠,可以展开。
  • 三个部分已展开,可以折叠。

A job log with expandable and collapsible sections

自定义折叠部分

您可以通过手动输出极狐GitLab 用于分隔折叠部分的特殊代码来创建 作业日志中的折叠部分

  • 部分开始标记:\e[0Ksection_start:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K + TEXT_OF_SECTION_HEADER
  • 部分结束标记:\e[0Ksection_end:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K

您必须将这些代码添加到 CI 配置的脚本部分。例如,使用 echo

job1:
  script:
    - echo -e "\e[0Ksection_start:`date +%s`:my_first_section\r\e[0KHeader of the 1st collapsible section"
    - echo 'this line should be hidden when collapsed'
    - echo -e "\e[0Ksection_end:`date +%s`:my_first_section\r\e[0K"

转义语法可能会根据您的 runner 使用的 shell 而有所不同。例如,如果它使用 Zsh,您可能需要使用 \\e\\r 转义特殊字符。

在上面的示例中:

  • date +%s:生成 Unix 时间戳的命令(例如 1560896352)。
  • my_first_section:给部分起的名称。名称只能由字母、数字和 _.- 字符组成。
  • \r\e[0K:转义序列,防止部分标记在渲染(彩色)作业日志中显示。它们在查看原始作业日志时显示,您可以在作业日志的右上角选择 Show complete raw ({{< icon name=”doc-text” >}}) 来访问。
    • \r:回车(将光标返回到行的起始位置)。
    • \e[0K:ANSI 转义代码,用于清除从光标位置到行末的行。(\e[K 单独使用无效;必须包含 0)。

示例原始作业日志:

\e[0Ksection_start:1560896352:my_first_section\r\e[0KHeader of the 1st collapsible section
this line should be hidden when collapsed
\e[0Ksection_end:1560896353:my_first_section\r\e[0K

示例作业控制台日志:

A job log showing a collapsed section with hidden content

使用脚本改进折叠部分的显示

要从作业输出中删除创建部分标记的 echo 语句,您可以将作业内容移到脚本文件中,并从作业中调用它:

  1. 创建一个可以处理部分标题的脚本。例如:

    # function for starting the section
    function section_start () {
      local section_title="${1}"
      local section_description="${2:-$section_title}"
    
      echo -e "section_start:`date +%s`:${section_title}[collapsed=true]\r\e[0K${section_description}"
    }
    
    # Function for ending the section
    function section_end () {
      local section_title="${1}"
    
      echo -e "section_end:`date +%s`:${section_title}\r\e[0K"
    }
    
    # Create sections
    section_start "my_first_section" "Header of the 1st collapsible section"
    
    echo "this line should be hidden when collapsed"
    
    section_end "my_first_section"
    
    # Repeat as required
    
  2. 将脚本添加到 .gitlab-ci.yml 文件中:

    job:
      script:
        - source script.sh
    

预折叠部分

您可以通过在部分开始处添加 collapsed 选项,使作业日志自动折叠可折叠部分。在部分名称后面和 \r 之前添加 [collapsed=true]。部分结束标记保持不变:

  • 带有 [collapsed=true] 的部分开始标记:\e[0Ksection_start:UNIX_TIMESTAMP:SECTION_NAME[collapsed=true]\r\e[0K + TEXT_OF_SECTION_HEADER
  • 部分结束标记(不变):\e[0Ksection_end:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K

将更新的部分开始文本添加到 CI 配置中。例如,使用 echo

job1:
  script:
    - echo -e "\e[0Ksection_start:`date +%s`:my_first_section[collapsed=true]\r\e[0KHeader of the 1st collapsible section"
    - echo 'this line should be hidden automatically after loading the job log'
    - echo -e "\e[0Ksection_end:`date +%s`:my_first_section\r\e[0K"

删除作业日志

当您删除作业日志时,您也会 erase the entire job

有关详细信息,请参阅 删除作业日志

作业日志时间戳

{{< details >}}

  1. Tier: 基础版, 专业版, 旗舰版
  2. Offering: JihuLab.com, 极狐GitLab私有化部署, 极狐GitLab Dedicated

{{< /details >}}

{{< history >}}

  • Introduced in 极狐GitLab 17.1 with a flag named parse_ci_job_timestamps. 默认禁用。
  • 功能标志 parse_ci_job_timestamps removed in 极狐GitLab 17.2.

{{< /history >}}

您可以为 CI/CD 作业日志中的每一行生成 ISO 8601 格式 的时间戳。通过作业日志时间戳,您可以识别作业中特定部分的持续时间。默认情况下,作业日志不包含每个日志行的时间戳。

启用时间戳后,作业日志使用的存储空间大约增加 10%。

先决条件:

  • 您必须使用 GitLab Runner 17.0 或更高版本。

要在作业日志中启用时间戳,请向您的流水线添加一个 FF_TIMESTAMPS CI/CD 变量,并将其设置为 true

例如,将变量添加到您的 .gitlab-ci.yml 文件中

variables:
  FF_TIMESTAMPS: true

job:
  script:
    - echo "This job's log has ISO 8601 timestamps!"

这是一个启用 FF_TIMESTAMPS 的日志输出示例:

A job log showing timestamps in UTC for each line

要为此功能提供反馈,请在 issue 463391 上留下评论。

故障排除

作业日志更新缓慢

当您访问正在运行的作业的作业日志页面时,日志更新可能会有长达 60 秒的延迟。默认刷新时间为 60 秒,但在 UI 中查看日志一次后,日志更新应每 3 秒发生一次。