{{< details >}}
- Tier: 基础版, 专业版, 旗舰版
- Offering: JihuLab.com, 私有化部署
{{< /details >}}
一个作业日志显示了一个 CI/CD 作业 的完整执行历史。
查看作业日志
要查看作业日志:
- 选择要查看作业日志的项目。
- 在左侧边栏,选择 CI/CD > Pipelines。
- 选择要检查的流水线。
- 在流水线视图中,在作业列表中,选择一个作业以查看作业日志页面。
要查看有关作业及其日志输出的详细信息,请滚动浏览作业日志页面。
全屏模式查看作业日志
{{< history >}}
- 引入于极狐GitLab 16.7。
{{< /history >}}
您可以通过点击 显示全屏 以全屏模式查看作业日志的内容。
要使用全屏模式,您的网页浏览器也必须支持该模式。如果您的网页浏览器不支持全屏模式,则该选项不可用。
展开和折叠作业日志部分
{{< history >}}
- 支持多行命令 bash shell 输出的输出引入于极狐GitLab 16.5,使用名为
FF_SCRIPT_SECTIONS
的功能标志 .
{{< /history >}}
作业日志被分为可以折叠或展开的部分。每个部分显示持续时间。
在以下示例中:
- 三个部分已折叠,可以展开。
- 三个部分已展开,可以折叠。
自定义折叠部分
您可以通过手动输出极狐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
示例作业控制台日志:
使用脚本改进折叠部分的显示
要从作业输出中删除创建部分标记的 echo
语句,您可以将作业内容移到脚本文件中,并从作业中调用它:
-
创建一个可以处理部分标题的脚本。例如:
# 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
-
将脚本添加到
.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 >}}
- Tier: 基础版, 专业版, 旗舰版
- 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
的日志输出示例:
要为此功能提供反馈,请在 issue 463391 上留下评论。
故障排除
作业日志更新缓慢
当您访问正在运行的作业的作业日志页面时,日志更新可能会有长达 60 秒的延迟。默认刷新时间为 60 秒,但在 UI 中查看日志一次后,日志更新应每 3 秒发生一次。