Bird
Raised Fist0
Jenkinsdevops~5 mins

Webhook triggers from GitHub/GitLab in Jenkins - Commands & Configuration

Choose your learning style10 modes available
Introduction
When you want Jenkins to start a build automatically after you push code to GitHub or GitLab, you use webhook triggers. This saves you from manually starting builds and keeps your project up to date.
When you want Jenkins to build your project immediately after code changes are pushed to GitHub or GitLab.
When you want to automate testing and deployment after every commit without manual intervention.
When you want to keep your Jenkins builds in sync with the latest code changes in your repository.
When you want to reduce delays between code updates and build feedback.
When you want to trigger Jenkins pipelines from pull requests or merge requests automatically.
Config File - Jenkinsfile
Jenkinsfile
pipeline {
  agent any
  triggers {
    githubPush()
  }
  stages {
    stage('Build') {
      steps {
        echo 'Building the project...'
      }
    }
  }
}

This Jenkinsfile defines a simple pipeline that runs on any available agent.

The triggers { githubPush() } block tells Jenkins to start this pipeline automatically when it receives a push event from GitHub via webhook.

The stages section defines the build steps, here just printing a message.

Commands
This command simulates a GitHub webhook POST request to Jenkins to trigger the build. In real use, GitHub sends this automatically when you push code.
Terminal
curl -X POST http://jenkins.example.com/github-webhook/
Expected OutputExpected
HTTP/1.1 200 OK Content-Type: text/plain OK
This command manually triggers the Jenkins pipeline named 'my-pipeline' using Jenkins CLI, useful for testing or manual runs.
Terminal
java -jar jenkins-cli.jar -s http://jenkins.example.com build my-pipeline
Expected OutputExpected
[my-pipeline] Started by user admin [my-pipeline] Building in workspace /var/lib/jenkins/workspace/my-pipeline [my-pipeline] Finished: SUCCESS
→
-s - Specifies the Jenkins server URL
This command simulates a GitLab webhook POST request to Jenkins to trigger the build when code is pushed to the main branch.
Terminal
curl -X POST -H 'Content-Type: application/json' --data '{"ref":"refs/heads/main"}' http://jenkins.example.com/gitlab-webhook/
Expected OutputExpected
HTTP/1.1 200 OK Content-Type: text/plain OK
→
-H 'Content-Type: application/json' - Sets the content type header to JSON
→
--data - Sends the JSON payload with branch information
This command checks the status and details of the last build of the 'my-pipeline' job in Jenkins.
Terminal
curl http://jenkins.example.com/job/my-pipeline/lastBuild/api/json
Expected OutputExpected
{ "result": "SUCCESS", "building": false, "number": 15, "timestamp": 1686000000000 }
Key Concept

If you remember nothing else from this pattern, remember: Jenkins can automatically start builds when GitHub or GitLab sends a webhook after code changes.

Common Mistakes
Not configuring the webhook URL correctly in GitHub or GitLab.
If the webhook URL is wrong, Jenkins never receives the trigger and builds won't start automatically.
Set the webhook URL exactly to your Jenkins webhook endpoint, for example, http://jenkins.example.com/github-webhook/ for GitHub.
Not enabling the webhook trigger in the Jenkins pipeline configuration or Jenkinsfile.
Without the trigger configured, Jenkins ignores webhook calls and does not start builds automatically.
Add the trigger block like 'triggers { githubPush() }' in your Jenkinsfile or enable webhook triggers in the job settings.
Using the wrong webhook event type or missing required permissions in GitHub/GitLab.
If the webhook is not set to send push events or lacks permissions, Jenkins won't get notified properly.
Configure the webhook to send push events and ensure Jenkins has access permissions to the repository.
Summary
Configure Jenkins pipelines with webhook triggers to start builds automatically on code pushes.
Set the correct webhook URL in GitHub or GitLab to notify Jenkins of changes.
Use Jenkins CLI or API to manually trigger or check build status when needed.

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