| Slack Integration Plugin |
| ======================== |
| |
| A simple Gerrit plugin that allows the publishing of certain Gerrit events |
| to a configured Slack Webhook URL. The plugin uses Gerrit's inherited project |
| configuration support so common config options can be set at a higher level |
| and shared by many projects along with project specific config options. |
| |
| |
| Development |
| ----------- |
| |
| To build the plugin, |
| [JDK 1.8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html), |
| [Maven 3.0.x](http://maven.apache.org/download.cgi) and |
| [Ant 1.9.x](https://ant.apache.org/bindownload.cgi) are required. |
| Once installed use _mvn_ to build. |
| |
| cd ./slack-integration |
| mvn install |
| |
| This command will compile/test and package the resulting artifact. |
| |
| cd ./slack-integration |
| mvn package |
| |
| Once packaged, you can install the _./target/slack-integration.jar_ file into |
| Gerrit. |
| |
| |
| Installation |
| ------------ |
| |
| Installing the Slack Integration Plugin is as simple as copying the resulting |
| JAR file into the Gerrit plugins directory. Assuming you installation of Gerrit |
| is located at _/usr/local/gerrit_ you simply execute the following. |
| |
| cp ./slack-integration.jar /usr/local/gerrit/plugins |
| |
| Simple substitute the path to your Gerrit plugins directory as needed. Gerrit |
| automatically loads new plugins and unloads old plugins, no restart is |
| required. |
| |
| |
| Configuration |
| ------------- |
| |
| The first thing you need to do is setup an incoming webhook integration in |
| Slack. This is done via my.slack.com - Configure Integrations. |
| |
| Configuration of the Slack Integration Plugin is done in Gerrit via a project |
| specific config file. This configuration is stored in the project’s |
| _project.config_ file on the _refs/meta/config_ branch of the project. |
| |
| Common configuration options that can be shared between multiple projects |
| can be placed in the _All-Projects_ config branch, or another project that |
| serves as an inherited base. Config options can then be overridden in the |
| actual project's config branch. For example, you may want to specify a default |
| webhook URL, username and channel then override the channel to be specific |
| to each project. |
| |
| Editing a project's config |
| |
| mkdir <project>-config |
| cd <project>-config |
| git init |
| git remote add origin ssh://<admin-user>@<gerrit-host>:29418/<project> |
| git fetch origin refs/meta/config:refs/remotes/origin/meta/config |
| git checkout meta/config |
| |
| Create the following config block |
| |
| vi project.config |
| |
| [plugin "slack-integration"] |
| enabled = true |
| webhookurl = https://<web-hook-url> |
| channel = general |
| username = gerrit |
| ignore = "^WIP.*" |
| |
| Commit and push changes |
| |
| git commit -a |
| git push origin meta/config:meta/config |
| |
| |
| Configuration Options |
| --------------------- |
| |
| The following configuration options are available |
| |
| enabled – boolean (true/false) |
| When true, enables Slack integration (defaults to false). |
| webhookurl - String |
| The Slack webhook URL to publish to (defaults to an |
| empty string). |
| channel - String |
| The Slack channel to publish to (defaults to "general"). |
| username - String |
| The Slack username to publish as (defaults to "gerrit"). |
| ignore - Pattern |
| A "dotall" enabled regular expression pattern that, when matches |
| against a commit message, will prevent the publishing of patchset |
| created event messages (defaults to an empty string). |