Bird
Raised Fist0
Jenkinsdevops~10 mins

Webhook triggers from GitHub/GitLab in Jenkins - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Webhook triggers from GitHub/GitLab
Code pushed to GitHub/GitLab
↓
Webhook sends HTTP POST to Jenkins
↓
Jenkins receives webhook
↓
Jenkins matches webhook to job trigger
↓
Jenkins starts the job
↓
Job runs build/test/deploy steps
↓
Job completes and reports status
When code is pushed, GitHub/GitLab sends a webhook to Jenkins, which triggers the matching job to run automatically.
Execution Sample
Jenkins
pipeline {
  agent any
  triggers {
    githubPush()
  }
  stages {
    stage('Build') { steps { echo 'Building...' } }
  }
}
This Jenkins pipeline triggers automatically when GitHub sends a push webhook, then runs the Build stage.
Process Table
StepEventJenkins ActionJob StatusOutput
1Code pushed to GitHubWebhook sent to JenkinsN/AHTTP POST sent
2Jenkins receives webhookMatches job triggerN/ATrigger matched: githubPush()
3Job startsBuild stage runsRunningEcho: Building...
4Job completesReports successSuccessBuild finished successfully
5Waiting for next webhookIdleIdleReady for next push
💡 Job completes after build stage, Jenkins waits for next webhook event
Status Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4Final
Webhook ReceivedFalseTrueTrueTrueTrueFalse
Job StatusIdleIdleTriggeredRunningSuccessIdle
Key Moments - 3 Insights
Why does Jenkins start the job only after receiving the webhook?
Because Jenkins waits for the webhook HTTP POST from GitHub/GitLab to know when to trigger the job, as shown in execution_table step 2.
What happens if the webhook does not match any job trigger?
Jenkins ignores the webhook and does not start any job, so the job status stays Idle, as no trigger matched in step 2.
Why is the job status 'Running' during the build stage?
Because Jenkins is actively executing the build steps after trigger, as shown in step 3 where the job status changes to Running.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the job status at step 3?
ARunning
BSuccess
CIdle
DTriggered
💡 Hint
Check the 'Job Status' column in execution_table row for step 3
At which step does Jenkins match the webhook to the job trigger?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the 'Jenkins Action' column in execution_table to find when matching happens
If the webhook was never received, what would the final job status be?
ARunning
BSuccess
CIdle
DTriggered
💡 Hint
Refer to variable_tracker for 'Webhook Received' and 'Job Status' changes
Concept Snapshot
Webhook triggers from GitHub/GitLab:
- GitHub/GitLab sends HTTP POST webhook on code push
- Jenkins listens and matches webhook to job triggers
- Matching triggers start Jenkins jobs automatically
- Jobs run build/test/deploy stages
- Jenkins reports job status after completion
Full Transcript
When a developer pushes code to GitHub or GitLab, these platforms send a webhook, which is a simple HTTP POST message, to Jenkins. Jenkins listens for these webhooks and checks if any job is configured to trigger on such events. If a match is found, Jenkins starts the job automatically. The job runs its defined stages like build or test. After the job finishes, Jenkins reports the status and waits for the next webhook. This process automates running jobs right after code changes without manual intervention.

Practice

(1/5)
1. What is the main purpose of setting up a webhook trigger in Jenkins for GitHub or GitLab?
easy
A. To manually run Jenkins jobs from the Jenkins dashboard
B. To automatically start Jenkins jobs when code is pushed or pull requests are created
C. To send email notifications after a Jenkins job completes
D. To backup Jenkins configuration files to GitHub or GitLab

Solution

  1. Step 1: Understand webhook triggers

    Webhook triggers connect GitHub/GitLab events to Jenkins jobs, starting them automatically.
  2. Step 2: Identify the main use case

    The main use is to start Jenkins jobs automatically on code pushes or pull requests.
  3. Final Answer:

    To automatically start Jenkins jobs when code is pushed or pull requests are created -> Option B
  4. Quick Check:

    Webhook triggers = automatic job start [OK]
Hint: Webhook triggers start jobs automatically on code changes [OK]
Common Mistakes:
  • Confusing webhook triggers with manual job runs
  • Thinking webhooks send emails
  • Assuming webhooks backup Jenkins files
2. Which Jenkins pipeline syntax correctly sets up a GitHub webhook trigger to start a job on push events?
easy
A. triggers { cron('H/5 * * * *') }
B. triggers { gitlabPush() }
C. triggers { githubPush() }
D. triggers { genericWebhook() }

Solution

  1. Step 1: Recall GitHub webhook trigger syntax

    Jenkins uses genericWebhook() inside triggers block for generic webhook triggers, including GitHub.
  2. Step 2: Eliminate incorrect options

    gitlabPush() is not a valid Jenkins trigger; githubPush() is not a standard Jenkins trigger; cron() is for scheduled jobs.
  3. Final Answer:

    triggers { genericWebhook() } -> Option D
  4. Quick Check:

    Generic webhook trigger = genericWebhook() [OK]
Hint: Use genericWebhook() for GitHub webhook triggers in Jenkinsfile [OK]
Common Mistakes:
  • Using gitlabPush() which does not exist
  • Confusing genericWebhook() with GitHub trigger
  • Using cron for webhook triggers
3. Given this Jenkins pipeline snippet, what will happen when a push is made to the GitHub repository?
pipeline {
  agent any
  triggers {
    genericWebhook()
  }
  stages {
    stage('Build') {
      steps {
        echo 'Building project'
      }
    }
  }
}
medium
A. The job will start automatically and print 'Building project'
B. The job will not start automatically; manual trigger needed
C. The job will fail due to syntax error in triggers
D. The job will start but skip the Build stage

Solution

  1. Step 1: Analyze the triggers block

    The genericWebhook() trigger means the job starts automatically on webhook events.
  2. Step 2: Check the pipeline stages

    The Build stage prints 'Building project' when the job runs.
  3. Final Answer:

    The job will start automatically and print 'Building project' -> Option A
  4. Quick Check:

    genericWebhook() triggers automatic build [OK]
Hint: genericWebhook() triggers auto build on webhook event [OK]
Common Mistakes:
  • Assuming manual trigger is needed
  • Thinking triggers block causes syntax error
  • Believing Build stage is skipped
4. A Jenkins job configured with GitLab webhook trigger does not start when code is pushed. Which is the most likely cause?
medium
A. The webhook URL in GitLab is incorrect or missing
B. The Jenkinsfile uses githubPush() trigger instead of GitLab webhook plugin
C. The Jenkins server is offline
D. The GitLab repository has no commits

Solution

  1. Step 1: Check webhook configuration in GitLab

    If the webhook URL is wrong or missing, GitLab cannot notify Jenkins to start the job.
  2. Step 2: Consider other causes

    Using githubPush() in Jenkinsfile won't trigger GitLab events; Jenkins offline stops all jobs; no commits means no push events.
  3. Final Answer:

    The webhook URL in GitLab is incorrect or missing -> Option A
  4. Quick Check:

    Webhook URL correct = trigger works [OK]
Hint: Verify webhook URL in GitLab settings first [OK]
Common Mistakes:
  • Ignoring webhook URL correctness
  • Confusing GitHub and GitLab triggers
  • Not checking Jenkins server status
5. You want to trigger a Jenkins job from GitLab using the Generic Webhook Trigger plugin. Which configuration step is essential to ensure the job starts only on push events?
hard
A. Use githubPush() trigger in Jenkinsfile and set GitLab webhook URL
B. Schedule the Jenkins job with cron to poll GitLab every 5 minutes
C. Configure the webhook in GitLab to send push event payloads and set the Generic Webhook Trigger to filter on push event type
D. Add a post-commit hook in GitLab that manually starts Jenkins jobs

Solution

  1. Step 1: Set GitLab webhook to send push event payloads

    GitLab must be configured to send push event data to Jenkins webhook URL.
  2. Step 2: Configure Generic Webhook Trigger plugin filters

    In Jenkins, set the plugin to trigger only when the payload indicates a push event.
  3. Final Answer:

    Configure the webhook in GitLab to send push event payloads and set the Generic Webhook Trigger to filter on push event type -> Option C
  4. Quick Check:

    Webhook + filter on push event = correct trigger [OK]
Hint: Filter webhook payload for push events in Jenkins plugin [OK]
Common Mistakes:
  • Using githubPush() for GitLab triggers
  • Relying on polling instead of webhooks
  • Manually triggering jobs instead of webhook automation
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