はじめに
すごく特殊な環境なのですが、バージョン管理にstashを利用し、チャットにslackを利用している場合、slackにpushがされたことを通知したりするような、
Integrationが簡単ではないのです。
しかし、チャットに状況が送られてこないと、
- 誰が何をしているかわからない
- 作業した達成感とかも味わえない
- モチベ下がる
のような負の要素がたまるため、
今回デフォルトのプラグインではできない、
StashからSlackへフックする設定をしていきます。
Slackの設定
Incoming WebHooksを設定
Slack側でStashのリポジトリにpushされたタイミングで通知がくるようにするAPIを設定していきます。
1. 部屋名のリンクから「Add a service integration..」のリンク押します。
2. 「Incoming WebHooks」を「Add」します。
3. チャンネルを選んで追加!
APIが叩かれた際に、どこの部屋に通知を送るかを設定します。
4. Web hook URLをゲット!
画像や名前も変えることができます!
StashをインストールしたサーバにslackのAPIを叩くshellを用意
stash_slack.sh
ココのGistをコピペです。
任意のリポジトリへおいてください。
今回はstash-homeと同じディレクトリにstash-slackというフォルダを用意し、格納しました。
$sudo su
$su stash
$ mkdir /opt/atlassian/stash/stash-slack
$ vim /opt/atlassian/stash/stash-slack/stash_slack.sh
# 先ほどのGistを貼り付けます
$ chmod +x /opt/atlassian/stash/stash-slack/stash_slack.sh
# stash での実行権限を与えて完了です
Stashの設定
External Hooksアドオンの追加・設定
1.リポジトリにpushがあった際に反応するフックのアドインを追加します
2.External Hooks を追加します
3.External Hooksの設定
シェルの実行とパラメータの設定を行います。
Executableに先ほど作成したshellフルパスを記載
/opt/atlassian/stash/stash-slack/stash_slack.sh
Positional parameters
- $1 Slackのweb hookのURL
- $2 SlackのルームID
- $3 stashのリポジトリURL
https://hooks.slack.com/services/XXXXXXXXXXXXXXXX
# dev6
http://XXXXXXXXXXXX/stash/projects/XXXXX/repos/XXXXXX
試してみる
こんな感じでpushしてslackに通知がきましたら設定完了です〜
最後に
検索したら便利なGistがあって本当によかったです。
これでなんとか快適な開発ライフを送れそうです。