Bird
Raised Fist0
Jenkinsdevops~10 mins

Triggers directive in Jenkins - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Triggers directive
Start Jenkins Job Configuration
↓
Add triggers directive
↓
Define trigger type
↓
Jenkins monitors trigger
↓
Trigger fires job
↓
Job runs automatically
↓
End
The triggers directive is added in Jenkins job config to tell Jenkins when to start the job automatically.
Execution Sample
Jenkins
pipeline {
  triggers {
    cron('H/15 * * * *')
  }
  stages {
    stage('Build') { steps { echo 'Building...' } }
  }
}
This Jenkins pipeline runs the build stage automatically every 15 minutes using the cron trigger.
Process Table
StepActionTrigger EvaluatedResultJob Status
1Start Jenkins job configurationNo trigger yetWaiting for triggerIdle
2Add triggers directive with cron('H/15 * * * *')Cron trigger setJenkins schedules job every 15 minutesIdle
3Time reaches scheduled cron timeCron trigger firesJob starts automaticallyRunning
4Job executes build stageN/ABuild stage runs and completesSuccess
5Wait for next cron timeWaitingJob idle until next triggerIdle
💡 Job waits idle until next scheduled cron trigger fires again
Status Tracker
VariableStartAfter Step 2After Step 3After Step 4Final
Job StatusIdleIdleRunningSuccessIdle
Trigger StateNoneCron setFiredN/AWaiting
Key Moments - 2 Insights
Why doesn't the job run immediately after adding the triggers directive?
Because the trigger only schedules the job to run at specific times (e.g., every 15 minutes). See execution_table step 2 and 3 where the job waits idle until the cron time.
What happens if the trigger condition is never met?
The job stays idle and never runs automatically. This is shown in execution_table step 5 where the job waits for the next trigger.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the Job Status at Step 3 when the trigger fires?
ASuccess
BIdle
CRunning
DFailed
💡 Hint
Check the 'Job Status' column at Step 3 in the execution_table.
At which step does the Jenkins job complete successfully?
AStep 4
BStep 2
CStep 3
DStep 5
💡 Hint
Look for 'Build stage runs and completes' in the 'Result' column.
If the cron trigger was removed, what would be the Job Status after Step 2?
ARunning
BIdle
CSuccess
DFailed
💡 Hint
Without a trigger, the job waits idle. See 'Trigger State' in variable_tracker after Step 2.
Concept Snapshot
Triggers directive in Jenkins pipeline:
- Use triggers { cron('schedule') } to auto-start jobs
- Jenkins monitors triggers and runs jobs when conditions match
- Jobs stay idle until trigger fires
- Common triggers: cron, pollSCM, upstream
- Helps automate job runs without manual start
Full Transcript
The triggers directive in Jenkins pipeline is used to tell Jenkins when to start a job automatically. You add it inside the pipeline block under triggers. For example, cron('H/15 * * * *') schedules the job to run every 15 minutes. Jenkins watches the trigger and when the time matches, it fires the job. The job status changes from idle to running, then success after the build stage completes. If the trigger condition is not met, the job stays idle waiting. This automation helps run jobs on schedule without manual intervention.

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

  1. Step 1: Understand the role of triggers

    The triggers directive is used to start Jenkins jobs automatically without manual intervention.
  2. 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.
  3. Final Answer:

    To start jobs automatically based on time or events -> Option C
  4. 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

  1. Step 1: Understand cron syntax in Jenkins

    Jenkins cron uses five fields: minute hour day month weekday. '0 0 * * *' means midnight every day.
  2. 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.
  3. Final Answer:

    triggers { cron('0 0 * * *') } -> Option A
  4. 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?
triggers {
  upstream(upstreamProjects: 'BuildApp', threshold: hudson.model.Result.SUCCESS)
}
medium
A. The job triggers manually only
B. The job triggers every minute
C. The job triggers when code is pushed to SCM
D. The job triggers when the 'BuildApp' job completes successfully

Solution

  1. Step 1: Understand the upstream trigger

    The upstream trigger starts this job when the specified upstream job finishes with the given result.
  2. Step 2: Analyze the parameters

    upstreamProjects: 'BuildApp' means the job named 'BuildApp' triggers this job. threshold SUCCESS means only on successful completion.
  3. Final Answer:

    The job triggers when the 'BuildApp' job completes successfully -> Option D
  4. 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

  1. Step 1: Check cron field ranges

    Cron fields are minute (0-59), hour (0-23), day, month, weekday. '25' in hour field is invalid.
  2. Step 2: Validate placement and field count

    Cron is correctly placed in triggers and uses five fields, which is standard in Jenkins.
  3. Final Answer:

    The hour field '25' is invalid in cron syntax -> Option A
  4. 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

  1. Step 1: Understand pollSCM usage

    pollSCM triggers the job every specified interval but only if SCM changes are detected.
  2. Step 2: Analyze the cron expressions

    'H/15 * * * *' means every 15 minutes with hashing for load balancing. cron triggers regardless of SCM changes.
  3. Final Answer:

    triggers { pollSCM('H/15 * * * *') } -> Option B
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard