その他
    ホーム 技術発信 あぴらぼ式 Cloud BuildでGAE/Goデプロイ by Slack vol.1
    Cloud BuildでGAE/Goデプロイ by Slack vol.1
     

    Cloud BuildでGAE/Goデプロイ by Slack vol.1

    Information

    この記事はアピリッツの技術ブログ「あぴらぼ式」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    自動的にデプロイ

    どんなアプリケーションであれ、
    世の中に価値を提供するためには、デプロイメントを行う必要があります。

    そして、
    アプリケーションを一度作ったら終わりということは稀で、
    継続的に、かつ頻繁に改修を加えていくことが多いので、
    必然的にデプロイも継続的に、かつ頻繁に行うことになります。

    いわゆるCI/CDですね。

    GCPが提供するフルマネージドなCI/CDサービスがCloud Buildになります。

    [blogcard url=”https://cloud.google.com/cloud-build/?hl=ja”]

    Cloud Build

    CI/CDの処理をフルマネージドな環境で実現できるという点でも魅力的ですが、
    このCloud Build、毎日120分以内であれば、無料で使えます。

    また、今までデプロイの話をしてきましたが、
    名前の通りDockerコンテナのビルドなどもできます。
    デフォルトで用意されているDockerイメージを使用してステップ(Cloud Buildでは個々のタスクをステップと呼びます)を定義することや、
    自前のDockerイメージを使ってステップを定義することができるので、基本的になんでもできます。

    GCP上のサービスと連携する上で、GCPの権限管理のシステムであるIAMとも連携できるのも嬉しいポイントです。

    そして、現時点(2018/08)で、

    • GitHub
    • BitBucket
    • Cloud Source Repositories

    のPushをフックして、起動させることができます。

    デプロイパイプラインの自動化

    そこで今回から数回に分けて、

    Slack上でmasterブランチにマージするとCloud BuildでGAE/Goをデプロイ

    というパイプラインを組んでみたいと思います。

    登場人物は

    • Slack
    • BitBucket
    • Cloud Source Repositories
    • Cloud Build
    • GAE/Go

    となります。

    構成図:

    Slack上のBotのMergeボタンを押す(1)と、
    BitBucketのmasterブランチにマージされる(2)と同時に、
    Cloud Source Repositoriesにミラーリング(3)され、
    Cloud Buildが起動(4)してビルドを行い(5)、
    GAE/Goにソースがデプロイ(6)される
    ※()内数字は構成図内の処理番号に対応

    といった流れになります。

    なお、
    BitBucketとCloud Source Repositoryと両方使っている理由は以下になります。

    • BitBucketにはプルリクエストのマージをSlack上で行うSlackBotが提供されています。
    • Cloud Buildをgcloudコマンドから直接実行する際には、Cloud Source Repositoryにソースがあった方が都合が良いからです。

    終わりに

    というわけで、
    次回以降、Slack上でマージしたらGAE/Goに自動でデプロイ!の仕組みを作っていこうと思います。

    次回 Cloud BuildでGAE/Goデプロイ by Slack vol.2

    記事を共有