/
Trigger Jenkins via Webhook REST API
Trigger Jenkins via Webhook REST API
Currently, you can only remotely trigger builds that are connected to a pull request.
API
Use Webhook to Jenkins to trigger Jenkins via using its REST API via the following endpoint:
/rest/jenkins/latest/projects/{BITBUCKET_PROJECT_SLUG}/repos/{BITBUCKET_REPOSITORY_SLUG}/triggerJenkins?pr_id={PULL_REQUEST_ID}
We've created a sample python script that updates the settings for you. Refer to the Python example.
The REST API requires the following inputs
BITBUCKET_PROJECT_SLUG | The Bitbucket project string id |
BITBUCKET_REPOSITORY_SLUG | The Bitbucket repository string id |
PULL_REQUEST_ID | The ID of the pull request |
Python Example
#!/usr/bin/python
import httplib
import sys
import json
import argparse
from urlparse import urlparse
from base64 import b64encode
parser = argparse.ArgumentParser(description='Sample script to trigger jenkins via plugin api.')
parser.add_argument('--bitbucket-url', type=str, help='Url for Bitbucket instance.',
default='http://localhost:7990/bitbucket', dest='bitbucket_url')
parser.add_argument('--username', type=str, help='Username for user with access to repository',
default='admin')
parser.add_argument('--password', type=str, help='Password for user with access to repository',
default='admin')
parser.add_argument('--project', type=str, help='Project key where repository is located',
default='PROJECT_1')
parser.add_argument('--repository', type=str, help='Repository key for the instance',
default='rep_1')
parser.add_argument('--pull-request-id', type=str, help='Pull request ID.',
default='1', dest='pull_request_id')
args = parser.parse_args()
bb_url = args.bitbucket_url
username = args.username
password = args.password
project_key = args.project
repository_slug = args.repository
pull_request_id = args.pull_request_id
end_point = "/rest/jenkins/latest/projects/{}/repos/{}/triggerJenkins?pr_id={}".format(project_key, repository_slug, pull_request_id)
url_obj = urlparse(bb_url)
headers = {
'authorization': "Basic " + b64encode(username + ':' + password),
'Content-Type': 'application/json'
}
connection = httplib.HTTPConnection(url_obj.hostname, url_obj.port)
try:
connection.request("POST", url_obj.path + end_point, headers=headers)
r1 = connection.getresponse()
print r1.status, r1.reason, r1.getheaders()
data1 = r1.read()
print data1
finally:
connection.close()
Related content
Changing settings via REST API
Changing settings via REST API
More like this
Configuring with Direct Job Trigger
Configuring with Direct Job Trigger
More like this
Send URL parameters to Jenkins
Send URL parameters to Jenkins
Read with this
Configure with Direct Job Trigger
Configure with Direct Job Trigger
More like this
Webhook to Jenkins configuration
Webhook to Jenkins configuration
Read with this
Manually trigger builds
Manually trigger builds
More like this