Webhook is a feature in the GitHub repository, that is used to trigger the URL based on GitHub repository events like Create events, Push events, and Delete events
Using this feature you can trigger the Jenkins pipeline automatically when you push a commit (any changes)
- Create events – Creating a commit, Creating a tag, Creating a branch
- Push events – Pushing a commit, Pushing a tag, Pushing a branch
- Delete events – Deleting a commit, Deleting a tag, Deleting a branch
Create Pipeline
Create a Jenkinsfile named 04-Jenkinsfile-maven-triggers-webhook inside the cicd folder
pipeline {
agent any
tools {
maven 'maven-3.6.3'
}
stages {
stage ('Build') {
steps {
sh 'mvn clean package'
}
}
}
}
If you do not have a sample Java code, follow these steps to create one
How to create a GitHub repository and push a sample Java 21 Maven Project
Push the 04-Jenkinsfile-maven-triggers-webhook file to the GitHub repository
Create a Jenkins Pipeline named 04-hello-world-trigger-webhook referring to your GitHub repository and enter Script Path as cicd/04-Jenkinsfile-maven-triggers-webhook
Click on Configure

Under Build Triggers enable the GitHub hook trigger for GITScm polling and click on Save

Enable Webhook in GitHub repository
Go to your GitHub repository, click on Settings

Click on Webhooks

Click on Add webhook

Enter your JENKINS_URL/github-webhook/ in Payload URL
E.g. http://20.197.20.110:8080/github-webhook/
Under Content type choose application/json

Click Disable (not recommended) and click on Add webhook
If your Jenkins URL starts with https, you should click Enable SSL verification

Wait for a couple of seconds, refresh the page, and you should see a green tick

Make a change in 04-hello-world-trigger-webhook or any File, and commit the changes to trigger the Pipeline automatically
Change the stage name to Build Maven and commit the changes

Commit the changes

The pipeline is triggered automatically, once the change is committed

You can verify, who triggered this pipeline by verifying the logs

Enable GitHub Webhook from Jenkinsfile
You have enabled the GitHub hook trigger for GITScm polling from Jenkins Pipeline GUI. You can also do the same from Jenkinsfile using the triggers block
Previously you have enabled the GitHub hook trigger for GITScm polling from Jenkins Pipeline GUI. You can also enable the GitHub hook trigger for GITScm polling option and trigger the Jenkins Pipeline using githubPush under the triggers block from Jenkinsfile

Uncheck the option GitHub hook trigger for GITScm polling from Pipeline and click on Save
Let’s enable it from Jenkinfile

Add triggers block in Jenkinsfile 04-hello-world-trigger-webhook
githubPush() inside the triggers block will enable the GitHub hook trigger for GITScm polling in the pipeline
pipeline {
agent any
triggers {
githubPush()
}
tools {
maven 'maven-3.6.3'
}
stages {
stage ('Build Maven') {
steps {
sh 'mvn clean package'
}
}
}
}
git diff
OUTPUT:
vignesh ~/code/devopspilot1/hello-world-java/cicd [main] $ git diff
diff --git a/cicd/04-Jenkinsfile-maven-triggers-webhook b/cicd/04-Jenkinsfile-maven-triggers-webhook
index 1801267..c343b6b 100644
--- a/cicd/04-Jenkinsfile-maven-triggers-webhook
+++ b/cicd/04-Jenkinsfile-maven-triggers-webhook
@@ -1,5 +1,8 @@
pipeline {
agent any
+ triggers {
+ githubPush()
+ }
tools {
maven 'maven-3.6.3'
}
Push the changes to your GitHub repository
Build the pipeline, and check the pipeline configuration now GitHub hook trigger for GITScm polling should be enabled
