In a project I have been working due to lack of funds we have been using our own git central server and not github or bitbucket. Access control is managed by gitolite. Our team is using slack as a collaboration tool. What we would like is when a developer pushes back to our repository/repositories then every developer is notified through slack.
Installing and configuring
Step 1 – Get the git-slack-hook script
First of all clone the git-slack-hook github repository
# git clone https://github.com/chriseldredge/git-slack-hook.git
I have configured gitolite to store repositories managed under /srv/gitolite/repositories. So for example you want projectA repository to integrate with slack when something is pushed there.
You need to copy the git-slack-hook in the hooks directory of the projectA repository as a post-receive hook
# cp git-slack-hook /srv/gitolite/repositories/projectA.git/hooks/post-receive # chown gitolite:gitolite /srv/gitolite/repositories/projectA.git/hooks/post-receive # chmod 755 /srv/gitolite/repositories/projectA.git/hooks/post-receive
Step 2 – Create the Incoming WebHook on slack
Next you need to create an Incoming WebHooks on slack. Our team uses a channel called #pull-requests so everyone is notified when something is pushed back on the repository. Visit for example https://myproject.slack.com/services/new/incoming-webhook and choose channel #pull-requests to post notification and Add Incoming Webhooks Integration
Get the Webhook URL which will look like https://hooks.slack.com/services/XXXXX/YYYYY/ZZZZZZZZZZZ and change if you d like Customize Name. I usually use git-bot there and finish by Saving Settings
Step 3 – Configure your git repository
Go to you git server and execute the following commands on your repository projectA.
# cd /srv/gitolite/repositories/projectA.git/ # git config hooks.slack.webhook-url 'https://hooks.slack.com/services/XXXXX/YYYYY/ZZZZZZZZZZZ' # git config hooks.slack.channel '#pull-requests' # git config hooks.slack.username 'git-bot' # git config hooks.slack.repo-nice-name 'ProjectA Repository
and you are ready to go. Each time someone pushes back on the repository then #pull-requests channel will be notified. The best part is that you can have multiple repositories notifying the same slack channel. You just need to follow Step 3 and change the repo-nice-name.