Gitlab CI/CD job's log exceeded limit

GitlabGitlab CiGitlab Ci-Runner

Gitlab 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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionOrtomala LokniView Question on Stackoverflow
Solution 1 - GitlabOrtomala LokniView Answer on Stackoverflow
Solution 2 - GitlabPopeyeView Answer on Stackoverflow
Solution 3 - Gitlabuser7860670View Answer on Stackoverflow