5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Cloud Buildの導入

Last updated at Posted at 2018-12-14

Google Cloud Buildを使い、WEBフロントコードのビルドの自動化を行いましたのでGoogle Cloud Buildの簡単な導入方法について紹介しようと思います。

Google Cloud Build とは

2018/7/24のサンフランシスコで行われたGoogleのクラウド・カンファレンスでCI/CDプラットフォームとして発表されたGCP上で継続的なビルド、テスト、デプロイを実現するマネージドサービスです。

  • 1日あたり120分までのビルド時間が無料(これを超える部分の料金は毎分0.0034ドル)
  • 最大10並列処理まで
  • もともと Container Builderって名前のサービスだった

今回はWEBフロントのコードをビルドしてGCSに配置するのに使用しています。1ビルド数分で完了するため無料で使用可能です。

デプロイ要件

  • develop、staging、production環境ごとにデプロイ
  • 社内で開発した共通コンポーネントをGitHubのprivateレポジトリで管理しているためビルド時に取得が必要

デプロイ設定

GCPのCloud Buildでトリガーの作成(2018/09/28時点 ベータ版)を行います。このトリガーをGitHubのレポジトリと連携させて、特定のブランチにマージが実行された時に「cloudbuild.yaml」を実行するように設定します。

cloudbuild.yaml
steps:
# 1 Get rsa and known_hosts files to access to git
- name: 'gcr.io/cloud-builders/gsutil'
  args: ['cp', 'gs://*******.com/ssh/gitlab-deploy-key', '/root/.ssh/id_rsa']
  volumes:
  - name: 'ssh'
    path: /root/.ssh
- name: 'gcr.io/cloud-builders/gsutil'
  args: ['cp', 'gs://*******.com/ssh/known_hosts', '/root/.ssh/known_hosts']
  volumes:
  - name: 'ssh'
    path: /root/.ssh
# 2 Set up files to access to git
- name: 'gcr.io/cloud-builders/yarn:node-8.11.0'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
    chmod 600 /root/.ssh/id_rsa
    cat <<EOF >/root/.ssh/config
    Hostname github.com
    IdentityFile /root/.ssh/id_rsa
    EOF
  volumes:
  - name: 'ssh'
    path: /root/.ssh
# 3 Start deploy
- name: 'gcr.io/cloud-builders/yarn:node-8.11.0'
  args: ['install']
  volumes:
  - name: 'ssh'
    path: /root/.ssh
- name: 'gcr.io/cloud-builders/yarn:node-8.11.0'
  args: ['run', 'build:$_REACT_APP_ENV']
- name: 'gcr.io/cloud-builders/gsutil'
  args: ['-m', 'cp', '-r', 'build/*', 'gs://*******.com/']

トリガーにはアンダーバーから始まる変数の設定が可能ですので、これを使って環境別のビルドコマンドの切り替えを行なっています。ここでは「_REACT_APP_ENV」という変数を作成しています。

社内共通コンポーネントのprivateレポジトリへアクセスできるようにGCSに鍵を配置しておいてビルド実行時に取得し、その鍵を利用してアクセスできるようにしています。(# 1、# 2 の部分)

鍵の設定が不要であれば「# 3 Start deploy」以下のスクリプトだけ(volumes 部分も不要)で済むので非常にシンプルなファイルでの記述が可能になっています。

まとめ

今回はシンプルなCloud Buildの導入の紹介をさせていただきました。鍵の管理にはKMSを使った方がシンプルかもしれません。今後はこれにテストも組み込んでいく予定です。

GitHubにCloud Build のアプリを入れることでビルド結果をGitHub上で確認できるようになります。コマンドベースの記述で簡単に構築できますので皆さんもぜひ使ってみてください。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?