10
2

More than 3 years have passed since last update.

Google Cloud BuildでCI/CD

Posted at
1 / 20

Agenda

  1. Google Cloud Buildとは?
  2. CI/CDでのCloudBuild活用例

1. Google Cloud Buildとは?


1-1. 概要

Google Cloud Platform のインフラストラクチャでビルドを行うサービスです。
さまざまなリポジトリやクラウドストレージスペースからソースコードをインポートし、
仕様に合わせてビルドを実行し、DockerコンテナやJavaアーカイブなどのアーティファクトを生成できます。
(Google Cloud Build公式ドキュメントから抜粋)

図にするとこんな感じ
スクリーンショット 2019-11-01 10.40.00.png


1-2. 特徴

  • ネイティブDockerをサポート
  • カスタムワークフローが定義可能
  • 高速なビルド
  • ビルドツールを自由に選択できる
    • Maven、Gradle、Webpack、Go、Bazelなど

1-3. ビルド実行パターン

  1. 手動実行
  2. ビルドトリガーを使用した自動実行
  3. Githubアプリトリガーからの実行

1-4. 手動実行のコマンド紹介

Dockerfileを直接ビルドする場合
~$ ls
Dockerfile
~$ gcloud builds submit --tag {ホスト名}/{PROJECT_ID}/{任意の名前} .
  • ホスト名
    • Container Registryのホスト名であるgcr.io.gcr.io のネームスペースで指定可能
ビルド構成ファイルをビルドする場合
~$ gcloud builds submit --config={Yamlの構成ファイル名} {ソースコードディレクトリの相対パス}

1-5. ビルド構成ファイル

  • サンプルビルド構成ファイル
steps:
- name: 'gcr.io/cloud-builders/git'
  args: ['clone', 'https://github.com/GoogleCloudPlatform/cloud-builders']
  env: ['PROJECT_ROOT=hello']
- name: 'gcr.io/cloud-builders/docker'
  args:
  - 'build'
  - '-t'
  - 'gcr.io/my-project-id/myimage'
  - '.'
images: ['gcr.io/my-project-id/myimage']

1-5-1. フィールド説明

※フィールドは他にもたくさんあるので詳細はドキュメントを確認してください


2. CI/CDでのCloudBuild活用例


2-1. ビルド/デプロイ自動化前

スクリーンショット 2019-11-01 11.43.31.png


2-2. ビルド/デプロイ自動化後 (静的ファイルを除く)

スクリーンショット 2019-11-01 11.39.01.png


2-3. CIテストの自動化について

  • Cloud Build公式のGithub連携ツールを使用
  • 特徴
    • commitをpushするたびに自動でビルド実行
  • CIテストで採用した理由
    • commit単位でテストをしたい
    • プルリクページでビルドステータスを確認できる
  • 設定手順
    1. GithubとCloud Buildを連携 (詳細手順は公式ドキュメントを参照してください)
    2. ソースコードのルートディレクトリに cloudbuild.yaml という名のビルド構成ファイル作成

2-3-1. CIテスト専用のビルド構成ファイル

# cloudbuild.yaml

steps:
# mysql, redisサーバを起動
- name: 'gcr.io/$PROJECT_ID/docker-compose'
  args: ['-f', 'docker-compose.test.yml', 'up', '-d', 'mysql-test', 'redis-test']
# アプリケーションサーバを起動
- name: 'gcr.io/$PROJECT_ID/docker-compose'
  args: ['-f', 'docker-compose.test.yml', 'up', '-d', 'application-server']
# テストシェル実行
- name: 'gcr.io/cloud-builders/docker'
  env: ['MIX_ENV=ci_test']
  args: ['exec', 'application-server', 'sh', '_run-ci-test.sh']
timeout: 900s

2-4. ソースコードの自動ビルドについて


  • Cloud Build公式のビルドトリガーを使用を使用
  • 特徴
    • ソースコードに変更がpushされるたびにビルド実行(トリガーでブランチを指定した場合)
    • Githubアプリトリガーよりも柔軟な設定可能
    • トリガー
      • gitリポジトリのブランチorタグの指定が可能
  • 設定手順
    1. Cloud Buildのサービスページのサイドバーからトリガーを作成 (詳細手順は公式ドキュメントを参照してください)

2-4-1. ソースコードビルド構成ファイル

この構成ファイルでは、ビルド&デプロイコマンドが定義されているシェルスクリプトを実行するようにしています。

# _cloudbuild-dev-all.yaml

steps:
# # ソースコードのビルド
- name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
    bash _build.sh

# ソースコードのデプロイ
- name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args:
  - '-c'
  - |
    bash _deploy.sh

timeout: 1200s

  • entrypoint
    • ビルダーのデフォルトのエントリポイントを使用しない場合に指定する


参考文献

Cloud Build公式ドキュメント

10
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
10
2