A Slack bot for AWS Lambda that automate deployment with Circle CI.
- Slashのワークスペース管理より、Appカスタムインテグレーションへ進み、Slash Commandsを追加します。
- Slash Commandsのインテグレーションを追加し、トークンに表示された内容を取得します。
このLambda関数は、AWS API Gatewayからコマンドを受け取って、別のLambda関数(gamba_deploy_runner)へリクエストを引き継ぎます。 Githubのプルリクエストの処理は若干時間がかかるため、1つのLambda関数内で一度に処理しようとするとタイムアウトが発生してしまいます。
- AWS Lambdaに用意されているBluePrintに用意されている、
Slack-echo-command
を元に、lambda関数を作成します。 - 以下のコマンドにより、
lambda_function.zip
を作成します$ ./deploy.sh
- AWS Lambdaの関数コードに
lambda_function.zip
をアップロードします - ハンドラーを
index.slack_handler
に設定します - 以下の環境変数を登録します
slackToken
: Slackの設定で表示されたトークン
gamba_deploy_botからリクエストを引き継ぎ、Githubのプルリクエストの処理を実際に行うLambda関数です。
- 上記で作成した
lambda_function.zip
をアップロードします - ハンドラーを
index.deploy_handler
に設定します - 以下の環境変数を登録します
githubToken
: Githubのアクセストークン
/gamba_deploy_bot - ANY - 統合リクエスト
を開き、マッピングテンプレートを追加します- Content-TYpe:
application/x-www-form-urlencoded
- テンプレート:
{ "body": $input.json("$") }
- Content-TYpe:
- APIをデプロイします
- このとき表示されたURLをメモします
- API Gatewayで取得したURLをSlash CommandsのURLに設定します
- ユーザの名前には
deploy_bot
、アイコンには適切な画像を設定します
Slackのチャネルに対して、以下のコマンドを送ると、デプロイが始まります。
/deploy branch_name to environment
branch_name
: デプロイするブランチ名を指定します。省略時はmaster
がはいります。environment
: 以下のいずれかを指定します。production
: 本番環境にデプロイしますstaging
: ステージング環境にデプロイしますapp
: iOS/Androidのアプリのビルド&AppStore/GooglePlayへのアップロードandroid
: Androidのアプリのビルド&GooglePlayへのアップロードios
: iOSのアプリのビルド&AppStoreへのアップロードcodepush
: CodePushへのJSコードのアップロードweb
:www.getgamba.com/m
配下にベータ版Webクライアントのみデプロイします