Gitlab CI/CD任务日志超出限制

89

当我在Gitlab CI/CD上运行作业一段时间后,我会得到以下错误信息:

Job's log exceeded limit of 4194304 bytes.

如何更改此限制?

3个回答

110

要更改Gitlab CI/CD作业的构建日志大小,您可以编辑config.toml文件并添加以千字节为单位的新限制:

要更改Gitlab CI / CD作业的构建日志大小,请编辑config.toml文件,并以千字节为单位添加新的限制:

[[runners]]
  output_limit = 10000
根据文档,output_limit是构建日志的最大大小(以千字节为单位)。默认值为4096(4MB)。要使其生效,您需要重新启动gitlab runner。
sudo gitlab-runner restart

3
我做了修改,但更改没有反映出来。我仍然收到相同的错误信息。 - CanCoder
4
对我来说,这个更改也没有产生任何影响。我发现需要重启 gitlab-runner,现在它已经可以工作了。重启 gitlab-runner 的命令是:"sudo gitlab-runner restart"。 - Ashish Pratap
1
即使在重新启动Runner后,当我手动重试管道中的相关作业时,我仍然看到了默认限制的相同消息。即使手动启动整个流程,我仍然看到默认限制消息。 - Kenny Evitt
最终似乎有效的方法是将包含 output_limit 的行移到以包含 [runners.custom_build_dir] 为起始的子部分之上。也许这是由于解析 TOML 文件或特定于 TOML 语法的某些原因? - Kenny Evitt
1
最新的文档似乎声称,实际上您不需要重新启动 runner 才能进行此更改。最新文档 - Kenny Evitt
只是添加一些额外的信息。我不得不使用 sudo su 切换到 root 用户,以便访问 /etc/gitlab-runner 文件夹中的 gitlab runner 设置。 - Reaz Murshed

20

对于那些没有访问gitlab-runners配置文件的人,有一个答案可以提供 (@Ortomala Lokni所提到的)。

您可以通过以下方式轻松地重定向日志记录器输出并存档 (请注意: 这是针对maven构建完成的)。

quality-check:
    extends: .retry-on-job-failure
    stage: quality-check
    timeout: 2 hours
    artifacts:
        name: "$CI_BUILD"
        paths:
            - target/client-quality_check.log
        when: always
        expire_in: 3 days
    only:
        - main
        - merge_requests
    script:
        - echo "Sonar Qube Start"
        - mvn MAVEN_CLI_OPTS sonar:sonar --log-file target/client-quality_check.log \-Dsonar.projectKey=$PROJECT_ KEY \-Dsonar.host.url=$SONAR_HOST_URL \-Dsonar.login=$SONAR_TOKEN 
        - echo "Sonar Qube Complete"

注意,在Maven命令中,我使用--log-file将Maven输出重定向到target/client-quality_check.log,然后在artifacts下,我设置了打包此日志文件,提供文件路径即可。

完成此作业后,我可以查看作业归档,并查看其中的日志文件,其中包含所有记录器输出。


我们能否在没有Sonar的情况下运行这个mvn脚本?我没有传递给Sonar的凭据,而且我也不确定我的组织是否配置了那些变量,即$PROJECT_KEY$SONAR_HOST_URL - undefined
你可以在任何Maven命令(如packageinstall等)上使用选项--log-filesonar:sonar只是我在这个例子中使用的命令。$PROJECT_KEY$SONAR_HOST_URL是我个人情况下的变量。 - undefined

5
从gitlab 14.1版本开始,另一个配置选项影响最大日志大小:ci_jobs_trace_size_limit(默认为100MB)。因此,仅按照其他答案中描述的更改运行程序限制已不再足够。

由于gitlab注重速度和易用性,修改ci_jobs_trace_size_limit只能通过在运行gitlab的系统(或docker容器)的rails控制台中直接执行命令来完成。

root@192:/# gitlab-rails console -e production
--------------------------------------------------------------------------------
 Ruby:         ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux]
 GitLab:       14.8.2 (c7be43f6dd3) FOSS
 GitLab Shell: 13.23.2
 PostgreSQL:   12.7
-----------------------------------------------------------[ booted in 122.49s ]
Loading production environment (Rails 6.1.4.6)
irb(main):001:0> Plan.default.actual_limits.update!(ci_jobs_trace_size_limit: 100000000)
=> true
irb(main):002:0> quit


注意:如果看起来像gitlab-rails console -e production什么都没做,控制台提示也没有弹出,那么你需要等待一下。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接