2013-07-29 23:03:31 +02:00
{% extends "zerver/portico.html" %}
2013-02-06 20:25:04 +01:00
{# API information page #}
{% block portico_content %}
< div class = "row-fluid" >
< div class = "span8" >
2013-04-11 19:39:54 +02:00
< h1 > Integrations< / h1 >
< ul class = "breadcrumb" >
< li > < a href = "/" > Home< / a > < span class = "divider" > /< / span > < / li >
< li class = "active" > Integrations< / li >
< / ul >
2013-02-06 20:25:04 +01:00
2013-02-07 00:26:51 +01:00
< p > The English poet John Donne once wrote that "no man is an
island", and we feel the same about software. No system exists in
2013-07-10 22:31:14 +02:00
complete isolation, so we've made it easy for Zulip to connect to
2013-02-07 00:26:51 +01:00
the services you already use.< / p >
< p > With the integrations below, your team can stay up-to-date on
code changes, issue tickets, build system results, and much
more. So ask not for whom the notification tolls— it tolls
for thee! (Or for a team member of yours, I guess.)< / p >
2013-02-06 20:25:04 +01:00
< h3 id = "services" > Services with integrations< / h3 >
< ul >
2013-08-30 21:55:36 +02:00
< li > < a href = "#basecamp" > Basecamp< / a > < / li >
2013-04-01 23:57:42 +02:00
< li > < a href = "#beanstalk" > Beanstalk< / a > < / li >
2013-08-16 02:35:45 +02:00
< li > < a href = "#bitbucket" > Bitbucket< / a > < / li >
2013-03-19 21:22:50 +01:00
< li > < a href = "#capistrano" > Capistrano< / a > < / li >
2013-02-06 20:25:04 +01:00
< li > < a href = "#git" > Git< / a > < / li >
< li > < a href = "#github" > GitHub< / a > < / li >
2013-02-10 00:35:06 +01:00
< li > < a href = "#jenkins" > Jenkins (or Hudson)< / a > < / li >
2013-03-29 22:57:10 +01:00
< li > < a href = "#jira" > Jira (hosted or v5.2+)< / a > < / li >
< li > < a href = "#jira-plugin" > Jira (locally installed)< / a > < / li >
2013-02-06 20:25:04 +01:00
< li > < a href = "#nagios" > Nagios< / a > < / li >
2013-07-23 21:50:29 +02:00
< li > < a href = "#newrelic" > New Relic< / a > < / li >
2013-02-06 20:25:04 +01:00
< li > < a href = "#pivotal" > Pivotal Tracker< / a > < / li >
< li > < a href = "#svn" > Subversion< / a > < / li >
< li > < a href = "#trac" > Trac< / a > < / li >
< li > < a href = "#trello" > Trello< / a > < / li >
2013-07-23 17:21:25 +02:00
{% comment %}
2013-02-06 20:25:04 +01:00
< li > < a href = "#twitter" > Twitter< / a > < / li >
{% endcomment %}
2013-07-11 16:45:53 +02:00
< li > ...and more coming soon! < a href = "mailto:support@zulip.com?subject=Integration%20request" > Email us< / a > with requests!< / li >
2013-02-06 20:25:04 +01:00
< / ul >
2013-08-02 19:46:48 +02:00
< h3 > Getting started< / h3 >
< p > First, create a bot from your < a href = "/#settings"
target="_blank">settings page< / a > . Look for the bot's email and
API key: < img class = "screenshot"
src="/static/images/api/bot-key.png" />< / p >
< p > The bot email address doesn't actually need to be a valid email
address.< / p >
< p > Then, follow the integration instructions below for the service
you are interested in. It's as easy as that! If you run into any
trouble, don't hesitate
to < a href = "mailto:support@zulip.com?subject=Integration%20question" > email
us< / a > .< / p >
2013-08-30 21:55:36 +02:00
{#--------------------------------------------------------------------#}
< div id = "basecamp" class = "integration" >
< h4 > Basecamp< / h4 >
< p > First, create the stream you'd like to use for Basecamp notifications,
and subscribe all interested parties to this stream. We recommend the
name < code > basecamp< / code > .< / p >
< p > Next, download and install our < a href = "/api" > Python
bindings and example scripts< / a > on the computer you'd like to run this mirroring script from.< / p >
< p > You will need your Basecamp account ID. You can find it as a sequence of numbers in the URL when you log in:< / p >
< img class = "screenshot" src = "/static/images/integrations/basecamp/001.png" >
< p > Edit the Basecamp and Zulip credentials in < code > integrations/basecamp/zulip_basecamp_config.py< / code > using
your favorite editor:
< div class = "codehilite" >
< pre > < span class = "n" > BASECAMP_ACCOUNT_ID< / span > < span class = "o" > =< / span > < span class = "s" > "1234567"< / span >
< span class = "n" > BASECAMP_USERNAME< / span > < span class = "o" > =< / span > < span class = "s" > "foo@example.com"< / span >
< span class = "n" > BASECAMP_PASSWORD< / span > < span class = "o" > =< / span > < span class = "s" > "p455w0rd"< / span >
< span class = "n" > ZULIP_USER< / span > < span class = "o" > =< / span > < span class = "s" > "basecamp-bot@example.com"< / span >
< span class = "n" > ZULIP_API_KEY< / span > < span class = "o" > =< / span > < span class = "s" > "0123456789abcdef0123456789abcdef"< / span > < / pre >
< / div >
< p > Before your first run of the script, you may optionally choose to
configure it to mirror some number of hours of Basecamp activity:< / p >
< div class = "codehilite" >
< pre > < span class = "n" > BASECAMP_INITIAL_HISTORY_HOURS< / span > < span class = "o" > =< / span > < span class = "s" > 10< / span > < / pre >
< / div >
< p > Now, simply run the < code > api/integrations/basecamp/zulip_basecamp_mirror< / code > script.
If needed, this script may be restarted, and it will automatically resume from when
it was last running.< / p >
< p > < b > Congratulations! You're done!< / b > < br / > Whenever you create a new project,
calendar event, comment, message, or more, you'll get a notification in your selected stream
with the project or calendar as the topic.
< img class = "screenshot" src = "/static/images/integrations/basecamp/002.png" >
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
2013-04-01 23:57:42 +02:00
{#--------------------------------------------------------------------#}
< div id = "beanstalk" class = "integration" >
< h4 > Beanstalk< / h4 >
2013-08-26 22:58:16 +02:00
< p > Zulip supports both SVN and Git notifications from Beanstalk.< / p >
< p > First, create the stream < code > commits< / code > and subscribe all
interested parties to this stream.< / p >
< p > Next, in the Beanstalk web application, go to the Setup page and choose the Integrations tab.
2013-05-29 17:55:59 +02:00
Choose the < code > Webhooks< / code > integration from the list presented. Make sure to replace the < code > @< / code > in the bot's email address with < code > %40< / code > ,
2013-04-02 23:31:48 +02:00
as Beanstalk's website will incorrectly refuse to parse a username containing a < code > @< / code > .< / p >
2013-04-01 23:57:42 +02:00
2013-07-24 23:53:39 +02:00
< p > In the URL field, enter < code > https://bot_email:bot_api_key@api.zulip.com/v1/external/beanstalk< / code > :< / p >
2013-04-01 23:57:42 +02:00
< img class = "screenshot" src = "/static/images/integrations/beanstalk/001.png" >
< p > < b > Congratulations! You're done!< / b > < br / > Whenever you do a
deployment, you'll get an automated notification that looks like
this:< / p >
< img class = "screenshot" src = "/static/images/integrations/beanstalk/002.png" >
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
2013-08-16 02:35:45 +02:00
{#--------------------------------------------------------------------#}
< div id = "bitbucket" class = "integration" >
< h4 > Bitbucket< / h4 >
2013-08-26 22:58:16 +02:00
< p > Zulip supports both Git and Mercural notifications from Bitbucket.< / p >
< p > First, create the stream you'd like to use for Bitbucket notifications,
and subscribe all interested parties to this stream. The integration will
use the default stream < code > commits< / code > if no stream is supplied in the
hook; you still need to create the stream even if you are using this
default.< / p >
< p > Next, from your repository's web page, go to the Administraion page and choose Hooks on the left-hand side.
2013-08-16 02:35:45 +02:00
Choose the < code > POST< / code > hook from the list presented and click "Add hook." Make sure to replace the < code > @< / code > in the bot's email address with < code > %40< / code > ,
as Bitbucket will not execute the hook if the username contains a < code > @< / code > .< / p >
2013-08-21 19:10:22 +02:00
< p > In the URL field, enter < code > https://bot_email:bot_api_key@api.zulip.com/v1/external/bitbucket< / code > :< / p >
2013-08-16 02:35:45 +02:00
< img class = "screenshot" src = "/static/images/integrations/bitbucket/001.png" >
2013-08-26 22:58:16 +02:00
< p > By default, notifications are sent to the < code > commits< / code > stream.
To send notifications to a different stream,
append < code style = "white-space: nowrap;" > ?stream=stream_name< / code > to
the URL.< / p >
2013-08-21 19:10:22 +02:00
2013-08-16 02:35:45 +02:00
< p > < b > Congratulations! You're done!< / b > < br / > Whenever you push code to your repository,
you'll get an automated notification that looks like this:< / p >
< img class = "screenshot" src = "/static/images/integrations/bitbucket/002.png" >
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
{#--------------------------------------------------------------------#}
2013-03-19 21:22:50 +01:00
< div id = "capistrano" class = "integration" >
< h4 > Capistrano< / h4 >
< p > First, download and install our < a href = "/api" > Python
bindings and example scripts< / a > on your Capistrano server.
2013-08-07 17:52:53 +02:00
Once you've done that, you'll use the < code > zulip-send< / code >
2013-03-19 21:22:50 +01:00
utility to notify you when certain events happen.< / p >
2013-07-10 22:31:14 +02:00
< p > Here's some example code for sending a Zulip notification
2013-03-19 21:22:50 +01:00
after a deployment has completed:< / p >
2013-03-26 18:12:00 +01:00
< div class = "codehilite" > < pre > < span class = "n" > after< / span > < span class = "s1" > 'deploy'< / span > < span class = "p" > ,< / span > < span class = "s1" > 'notify:humbug'< / span >
2013-03-19 21:22:50 +01:00
< span class = "n" > namespace< / span > < span class = "ss" > :notify< / span > < span class = "k" > do< / span >
2013-07-10 22:31:14 +02:00
< span class = "n" > desc< / span > < span class = "s2" > "Post a message to Zulip that we've deployed"< / span >
2013-03-19 21:22:50 +01:00
< span class = "n" > task< / span > < span class = "ss" > :humbug< / span > < span class = "k" > do< / span >
2013-07-10 22:31:14 +02:00
< span class = "c1" > # this will post to Zulip as the user defined in
2013-08-07 17:36:46 +02:00
# ~/.zuliprc if you omit --user and --api-key< / span >
2013-08-07 17:52:53 +02:00
< span class = "n" > run_locally< / span > < span class = "s2" > "echo ':beers: I just deployed to < / span > < span class = "si" > #{< / span > < span class = "n" > stage< / span > < span class = "si" > }< / span > < span class = "s2" > ! :beers:' | zulip-send \
2013-05-29 17:55:59 +02:00
--user capistrano-bot@example.com --api-key a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5 \
--stream commits --subject deployments || true"< / span >
2013-03-19 21:22:50 +01:00
< span class = "k" > end< / span >
< span class = "k" > end< / span >
< / pre > < / div >
< p > Some notes:< / p >
< ul >
2013-08-07 17:36:46 +02:00
< li > If you prefer not to use < code > --user< / code > and < code > --api-key< / code > above, you can fill out < code > ~/.zuliprc< / code > on your Capistrano
2013-05-29 17:55:59 +02:00
machine. For instructions on how to write that file, see < a href = "/api" > the API page< / a > .< / li >
2013-03-26 18:12:00 +01:00
< li > You may need to change the < code > deploy< / code > above to
another step of your deployment process, if you'd like the
notification to fire at a different time.< / li >
2013-03-19 21:22:50 +01:00
< / ul >
2013-06-19 23:46:11 +02:00
< em > < / em >
2013-03-19 21:22:50 +01:00
< p > < b > Congratulations! You're done!< / b > < br / > Whenever you do a
deployment, you'll get an automated notification that looks like
this:< / p >
< img class = "screenshot" src = "/static/images/integrations/capistrano/001.png" >
< p > < small > Thanks to Wes of TurboVote for < a href = "https://gist.github.com/cap10morgan/5100822" > submitting this integration< / a > !< / small > < / p >
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
2013-02-15 23:01:55 +01:00
{#--------------------------------------------------------------------#}
< div id = "git" class = "integration" >
< h4 > Git< / h4 >
< p > First, download and install our < a href = "/api" > Python
bindings and example scripts< / a > on your Git server.< / p >
2013-08-26 22:58:16 +02:00
< p > Next, create the stream you'd like to use for Git notifications, and
subscribe all interested parties to this stream. The integration will use
the default stream < code > commits< / code > if no stream is supplied in the
hook; you still need to create the stream even if you are using this
default.< / p >
2013-08-07 17:55:22 +02:00
< p > Next, open < code > integrations/git/zulip_git_config.py< / code >
2013-02-15 23:01:55 +01:00
in your favorite editor, and change the following lines to
specify the email address and API key for your Git bot:< / p >
2013-08-07 18:26:11 +02:00
< div class = "codehilite" > < pre > < span class = "n" > ZULIP_USER< / span > < span class = "o" > =< / span > < span class = "s" > "git-bot@example.com"< / span >
< span class = "n" > ZULIP_API_KEY< / span > < span class = "o" > =< / span > < span class = "s" > "0123456789abcdef0123456789abcdef"< / span > < / pre > < / div >
2013-02-15 23:01:55 +01:00
< p > You can also specify which pushes will result in
notifications and to what stream the notifications will be sent
by modifying the < code > commit_notice_destination< / code > function
2013-08-07 17:55:22 +02:00
in < code > zulip_git_config.py< / code > . By default, pushes to
2013-02-15 23:01:55 +01:00
the < code > master< / code > and < code > test-post-receive< / code >
branches will result in a notification to
stream < code > commits< / code > .< / p >
2013-08-07 17:55:22 +02:00
< p > Save < code > integrations/git/zulip_git_config.py< / code > to
2013-02-15 23:01:55 +01:00
the < code > .git/hooks< / code > directory of your git
repository.< / p >
< p > Symlink
2013-08-07 18:32:51 +02:00
< code > /usr/local/share/zulip/integrations/git/post-receive< / code >
2013-02-15 23:01:55 +01:00
into the < code > .git/hooks< / code > directory of your git repository.< / p >
< p > < b > Congratulations! You're done!< / b > < br / > Whenever you make
a push to the < code > master< / code > branch of your git repository
2013-07-10 22:31:14 +02:00
(or whatever you configured above), the Zulip git plugin will
2013-02-15 23:01:55 +01:00
send an automated notification that looks like this:< / p >
< img class = "screenshot" src = "/static/images/integrations/git/001.png" >
< p > < b > Testing< / b > < br / > You can test the plugin without changing
your < code > master< / code > branch by pushing to
the < code > test-post-receive< / code > branch.< / p >
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
2013-03-19 21:22:50 +01:00
{#--------------------------------------------------------------------#}
2013-02-06 20:25:04 +01:00
< div id = "github" class = "integration" >
< h4 > GitHub< / h4 >
2013-08-26 22:58:16 +02:00
< p > First, create the stream you'd like to use for GitHub notifications,
and subscribe all interested parties to this stream. The integration will
use the default stream < code > commits< / code > if no stream is supplied in
the hook; you still need to create the stream even if you are using this
default.< / p >
< p > Next, go to your repository page and click "Settings":< / p >
2013-02-06 20:25:04 +01:00
< img src = "/static/images/integrations/github/001.png" >
< p > From there, select "Service Hooks":< / p >
< img src = "/static/images/integrations/github/002.png" >
2013-02-06 23:12:25 +01:00
< p > Select "Humbug" from the list, fill in the API key and email
address for your bot, check the "active" checkbox, and pick
"Update settings":< / p >
2013-02-06 20:25:04 +01:00
< img src = "/static/images/integrations/github/003.png" >
< p > < b > Congratulations! You're done!< / b > < br / > When people push
to your repository, you'll see a commit message like the
2013-02-10 00:35:31 +01:00
following, to the stream < code > commits< / code > with a subject that matches the repository name (in this case "humbug-test"):< / p >
2013-02-06 23:12:25 +01:00
< img class = "screenshot" src = "/static/images/integrations/github/004.png" >
2013-02-06 20:25:04 +01:00
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
2013-02-10 00:35:06 +01:00
{#--------------------------------------------------------------------#}
< div id = "jenkins" class = "integration" >
< h4 > Jenkins (or Hudson)< / h4 >
2013-02-06 22:31:26 +01:00
2013-08-26 22:58:16 +02:00
< p > First, create the stream you'd like to use for Jenkins or Hudson
notifications, and subscribe all interested parties to this stream. We
recommend the name < code > jenkins< / code > or < code > hudson< / code > .< / p >
2013-04-18 21:56:41 +02:00
< p > < strong > Install the plugin< / strong > < br / >
Install the "Humbug" plugin by going to < code > Manage Jenkins
2013-04-05 00:15:31 +02:00
> Manage Plugins > Available< / code > , typing in "Humbug", and
clicking "Install without restart".< / p >
2013-02-10 00:35:06 +01:00
< img src = "/static/images/integrations/jenkins/001.png" >
2013-04-18 21:56:41 +02:00
< p > < strong > Configure the plugin< / strong > < br / > Once the plugin
is installed, configure it by going to < code > Manage Jenkins >
Configure System< / code > . Scroll to the section labeled "Humbug
Notification Settings", and specify your bot's email address,
2013-08-26 22:58:16 +02:00
API key, the stream receiving the notifications, and whether you'd
2013-04-18 21:56:41 +02:00
like a notification on every build, or only when the build fails
(Smart Notification).< / p >
2013-02-10 00:35:06 +01:00
2013-04-18 21:59:00 +02:00
< img src = "/static/images/integrations/jenkins/002.png" >
2013-02-10 00:35:06 +01:00
2013-04-18 21:56:41 +02:00
< p > < strong > Configure a post-build action for your project< / strong > < br / >
Once you've done that, it's time to configure one of your
2013-07-10 22:31:14 +02:00
projects to use the Zulip notification plugin. From your
2013-04-18 21:56:41 +02:00
project page, click "Configure" on the left sidebar. Scroll to
the bottom until you find the section labeled "Post-build
Actions". Click the dropdown and select "Humbug
2013-02-10 00:35:06 +01:00
Notification". It should look as below. Then click "Save".< / p >
2013-04-18 21:59:00 +02:00
< img src = "/static/images/integrations/jenkins/003.png" >
2013-02-10 00:35:06 +01:00
< p > < b > Congratulations! You're done!< / b > < br / > When your builds
fail or succeed, you'll see a commit message like the following
with a subject that matches the project name (in this case
"Humbug Test"):< / p >
2013-04-18 21:59:00 +02:00
< img class = "screenshot" src = "/static/images/integrations/jenkins/004.png" >
< img class = "screenshot" src = "/static/images/integrations/jenkins/005.png" >
2013-04-05 00:15:31 +02:00
2013-04-18 21:56:41 +02:00
< p > < b > Troubleshooting< / b > < br / >
< ul >
< li > Did you set up a post-build action for your project?< / li >
< li > Does the stream you picked (e.g. < code > jenkins< / code > ) already exist? If not, add yourself to it and try again.< / li >
< li > Are your access key and email address correct? Test them using < a href = "/api" > our curl API< / a > .
2013-07-11 16:45:53 +02:00
< li > Still stuck? Email < a href = "mailto:support@zulip.com?subject=Jenkins" > support@zulip.com< / a > .< / li >
2013-06-19 23:46:11 +02:00
< / ul >
2013-02-10 00:35:06 +01:00
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
2013-03-26 17:04:12 +01:00
{#--------------------------------------------------------------------#}
< div id = "jira" class = "integration" >
< h4 > JIRA< / h4 >
2013-08-26 22:58:16 +02:00
2013-08-28 23:48:49 +02:00
< p > < em > If you are running JIRA version 5.2 or greater, or if you are
using the hosted JIRA provided by Atlassian, you can use the built-in
web-hook support to connect to Zulip — read on. For older,
self-hosted JIRA installs, you can use our < a
href="#jira-plugin">JIRA Plugin< / a > .< / em > < / p >
2013-08-26 22:58:16 +02:00
< p > First, create the stream you'd like to use for JIRA notifications, and
subscribe all interested parties to this stream. We recommend the
name < code > jira< / code > .< / p >
2013-03-27 22:47:54 +01:00
< p > In your JIRA administration control panel, go to the Webhooks page. If you are using the OnDemand
2013-03-29 22:57:10 +01:00
hosted JIRA, follow the instructions < a href = "https://developer.atlassian.com/display/JIRADEV/JIRA+Webhooks+Overview#JIRAWebhooksOverview-WhereistheJIRAAdministrationUIforwebhooks?" >
2013-06-19 23:46:11 +02:00
on the Atlassian wiki< / a > for locating the Webhook UI.
2013-03-27 22:47:54 +01:00
< / p >
2013-04-30 23:41:46 +02:00
< p > Give your new web hook a name, and for the URL provide the following:< / p >
< p >
2013-07-24 23:53:39 +02:00
< code > https://api.zulip.com/v1/external/jira?api_key=abcdefgh& stream=jira< / code >
2013-03-27 22:47:54 +01:00
< / p >
2013-03-29 22:57:10 +01:00
2013-07-24 23:29:57 +02:00
< p > where < code > api_key< / code > is the API key of your Zulip bot,
and < code > stream< / code > is the stream name you want the
2013-08-26 22:58:16 +02:00
notifications sent to.< / p >
2013-04-30 23:41:46 +02:00
2013-07-10 22:31:14 +02:00
< p > Next, go back to Zulip and set up a stream called "jira," if it does not already exist.
2013-04-30 23:41:46 +02:00
(If you prefer your JIRA notifications to go to a stream other than "jira," then change the URL above to match it.)< / p >
2013-03-29 22:57:10 +01:00
< p > < b > Congratulations! You're done!< / b > < br / >
2013-07-10 22:31:14 +02:00
Updates from JIRA will be sent to the Zulip stream you specified in the JIRA web-hook.
2013-03-29 22:57:10 +01:00
< img class = "screenshot" src = "/static/images/integrations/jira/001.png" >
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
{#--------------------------------------------------------------------#}
< div id = "jira-plugin" class = "integration" >
2013-08-28 23:48:49 +02:00
< h4 > JIRA (Plugin)< / h4 >
< p > < em > If you are running JIRA version 5.2 or greater, or using the
hosted JIRA provided by Atlassian, we recommend using the < a
href="#jira">web-hook method< / a > above instead. This plugin
supports older versions of JIRA.< / em > < / p >
2013-08-26 22:58:16 +02:00
< p > First, create the stream you'd like to use for JIRA notifications, and
subscribe all interested parties to this stream. We recommend the
name < code > jira< / code > .< / p >
2013-03-29 22:57:10 +01:00
< h5 > Plugin mechanism< / h5 >
2013-08-26 22:58:16 +02:00
Next, download and install our < a href = "/api" > Python bindings and example scripts< / a > .
2013-03-26 17:04:12 +01:00
< p > < b > Plugin Installation< / b > < / p >
2013-03-29 22:57:10 +01:00
The JIRA integration plugin requires two JIRA plugins. Please install
2013-03-26 17:04:12 +01:00
the following plugins using the Universal Plugin Manager in your JIRA
2013-03-29 22:57:10 +01:00
installation:
2013-03-26 17:04:12 +01:00
< ul >
< li > < a href = "https://marketplace.atlassian.com/plugins/com.onresolve.jira.groovy.groovyrunner" > Script Runner Plugin< / a > < / li >
< li > < a href = "https://marketplace.atlassian.com/plugins/com.atlassian.jira.plugin.jirasslplugin" > SSL Plugin< / a > < / li >
< / ul >
< p > < b > SSL Setup< / b > < / p >
2013-07-10 22:31:14 +02:00
As Zulip is using a StartCOM SSL certificate that is not recognized by default in the Java installation shipped with JIRA,
2013-03-26 17:04:12 +01:00
you will need to tell JIRA about the certificate. Navigate to < code > Administration > System > Configure SSL< / code > and in
2013-07-24 23:53:39 +02:00
the < code > Import SSL Certificates< / code > field, enter < code > https://api.zulip.com< / code > . After clicking < code > Save Certificates< / code > ,
2013-03-26 17:04:12 +01:00
follow the on-screen instructions and restart JIRA for it to recognize the proper certificates.
2013-07-10 22:31:14 +02:00
< p > < b > Zulip Integration< / b > < / p >
2013-03-26 23:12:31 +01:00
Copy the folder < code > integrations/jira/org/< / code > (from the tarball you downloaded above) to your JIRA < code > classes< / code > folder.
2013-06-19 23:46:11 +02:00
For self-contained JIRA installations, this will be < code > atlassian-jira/WEB-INF/classes/< / code > , but this may be different in your deployment.
2013-08-07 18:28:46 +02:00
Edit the constants at the top of < code > org/zulip/jira/ZulipListener.groovy< / code >
2013-03-26 17:04:12 +01:00
and fill them with the appropriate values:
2013-08-07 18:28:46 +02:00
< div class = "codehilite" > < pre > < span class = "n" > String< / span > < span class = "n" > zulipEmail< / span > < span class = "o" > =< / span > < span class = "s2" > "jira-notifications-bot@example.com"< / span >
< span class = "n" > String< / span > < span class = "n" > zulipAPIKey< / span > < span class = "o" > =< / span > < span class = "s2" > "0123456789abcdef0123456789abcdef"< / span >
< span class = "n" > String< / span > < span class = "n" > zulipStream< / span > < span class = "o" > =< / span > < span class = "s2" > "JIRA"< / span >
2013-03-26 17:04:12 +01:00
< span class = "n" > String< / span > < span class = "n" > issueBaseUrl< / span > < span class = "o" > =< / span > < span class = "s2" > "https://jira.COMPANY.com/browse/"< / span >
2013-06-19 23:46:11 +02:00
< / pre > < / div >
2013-03-26 17:04:12 +01:00
< p > In the Administrators page, navigate to < code > Plugins > Other > Script Listeners< / code > . In the < code > Add Listener< / code > section, click on
2013-07-10 22:31:14 +02:00
the < code > Custom Listener< / code > option. Select the events you wish the Zulip integration to fire for, and the projects you wish Zulip to be notified for.
2013-08-07 18:28:46 +02:00
In the < code > Name of groovy class< / code > field, enter < code > org.zulip.jira.ZulipListener< / code > .
2013-03-26 17:04:12 +01:00
2013-07-10 22:31:14 +02:00
< p > Click < code > Add Listener< / code > , and JIRA will now notify your Zulip of changes to your issues!< / p >
2013-03-29 22:57:10 +01:00
< p > < b > Congratulations! You're done!< / b > < br / >
Updates from JIRA will be sent to the stream you've configured, as below.< / p >
2013-03-26 17:04:12 +01:00
< img class = "screenshot" src = "/static/images/integrations/jira/001.png" >
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
2013-02-13 22:19:08 +01:00
{#--------------------------------------------------------------------#}
< div id = "nagios" class = "integration" >
< h4 > Nagios< / h4 >
2013-08-26 22:58:16 +02:00
< p > First, create the stream you'd like to use for Nagios notifications,
and subscribe all interested parties to this stream. The integration will
use the default stream < code > nagios< / code > if no stream is supplied in the
configuration; you still need to create the stream even if you are using
this default.< / p >
< p > Next, download and install our < a href = "/api" > Python
2013-02-13 22:19:08 +01:00
bindings and example scripts< / a > on your Nagios server.< / p >
2013-08-07 17:36:46 +02:00
< p > Next, open < code > integrations/nagios/zuliprc.example< / code >
2013-02-13 22:19:08 +01:00
in your favorite editor, and change the following lines to
specify the email address and API key for your Nagios bot,
2013-08-07 17:36:46 +02:00
saving it to < code > /etc/nagios3/zuliprc< / code > on your Nagios
2013-02-13 22:19:08 +01:00
server:< / p >
< div class = "codehilite" > < pre > [api]
2013-05-29 17:55:59 +02:00
email=NAGIOS_BOT_EMAIL_ADDRESS
key=NAGIOS_BOT_API_KEY
2013-02-13 22:19:08 +01:00
< / pre > < / div >
2013-08-07 18:16:52 +02:00
< p > Copy < code > integrations/nagios/zulip_nagios.cfg< / code >
2013-02-13 22:19:08 +01:00
to < code > /etc/nagios3/conf.d< / code > on your Nagios server.< / p >
2013-08-07 18:16:52 +02:00
< p > Finally, add < code > zulip< / code > to the < code > members< / code >
2013-02-13 22:19:08 +01:00
list for one or more of the contact groups in the < code > CONTACT
GROUPS< / code > section
of < code > /etc/nagios3/conf.d/contacts.cfg< / code > , doing
something like:
< div class = "codehilite" > < pre > define contactgroup{
contactgroup_name admins
alias Nagios Administrators
2013-08-07 18:16:52 +02:00
members monitoring< span class = "na" > , zulip< / span >
2013-02-13 22:19:08 +01:00
}
< / pre > < / div >
Once you've done that, reload your Nagios configuration
2013-06-19 23:46:11 +02:00
using < code > /etc/init.d/nagios3 reload< / code > .
2013-02-13 22:19:08 +01:00
< p > < b > Congratulations! You're done!< / b > < br / > When your Nagios
system makes an alert, you'll see a message like the following,
to the stream < code > nagios< / code > (to change this, edit the
2013-08-07 18:16:52 +02:00
arguments to < code > nagios-notify-zulip< / code >
in < code > /etc/nagios3/conf.d/zulip_nagios.cfg< / code > ) with a
2013-02-13 22:19:08 +01:00
subject indicating the service with an issue:< / p >
< img class = "screenshot" src = "/static/images/integrations/nagios/001.png" >
< p > < b > Testing< / b > < br / > If you
have < a href = "http://nagios.sourceforge.net/docs/3_0/extcommands.html" > external
commands enabled in Nagios< / a > , you can generate a test notice
from your Nagios instance by visiting using the < code > Send
custom service notification< / code > command in
the < code > Service Commands< / code > section of any individual
service's page on your Nagios instance.< / p >
< p > < b > Troubleshooting< / b > < br / > You can confirm whether you've
2013-07-10 22:31:14 +02:00
correctly configured Nagios to run the Zulip plugin by looking
2013-08-07 18:16:52 +02:00
for < code > SERVICE NOTIFICATION< / code > lines mentioning zulip
2013-02-13 22:19:08 +01:00
in < code > /var/log/nagios3/nagios.log< / code > . You can confirm
2013-07-10 22:31:14 +02:00
whether you've configured the Zulip plugin code correctly by
2013-08-07 18:32:51 +02:00
running < code > /usr/local/share/zulip/integrations/nagios/nagios-notify-zulip< / code >
2013-02-13 22:19:08 +01:00
directly.< / p >
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
2013-04-18 17:53:45 +02:00
{#--------------------------------------------------------------------#}
< div id = "pivotal" class = "integration" >
< h4 > Pivotal Tracker< / h4 >
2013-08-26 22:58:16 +02:00
< p > Zulip supports Pivotal Tracker integration and can notify you of changes
to the stories in your Pivotal Tracker project.< / p >
< p > First, create the stream you'd like to use for Pivotal Tracker
notifications, and subscribe all interested parties to this stream. We
recommend the name < code > pivotal< / code > .< / p >
< p > Next, in the Settings page for your project, choose the Integrations
tab. Scroll down to the < code > Activity Web Hook< / code > section, and enter
the following url:< / p >
< p > < code > https://api.zulip.com/v1/external/pivotal?api_key=abcdefgh& stream=pivotal< / code > < / p >
2013-04-18 17:53:45 +02:00
2013-07-24 23:29:57 +02:00
< p > where < code > api_key< / code > is the API key of your Zulip bot,
and < code > stream< / code > is the stream name you want the
2013-08-26 22:58:16 +02:00
notifications sent to.< / p >
2013-02-13 22:19:08 +01:00
2013-04-18 17:53:45 +02:00
< img class = "screenshot" src = "/static/images/integrations/pivotal/001.png" >
2013-07-10 22:31:14 +02:00
< p > < b > Congratulations! You're done!< / b > < br / > When you make changes in Pivotal Tracker they will be reflected in Zulip:
2013-04-18 17:53:45 +02:00
< img class = "screenshot" src = "/static/images/integrations/pivotal/002.png" >
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
2013-07-23 21:50:29 +02:00
{#--------------------------------------------------------------------#}
< div id = "newrelic" class = "integration" >
< h4 > New Relic< / h4 >
2013-08-26 22:58:16 +02:00
< p > New Relic can send messages to a Zulip stream for alerts and
deploys.< / p >
< p > First, create the stream you'd like to use for New Relic
notifications, and subscribe all interested parties to this stream. We
recommend the name < code > newrelic< / code > .< / p >
< p > Next, in your New Relic Account Settings page, click
"Integrations", then "Alerting notifications". On the "Webhook"
tab, enter the following webhook URL:< / p >
2013-07-23 21:50:29 +02:00
2013-07-24 23:53:39 +02:00
< p > < code > https://api.zulip.com/v1/external/newrelic?api_key=abcdefgh& stream=newrelic< / code > < / p >
2013-07-23 21:50:29 +02:00
2013-07-24 23:29:57 +02:00
< p > where < code > api_key< / code > is the API key of your Zulip bot,
and < code > stream< / code > is the stream name you want the
2013-08-26 22:58:16 +02:00
notifications sent to.< / p >
2013-07-23 21:50:29 +02:00
< img class = "screenshot" src = "/static/images/integrations/newrelic/001.png" >
< p > < b > Congratulations! You're done!< / b > < br / > Your New Relic events will
appear in Zulip:
< img class = "screenshot" src = "/static/images/integrations/newrelic/002.png" >
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
2013-05-29 16:38:46 +02:00
{#--------------------------------------------------------------------#}
< div id = "svn" class = "integration" >
< h4 > Subversion< / h4 >
2013-07-10 22:31:14 +02:00
< p > It is easy to send Zulips on SVN commits, by configuring a post-commit
2013-05-29 16:38:46 +02:00
hook. To do this:< / p >
2013-08-26 22:58:16 +02:00
< p > First, create the stream you'd like to use for SVN commit
notifications, and subscribe all interested parties to this stream. The
integration will use the default stream < code > commits< / code > if no stream
is supplied in the hook; you still need to create the stream even if you
are using this default.< / p >
< p > Then:< / p >
2013-05-29 16:38:46 +02:00
< ol >
< li > Download and install our < a href = "/api" > Python bindings< / a > on the
server where the SVN repository lives.< / li >
< li > Install < code > pysvn< / code > . On Linux, you can install
the < code > python-svn< / code > package. On other platforms, you can install
a binary or from source following
the < a href = "http://pysvn.tigris.org/project_downloads.html" > instructions
on the pysvn website< / a > .< / li >
2013-08-07 17:55:22 +02:00
< li > Copy < code > integrations/svn/zulip_svn_config.py< / code >
2013-05-29 16:38:46 +02:00
and < code > integrations/svn/post-commit< / code > from the API bindings
directory to the < code > hooks< / code > subdirectory of your SVN
repository.< / li >
2013-08-07 17:55:22 +02:00
< li > Open < code > zulip_svn_config.py< / code > in your favorite editor and
2013-08-07 18:26:59 +02:00
change the < code > ZULIP_USER< / code > and < code > ZULIP_API_KEY< / code >
2013-05-29 16:38:46 +02:00
variables at the top of the file to the credentials for the bot you'd
like to use for this integration.< / li >
< li > The default stream used by this post-commit hook
is < code > commits< / code > ; if you'd prefer a different stream, change it
2013-08-07 17:55:22 +02:00
now in < code > zulip_svn_config.py< / code > . Make sure that everyone
2013-07-10 22:31:14 +02:00
interested in getting these post-commit Zulips is subscribed to that
2013-05-29 16:38:46 +02:00
stream!< / li >
< / ol >
< p > < b > Congratulations! You're done!< / b > < br / > When you commit to this SVN
2013-07-10 22:31:14 +02:00
repository, the team can see these updates in real time in Zulip:< / p >
2013-05-29 16:38:46 +02:00
< img class = "screenshot" src = "/static/images/integrations/svn/001.png" >
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
2013-02-10 00:35:06 +01:00
{#--------------------------------------------------------------------#}
2013-02-06 22:31:26 +01:00
< div id = "trac" class = "integration" >
< h4 > Trac< / h4 >
2013-08-26 22:58:16 +02:00
< p > First, create the stream you'd like to use for Trac notifications, and
subscribe all interested parties to this stream. The integration will use
the default stream < code > trac< / code > if no stream is supplied in the
hook; you still need to create the stream even if you are using this
default.< / p >
< p > Next, download and install our < a href = "/api" > Python
2013-02-14 19:46:23 +01:00
bindings and example scripts< / a > on your Trac server.< / p >
2013-02-06 22:31:26 +01:00
2013-08-07 17:55:22 +02:00
< p > Next, open < code > integrations/trac/zulip_trac_config.py< / code > in
2013-02-13 22:48:16 +01:00
your favorite editor, and change the following lines to specify
your bot's email address, API key, and where you'd like your
2013-02-06 22:31:26 +01:00
notification messages to go (by default,
stream < code > trac< / code > ):< / p >
2013-08-07 18:01:49 +02:00
< div class = "codehilite" > < pre > < span class = "n" > ZULIP_USER< / span > < span class = "o" > =< / span > < span class = "s" > "trac-notifications-bot@example.com"< / span >
< span class = "n" > ZULIP_API_KEY< / span > < span class = "o" > =< / span > < span class = "s" > "0123456789abcdef0123456789abcdef"< / span >
2013-02-06 22:31:26 +01:00
< span class = "n" > STREAM_FOR_NOTIFICATIONS< / span > < span class = "o" > =< / span > < span class = "s" > "trac"< / span >
< span class = "n" > TRAC_BASE_TICKET_URL< / span > < span class = "o" > =< / span > < span class = "s" > "https://trac.example.com/ticket"< / span > < / pre > < / div >
2013-08-07 18:01:49 +02:00
< p > Copy < code > integrations/trac/zulip_trac.py< / code >
2013-08-07 17:55:22 +02:00
and < code > integrations/trac/zulip_trac_config.py< / code > into
2013-02-14 19:46:23 +01:00
your Trac installation's < code > plugins/< / code >
subdirectory. Once you've done that, edit your Trac
installation's < code > conf/trac.ini< / code > to
2013-08-07 18:01:49 +02:00
add < code > zulip_trac< / code > to the < code > [components]< / code >
2013-02-14 19:46:23 +01:00
section, as follows:< / p >
2013-02-06 22:31:26 +01:00
< div class = "codehilite" > < pre > < span class = "k" > [components]< / span >
2013-08-07 18:01:49 +02:00
< span class = "na" > zulip_trac< / span > < span class = "o" > =< / span > < span class = "s" > enabled< / span > < / pre > < / div >
2013-02-06 22:31:26 +01:00
< p > You may then need to restart Trac (or Apache) so that Trac will load our plugin.< / p >
< p > < b > Congratulations! You're done!< / b > < br / > When people open
new tickets (or edit existing tickets), you'll see a message
like the following, to the stream < code > trac< / code > (or whatever
you configured above) with a subject that matches the ticket
name:< / p >
2013-02-06 23:12:25 +01:00
< img class = "screenshot" src = "/static/images/integrations/trac/001.png" >
2013-02-06 22:31:26 +01:00
2013-02-13 22:48:16 +01:00
< p > < b > Additional trac configuration< / b > < br / > After using the plugin
for a while, you may want to customize which changes to tickets
2013-07-10 22:31:14 +02:00
result in a Zulip notification using
2013-02-13 22:48:16 +01:00
the < code > TRAC_NOTIFY_FIELDS< / code > setting
2013-08-07 17:55:22 +02:00
in < code > zulip_trac_config.py< / code > .< / p >
2013-02-13 22:48:16 +01:00
2013-02-06 22:31:26 +01:00
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
2013-07-23 17:21:25 +02:00
{#--------------------------------------------------------------------#}
< div id = "trello" class = "integration" >
< h4 > Trello< / h4 >
2013-08-26 22:58:16 +02:00
< p > First, create the stream you'd like to use for Trello notifications,
and subscribe all interested parties to this stream. We recommend the
name < code > trello< / code > .< / p >
< p > Next, download a copy
2013-07-23 17:21:25 +02:00
of < a href = "https://github.com/nathanlws/trello-to-zulip" > trello-to-zulip< / a >
and follow the instructions in < code > README.md< / code > . When you
make changes in Trello, they will be reflected in Zulip:
< / p >
< img class = "screenshot" src = "/static/images/integrations/trello/001.png" >
< p > < small > Thanks to Nathan from FoundationDB for < a href = "https://github.com/nathanlws/trello-to-zulip" > submitting this integration< / a > !< / small > < / p >
< p >
< a href = "#services" > ^ Back to top< / a >
< / p >
< / div >
{#--------------------------------------------------------------------#}
2013-06-19 23:46:11 +02:00
< / div >
2013-02-06 20:25:04 +01:00
< / div >
2013-04-02 20:01:23 +02:00
{% endblock %}
{% block customhead %}
{{ block.super }}
2013-02-06 20:25:04 +01:00
< script type = "text/javascript" >
$(function() {
$("a.title").addClass("show-integral");
2013-02-11 22:34:20 +01:00
$("a.title").prepend($("< span class = 'integral' > ∫< / span > "));
$("a.title").hover(function (e) {
$(".integral").css("display", "inline");
var width = $(".integral").width();
$("a.title").css("left", -1 * width);
},
function (e) {
$(".integral").css("display", "none");
$("a.title").css("left", 0);
});
2013-02-06 20:25:04 +01:00
});
< / script >
{% endblock %}