add the owner name to the comment added message Change-Id: If4d232fb6305b8fdea3d1f902c9328e691cee8f0 (cherry picked from commit f4b51bb1e020930a5edfa1ea39cba40afcd613b2) 
2 files changed
tree: 7aa084cdb3d23d6dcde6d8382e48bed0e9a79178
  1. src/
  2. .gitignore
  3. LICENSE
  4. pom.xml
  5. README.md
README.md

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, Maven 3.0.x and Ant 1.9.x 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).