Skip to content

ryoosk/deploy_bot

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AWS Lambda Slack CircleCI Deploy Bot

A Slack bot for AWS Lambda that automate deployment with Circle CI.

Install

Slackの設定

  1. Slashのワークスペース管理より、Appカスタムインテグレーションへ進み、Slash Commandsを追加します。
  2. Slash Commandsのインテグレーションを追加し、トークンに表示された内容を取得します。

Slack管理画面

AWS Lambdaの準備(gamba_deploy_bot)

このLambda関数は、AWS API Gatewayからコマンドを受け取って、別のLambda関数(gamba_deploy_runner)へリクエストを引き継ぎます。 Githubのプルリクエストの処理は若干時間がかかるため、1つのLambda関数内で一度に処理しようとするとタイムアウトが発生してしまいます。

  1. AWS Lambdaに用意されているBluePrintに用意されている、Slack-echo-commandを元に、lambda関数を作成します。
  2. 以下のコマンドにより、lambda_function.zipを作成します
    $ ./deploy.sh
    
  3. AWS Lambdaの関数コードにlambda_function.zipをアップロードします
  4. ハンドラーをindex.slack_handlerに設定します
  5. 以下の環境変数を登録します
    • slackToken: Slackの設定で表示されたトークン

AWS Lambdaの準備(gamba_deploy_runner)

gamba_deploy_botからリクエストを引き継ぎ、Githubのプルリクエストの処理を実際に行うLambda関数です。

  1. 上記で作成したlambda_function.zipをアップロードします
  2. ハンドラーをindex.deploy_handlerに設定します
  3. 以下の環境変数を登録します
    • githubToken: Githubのアクセストークン

API Gatewayの設定

  1. /gamba_deploy_bot - ANY - 統合リクエストを開き、マッピングテンプレートを追加します
    • Content-TYpe: application/x-www-form-urlencoded
    • テンプレート: { "body": $input.json("$") }
  2. APIをデプロイします
  3. このとき表示されたURLをメモします

Slackの設定(続き)

  1. API Gatewayで取得したURLをSlash CommandsのURLに設定します
  2. ユーザの名前にはdeploy_bot、アイコンには適切な画像を設定します

Usage

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クライアントのみデプロイします

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 97.5%
  • Shell 2.5%