以下の内容はhttps://r9.hateblo.jp/entry/2017/12/08/083011より取得しました。


ローカルのJenkinsとリモートのフックにSlackを使った

何をしたか

(クラウド型の)GithubやBitbucketなどにpushしたタイミングで、オフィスのLAN内にいるJenkinsに仕事をさせるのに、同LAN内にSlack botを置いて中継役にした。

f:id:rightgo09:20171208081620p:plain

実際の環境では、もう少し複雑な矢印が存在してしまっていて、これを僕はピタゴラJenkinsと呼んでいる。

背景

オフィスLAN外にあるソースコードの変更でJenkinsにCIさせたかったけど、インターネットからオフィスには通信ができなかったため、クラウドVCS側のhookのURLを直接Jenkinsにすることができなかった。

開発のコミュニケーションツールとしてSlackを使っているので、
とりあえずgit pushしたらSlackに通知をするようにして、
Slack botを作って、その通知に対してのフックを作り、
ひっかかったら同LANのJenkinsのREST APIをHTTPで叩く、という仕組みになった。

Goのコード片
if ev.Type == "message" && strings.HasPrefix(text, HookWord) {
	go startJenkinsJob()
	rtm.SendMessage(rtm.NewOutgoingMessage("hook", ev.Channel))
}
まとめ

Slackを介さずに、直接Jenkinsにフックできれば一番だったけど、そうでない場合もあるので仕方ないよね、という感じ。
ただbotを作っていくと、どこで何をしているのかだんだんわからなくなっていくのが問題な感じある。
とりあえず、このピタゴラJenkinsも図にして開発チームのWikiに貼っておいた。




以上の内容はhttps://r9.hateblo.jp/entry/2017/12/08/083011より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14