📖 Scenario: You are setting up a Jenkins pipeline for a simple project. You want the pipeline to start automatically when changes are pushed to the main branch in your Git repository.
🎯 Goal: Build a Jenkins pipeline script that uses the triggers directive to start the build automatically on GitHub push events.
📋 What You'll Learn
Create a Jenkins pipeline script with a pipeline block
Add a triggers directive inside the pipeline block
Use the pollSCM trigger with the schedule H/5 * * * *
Print a simple message in the stages section
💡 Why This Matters
🌍 Real World
Automating builds saves time and ensures your software is tested and deployed quickly after code changes.
💼 Career
Knowing how to configure Jenkins triggers is essential for DevOps engineers to automate continuous integration workflows.
Progress0 / 4 steps
1
Create the basic Jenkins pipeline structure
Create a Jenkins pipeline script with a pipeline block and an empty agent any section.
Jenkins
Hint
The pipeline block is the main container. Use agent any to run on any available agent.
2
Add the triggers directive with pollSCM
Inside the pipeline block, add a triggers directive that uses pollSCM with the schedule H/5 * * * *.
Jenkins
Hint
The pollSCM trigger checks the source code every 5 minutes for changes.
3
Add a simple stage to print a message
Add a stages section with one stage named Build that runs a steps block containing echo 'Build started'.
Jenkins
Hint
The stages section organizes your pipeline steps. Use echo to print messages.
4
Print the pipeline script to verify
Print the entire Jenkins pipeline script by running it in Jenkins or displaying the script content.
Jenkins
Hint
In Jenkins, the pipeline script is saved and run automatically. The output will show the echo message when triggered.
Practice
(1/5)
1. What is the main purpose of the triggers directive in a Jenkins pipeline?
easy
A. To configure the user permissions
B. To define the steps of the build process
C. To start jobs automatically based on time or events
D. To specify the environment variables
Solution
Step 1: Understand the role of triggers
The triggers directive is used to start Jenkins jobs automatically without manual intervention.
Step 2: Compare with other pipeline directives
Other directives like steps define build actions, environment sets variables, and permissions control access, not job start timing.
Final Answer:
To start jobs automatically based on time or events -> Option C
Quick Check:
Triggers = automatic job start [OK]
Hint: Triggers start jobs automatically by time or events [OK]
Common Mistakes:
Confusing triggers with build steps
Thinking triggers set environment variables
Assuming triggers control user permissions
2. Which of the following is the correct syntax to trigger a Jenkins pipeline every day at midnight using the triggers directive?
easy
A. triggers { cron('0 0 * * *') }
B. triggers { cron('60 24 * * *') }
C. triggers { pollSCM('0 0 * * *') }
D. triggers { cron('0 0 0 * *') }
Solution
Step 1: Understand cron syntax in Jenkins
Jenkins cron uses five fields: minute hour day month weekday. '0 0 * * *' means midnight every day.
Step 2: Identify correct trigger usage
The triggers directive uses cron('schedule') to schedule jobs. pollSCM is for source control polling, not time-based triggers.
Final Answer:
triggers { cron('0 0 * * *') } -> Option A
Quick Check:
Midnight cron = '0 0 * * *' [OK]
Hint: Use cron('0 0 * * *') for daily midnight trigger [OK]
Common Mistakes:
Using invalid cron times like '60 24'
Confusing pollSCM with cron
Misordering cron fields
3. Given this Jenkins pipeline snippet, what will trigger the job?
D. The job triggers when the 'BuildApp' job completes successfully
Solution
Step 1: Understand the upstream trigger
The upstream trigger starts this job when the specified upstream job finishes with the given result.
Step 2: Analyze the parameters
upstreamProjects: 'BuildApp' means the job named 'BuildApp' triggers this job. threshold SUCCESS means only on successful completion.
Final Answer:
The job triggers when the 'BuildApp' job completes successfully -> Option D
Quick Check:
Upstream job success triggers downstream [OK]
Hint: Upstream triggers run after specified job success [OK]
Common Mistakes:
Thinking it triggers every minute
Confusing upstream with SCM polling
Assuming manual trigger only
4. Identify the error in this Jenkins pipeline trigger configuration:
triggers {
cron('0 25 * * *')
}
medium
A. The hour field '25' is invalid in cron syntax
B. The cron syntax is correct and will run at 25 minutes past midnight
C. The cron directive should be inside a steps block
D. The cron string must have six fields, not five
Solution
Step 1: Check cron field ranges
Cron fields are minute (0-59), hour (0-23), day, month, weekday. '25' in hour field is invalid.
Step 2: Validate placement and field count
Cron is correctly placed in triggers and uses five fields, which is standard in Jenkins.
Final Answer:
The hour field '25' is invalid in cron syntax -> Option A
Quick Check:
Hour must be 0-23 in cron [OK]
Hint: Hour in cron must be 0-23, not 25 [OK]
Common Mistakes:
Assuming cron has six fields
Placing cron inside steps block
Thinking 25 means 25 minutes
5. You want a Jenkins job to run every 15 minutes but only if there are changes in the source code repository. Which triggers directive setup achieves this?
hard
A. triggers { cron('*/15 * * * *') }
B. triggers { pollSCM('H/15 * * * *') }
C. triggers { upstream(upstreamProjects: 'RepoUpdate', threshold: hudson.model.Result.SUCCESS) }
D. triggers { pollSCM('0 0 * * *') }
Solution
Step 1: Understand pollSCM usage
pollSCM triggers the job every specified interval but only if SCM changes are detected.
Step 2: Analyze the cron expressions
'H/15 * * * *' means every 15 minutes with hashing for load balancing. cron triggers regardless of SCM changes.
Final Answer:
triggers { pollSCM('H/15 * * * *') } -> Option B
Quick Check:
pollSCM runs on changes every 15 minutes [OK]
Hint: Use pollSCM with 'H/15 * * * *' for change-based 15-min trigger [OK]
Common Mistakes:
Using cron which triggers regardless of changes
Confusing upstream trigger with SCM polling
Setting pollSCM to wrong cron expression
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.