はじめに
Hubotでデプロイ用のpull requestを作るプラグイン、hubot-deploy-builderというものを作成しました。
弊社では、以下のようなルールで開発を行っています。
- masterにマージが行われたことをトリガーとして本番デプロイが走る
- masterへのマージは、原則的にdevelopブランチからのみ行われる(developブランチが各開発者の開発したものをマージして、ステージング環境にデプロイしてテストするためのブランチ)
デプロイ時に毎回develop => masterへのpull requestを作るのが面倒だったので、chatops化しました。
やってくれること
- developからmasterへのpull requestを作成する
- developにマージされたpull requestのサマリをdescriptionに書く
コマンド
hubot deploy #{repo名}
で、そのリポジトリのdevelopからmasterへのpull requestを作成します。すでにそのpull requestが存在している場合、上書きしてサマリを作り直します。差分が存在しない場合はエラーを表示します。
使用イメージ
- 成功
↓ GitHub上では
- 失敗
※ tonjiruはbotの名前です
インストール
READMEどおり、以下のように追記してください。
"dependencies": {
"hubot-deploy-builder": ">=0.1.0"
}
["hubot-deploy-builder"]
以下の環境変数が必須なので入れてください。
- HUBOT_GITHUB_TOKEN
GitHubのアクセストークン
- HUBOT_GITHUB_USER
上記アクセストークンと紐づくGitHubのユーザ名
- HUBOT_GITHUB_ORG
GitHub組織名
カスタマイズ
以下の内容を環境変数でカスタマイズできます。
- HUBOT_DEPLOY_MESSAGE
pull request作成時のメッセージ。デフォルトは"Let's deploy it!"
- HUBOT_NO_DIFFERENCE_MESSAGE
pull request作成時に、2つのブランチ間に差分がなかった時のメッセージ。
デフォルトは"There is no difference between two branches :("
- HUBOT_PR_EXISTS_MESSAGE
pull request作成時に、該当のpull requestが既にあった場合のメッセージ。
デフォルトは"This pull request already exists."
- HUBOT_BRANCH_FROM
pull requestのマージされる側となるブランチ。デフォルトはdevelop
- HUBOT_BRANCH_TO
pull requestの取り込みを行う側のブランチ。デフォルトはmaster
プラグインを作るのに参考にさせていただいたサイト
- hubot-scriptを公開する方法(npm編) - Make 鮫 noise http://saihoooooooo.hatenablog.com/entry/2013/12/07/052150
- Node.js - node-inspector で hubot をデバッグする - Qiita http://qiita.com/hori@github/items/5a566237a66237e70d37