travis-ci/travis-core — pull request #357 by antoinelyset (2014-02-24 23:38:01+00:00)
Title: [WIP] Add jabber notifications travis-ci/travis-ci#958

Hi Everybody !

This is my first try at implementing Jabber/XMPP notifications. Some information about this implementation :

- I've tested the whole Client/Task duo and it works for both Room and User notification :v:
- It uses the gem [XMPP4R](https://github.com/xmpp4r/xmpp4r), this is criticizable, so let me know if you need an implementation from scratch (which not easy).
- I didn't test the "whole process", from a successful build to a Jabber notification. I will need some help here.
- I didn't handle the exceptions, I looked at the other Services (like Flowdock) and it doesn't seem to do it too, is it a design choice ? I could be plain wrong, and I will be glad to implement the needed rescues.
- I don't find my specs to be particularly insightful. I will try to add more useful ones.
- The user need to have a Jabber account. If Travis chooses to provide its owns it could be optional.

The configuration format support two kind of notifications : rooms (with or without passwords) and users.

It looks like this :
```yaml
notifications:
jabber:
jid: 'awesome_travis_user@example.com'
password: 'password'
rooms:
- jid: mainhall@example.com/anAwesomePseudo
- secretroom@example.com/TravisBot
password: 'password'
users:
- one@example.com
- two@example.com
template:
- "%{repository} (%{commit}) : %{message} %{foo} "
- "Build details: %{build_url}"
```