Gitlab CI/CD job's log exceeded limit
GitlabGitlab CiGitlab Ci-RunnerGitlab Problem Overview
When I run my job on Gitlab CI/CD, after a while I obtain the following error message:
Job's log exceeded limit of 4194304 bytes.
How to change this limit?
Gitlab Solutions
Solution 1 - Gitlab
To change the build log size of your jobs in Gitlab CI/CD, you can edit your config.toml
file and add a new limit in kilobytes:
[[runners]]
output_limit = 10000
According to the documentation
> output_limit : Maximum build log size in kilobytes. Default is 4096 (4MB).
For this to take effect, you need to restart the gitlab runner:
sudo gitlab-runner restart
Solution 2 - Gitlab
So an answer for those that don't have access to the gitlab-runners
configuration file that @Ortomala Lokni
refers too.
You can redirect the logger output and archive it quite easily by doing the following (Note: this is done for maven builds).
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"
Notice within the maven command I am using the --log-file
to redirect the maven output to target/client-quality_check.log
and then under artifacts
I have set to archive this log file by providing the path to the file.
Once this Job finishes I can then look at the Jobs archives and can see my log file with all the logger output in it.
Solution 3 - Gitlab
Starting from gitlab 14.1 there is another configuration option that effects maximum log size: ci_jobs_trace_size_limit
(100MB by default). So altering only runner limit, as described in other answers, is not sufficient anymore.
Since gitlab is all about speed and usability, modifying ci_jobs_trace_size_limit
is possible only by executing command directly in rails console of the system (or docker container) where gitlab is running.
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
Note: if it seems like gitlab-rails console -e production
doesn't do anything and console prompt doesn't pop up you'll need to wait.