Skip to content

Instantly share code, notes, and snippets.

@whymarrh
Last active August 29, 2015 14:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save whymarrh/5ef3908f5b6728db2401 to your computer and use it in GitHub Desktop.
Save whymarrh/5ef3908f5b6728db2401 to your computer and use it in GitHub Desktop.
Rudimentary Jenkins + HipChat integration
import argparse
import requests
import json
ROOM_ID = ''
TOKEN = ''
HIPCHAT_ROOM_URL = 'https://api.hipchat.com/v2/room/{0}/notification'
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument('href')
parser.add_argument('name')
parser.add_argument('build_number', type=int)
parser.add_argument('status', choices=['SUCCESS', 'UNSTABLE', 'FAILURE'])
args = parser.parse_args()
message = '<a href="{0}">{1} build #{2}</a>'.format(args.href,
args.name,
args.build_number)
colors = {
'FAILURE': 'red',
'UNSTABLE': 'yellow',
'SUCCESS': 'green'
}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer {0}'.format(TOKEN)
}
payload = {
'color': colors[args.status],
'message': message,
'message_format': 'html'
}
r = requests.post(HIPCHAT_ROOM_URL.format(ROOM_ID),
data=json.dumps(payload),
headers=headers)
assert r.status_code == requests.codes.no_content
def env = manager.build.getEnvironment(manager.listener)
def build_url = env['BUILD_URL']
def job_name = manager.build.project.getName()
def build_number = manager.build.number
def result = manager.build.result
"python \"C:\\Jenkins\\hipchat_notify.py\" \"${build_url}\" \"${job_name}\" \"${build_number}\" \"${result}\"".execute()

Jenkins + HipChat

Want Jenkins to bother everyone in a HipChat room when a build happens? If so:

  1. Install and configure Jenkins (assumed)
  2. Install the Groovy Postbuild Plugin
  3. Copy the Groovy script contents into a post build step (modify Python script path as needed)
  4. Modify the Python script to include the correct room ID and access token
  5. ???
  6. Profit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment