API Webhook to Jenkins hook settings can be updated via the Atlassian Bitbucket API via the following endpoint:
/rest/api/latest/projects/{0}/repos/{1}/settings/hooks/com.nerdwin15.stash-stash-webhook-jenkins:jenkinsPostReceiveHook/enabled
For more on the Bitbucket REST API for updating and changing hooks, read here .
We've created a sample python script to automate updating settings. It reads in a settings.json file which you can download here  or below.
To change the webhook source, add jenkinsEndPointType to the json setting with one of the following values:
Bitbucket Branch Source Plugin
com.nerdwin15.stash.webhook.notifier.BitbucketSourceNotifier
Git Plugin
com.nerdwin15.stash.webhook.notifier.GitPluginNotifier
Direct Jobs Trigger
com.nerdwin15.stash.webhook.notifier.DirectJobsNotifier
Example scripts Example of script for initial configuration
configure-webhook-jenkins.py #!/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 update Webhook To Bitbucket settings examples.')
parser.add_argument('--bitbucket_url', type=str, help='Url for Bitbucket instance.',
default='http://localhost:7990/bitbucket')
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('--settings', type=str, help='Path to the settings file. JSON formatted.',
default='settings.json')
args = parser.parse_args()
bb_url = args.bitbucket_url
username = args.username
password = args.password
project_key = args.project
repository_slug = args.repository
settings_path = args.settings
end_point = "/rest/api/latest/projects/{0}/repos/{1}/settings/hooks/com.nerdwin15.stash-stash-webhook-jenkins" \
"%3AjenkinsPostReceiveHook/enabled".format(project_key, repository_slug)
settings_file = open(settings_path, 'r')
try:
settings = settings_file.read()
try:
j = json.loads(settings) # just to validate
except:
print "Invalid JSON: %s" % settings
sys.exit(1)
finally:
settings_file.close()
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("PUT", url_obj.path + end_point, body=settings, headers=headers)
r1 = connection.getresponse()
print r1.status, r1.reason, r1.getheaders()
data1 = r1.read()
print data1
finally:
connection.close()
settings.json {
"branchOptions": "whitelist",
"branchOptionsBranches": "master, develop, feature-1",
"cloneType": "custom",
"cloneType2": "custom",
"gitRepoUrl": "http://172.17.0.1:7990/bitbucket/scm/project_1/rep_1.git",
"gitRepoUrl2": "http://172.17.0.1:7990/bitbucket/scm/project_1/rep_1.git",
"ignoreCommitters": "admin, user",
"jenkinsBase": "http://localhost:8080",
"jenkinsBase2": "https://localhost:8083",
"ignoreCerts": false,
"omitHashCode": false,
"omitBranchName": false,
"omitTriggerBuildButton": false
}
Example of script to modify settings Parameter details disabledEvents
is a comma-separated list of class names of events to ignore. Supported class names are listed below, with links to the corresponding Bitbucket documentation explaining when each event is triggered:
Â