Bird
Raised Fist0
Jenkinsdevops~30 mins

Log management and rotation in Jenkins - Mini Project: Build & Apply

Choose your learning style10 modes available
Log Management and Rotation with Jenkins
📖 Scenario: You are managing a Jenkins server that generates build logs. Over time, these logs can fill up disk space. To keep the server healthy, you want to set up log rotation to keep only recent logs and delete older ones automatically.
🎯 Goal: Set up a Jenkins job with log rotation configured to keep only the last 5 builds' logs. You will create a Jenkins pipeline script that defines this log rotation policy.
📋 What You'll Learn
Create a Jenkins pipeline script with a pipeline block
Add a options block inside the pipeline
Configure buildDiscarder with logRotator to keep 5 builds
Print a message in the pipeline to confirm the job runs
💡 Why This Matters
🌍 Real World
Jenkins servers generate many build logs that can fill disk space. Managing logs by rotating and deleting old ones keeps the server healthy and fast.
💼 Career
DevOps engineers and build managers often configure Jenkins jobs to automatically clean up old logs, ensuring stable and efficient CI/CD pipelines.
Progress0 / 4 steps
1
Create a basic Jenkins pipeline script
Create a Jenkins pipeline script with a pipeline block and an empty agent any section.
Jenkins
Hint

Start with the basic Jenkins pipeline structure including pipeline and agent any.

2
Add log rotation configuration
Inside the pipeline block, add an options block that uses buildDiscarder(logRotator(numToKeepStr: '5')) to keep only the last 5 builds' logs.
Jenkins
Hint

Use the options block to add buildDiscarder with logRotator and set numToKeepStr to '5'.

3
Add a simple stage to print a message
Add a stages block with one stage named 'Build'. Inside it, add a steps block that runs echo 'Build started'.
Jenkins
Hint

Add a stages block with a stage named 'Build' that prints 'Build started' using echo.

4
Print confirmation message after pipeline runs
Add a post block inside the pipeline that runs always and prints echo 'Pipeline completed'.
Jenkins
Hint

Use a post block with always to print a confirmation message after the pipeline finishes.

Practice

(1/5)
1. What is the main purpose of log rotation in Jenkins?
easy
A. To move old logs and save disk space
B. To delete all Jenkins jobs automatically
C. To increase Jenkins build speed
D. To backup Jenkins configuration files

Solution

  1. Step 1: Understand what logs do in Jenkins

    Logs record Jenkins activity and can grow large over time.
  2. Step 2: Purpose of log rotation

    Log rotation moves or archives old logs to save disk space and keep the system tidy.
  3. Final Answer:

    To move old logs and save disk space -> Option A
  4. Quick Check:

    Log rotation = save space [OK]
Hint: Log rotation helps keep disk space free by moving old logs [OK]
Common Mistakes:
  • Thinking log rotation deletes Jenkins jobs
  • Confusing log rotation with backup
  • Believing log rotation speeds up builds
2. Which of the following is the correct syntax to configure log rotation using copytruncate in a Linux logrotate config for Jenkins logs?
easy
A. /var/log/jenkins/jenkins.log { truncatecopy weekly rotate 5 }
B. /var/log/jenkins/jenkins.log { copytruncate monthly rotate seven }
C. /var/log/jenkins/jenkins.log { copytruncate daily rotate 7 }
D. /var/log/jenkins/jenkins.log { copytruncate daily rotate seven }

Solution

  1. Step 1: Identify correct logrotate syntax

    The copytruncate option is valid and used to copy then truncate the log file without stopping Jenkins.
  2. Step 2: Check rotation frequency and count

    Using daily and rotate 7 is correct syntax for daily rotation keeping 7 files.
  3. Final Answer:

    Correct syntax with copytruncate, daily rotation, and rotate 7 -> Option C
  4. Quick Check:

    copytruncate + daily + rotate 7 = correct [OK]
Hint: copytruncate keeps Jenkins running during log rotation [OK]
Common Mistakes:
  • Using 'truncatecopy' instead of 'copytruncate'
  • Writing 'rotate seven' instead of 'rotate 7'
  • Using invalid rotation frequency like 'monthly' with wrong number
3. Given this logrotate config snippet for Jenkins logs:
/var/log/jenkins/jenkins.log {
    copytruncate
    weekly
    rotate 4
}
What will happen after 5 weeks of running this rotation?
medium
A. Jenkins service will stop during log rotation
B. All 5 weeks of logs are kept without deletion
C. Logs are deleted every week without keeping any backups
D. Only the latest 4 weekly logs are kept; older logs are deleted

Solution

  1. Step 1: Understand rotate count meaning

    Rotate 4 means keep 4 old log files; older ones get deleted.
  2. Step 2: Apply to 5 weeks

    After 5 weeks, the oldest log (week 1) is deleted, keeping only weeks 2-5.
  3. Final Answer:

    Only the latest 4 weekly logs are kept; older logs are deleted -> Option D
  4. Quick Check:

    rotate 4 means keep 4 logs [OK]
Hint: Rotate number = how many old logs to keep [OK]
Common Mistakes:
  • Thinking all logs are kept forever
  • Assuming logs delete immediately without backups
  • Believing Jenkins stops during copytruncate rotation
4. You configured Jenkins log rotation with copytruncate, but logs keep growing without rotation. What is the most likely cause?
medium
A. The Jenkins service is stopped
B. The logrotate service is not running or not scheduled
C. The copytruncate option is misspelled as copytrunc
D. The log file path is incorrect in the config

Solution

  1. Step 1: Check if logrotate runs

    If logrotate is not running or scheduled, logs won't rotate despite correct config.
  2. Step 2: Consider other causes

    Misspelling or wrong path cause errors, but usually logs won't grow if Jenkins stopped.
  3. Final Answer:

    The logrotate service is not running or not scheduled -> Option B
  4. Quick Check:

    Logrotate must run to rotate logs [OK]
Hint: Ensure logrotate runs regularly to rotate logs [OK]
Common Mistakes:
  • Assuming Jenkins must be stopped for rotation
  • Ignoring logrotate service status
  • Overlooking typos in config file
5. You want to rotate Jenkins logs daily without stopping Jenkins and keep logs for 10 days. Which logrotate config snippet achieves this safely?
hard
A. /var/log/jenkins/jenkins.log { copytruncate daily rotate 10 missingok notifempty }
B. /var/log/jenkins/jenkins.log { delaycompress weekly rotate 10 }
C. /var/log/jenkins/jenkins.log { copytruncate monthly rotate 10 }
D. /var/log/jenkins/jenkins.log { compress daily rotate 5 }

Solution

  1. Step 1: Identify safe rotation without stopping Jenkins

    copytruncate copies and truncates logs safely without stopping Jenkins.
  2. Step 2: Check rotation frequency and retention

    Daily rotation with rotate 10 keeps 10 days of logs. missingok and notifempty handle missing or empty logs safely.
  3. Final Answer:

    Config with copytruncate, daily rotation, rotate 10, missingok, notifempty -> Option A
  4. Quick Check:

    copytruncate + daily + rotate 10 = safe rotation [OK]
Hint: Use copytruncate for safe daily rotation without stopping Jenkins [OK]
Common Mistakes:
  • Using monthly or weekly instead of daily rotation
  • Not using copytruncate causing Jenkins stop
  • Setting rotate less than 10 days
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard