見出し画像

Google Cloudが提供するCloud Buildとは???

こんにちは、アイシーティリンクの酒井です。
今回は業務で利用しているCI/CDツールの1つであるCloud Buildについて書きたいと思います。

CI/CDとは…

Continuous Integration/Continuous Delivery」の略称です。
日本語では、「継続的インテグレーションおよび継続的デリバリー/デプロイメント」と呼ばれます。
文字だけ見ると意味が分かりずらい方もいると思いますが、簡単に言うと、一定の品質を保証しながら、効率的にアプリケーションをデプロイする自動化の手法です。

Cloud Buildとは…

Cloud Buildは、CI/CDを実行できるGoogle Cloudのサービスです。
デプロイは以下のような方法で実行ができます。

  • 環境変数を与えて、手動でCloud Buildを実行しデプロイする

  • ローカルPCからCloud Buildを使用してデプロイする

  • GitHubと連携してpushトリガーでデプロイする etc…

以下は、GitHubと連携してpushトリガーでデプロイした場合のCloud Buildの実行内容になります。

Cloud Build

私が現在担当している業務では、以下の図のようにGitHubとCloud Build、Terraformを使ってインフラリソース等をデプロイしています。

業務で実際に利用しているCI/CDの流れ

GitHubのmainブランチにコードがpushされると、トリガーされてCloud Buildが処理を実行します。
Cloud Buildの処理は、yaml形式のファイルに処理内容を書き、そのステップに沿って処理を実行します。
例えば、Terraformを実行させたい場合は以下のようなコードを使います。

# Cloud Buildステップを定義
steps:
  # コードのフォーマットをチェックする、不正があればエラーとして処理する
  - id: 'terraform-fmt-check'
    dir: 'src'
    name: 'hashicorp/terraform:$_TERRAFORM_CLIENT_VERSION'
    args: ['fmt', '-check', '-diff']
  # ワークスペースを初期化し、Provider情報等を読み込む
  - id: 'terraform-init'
    dir: 'src'
    name: 'hashicorp/terraform:$_TERRAFORM_CLIENT_VERSION'
    args: ['init', '-no-color']
  # Terraform による実行計画をテストする
  - id: 'terraform-plan'
    dir: 'src'
    name: 'hashicorp/terraform:$_TERRAFORM_CLIENT_VERSION'
    args: ['plan', '-no-color']
# Cloud Buildでタイムアウトする時間を定義する
timeout: '3600s'

他にも、Kubernetesコンテナをデプロイしたり、シェルスクリプトを実行したりなど、様々な処理ができます。
類似のサービスとして、GitHub Actions, CircleCI, AWS CodeBuild等がありますが、個人的にはCloud Buildが一番設定が簡単なイメージがあります。
Cloud Buildは、Google CloudのIAM(サービスアカウント)でクレデンシャル管理をすることができるため、他サービスと比べるとクレデンシャルファイルの取り扱いに悩む必要が少ないと思います。
3か月間のお試し利用を使えば、Cloud Buildも試すことができますので、ご興味がある方は試していただければと思います。

それでは今回はこれぐらいで終わりにします。
ここまでお読みいただきありがとうございました🙇


この記事が気に入ったらサポートをしてみませんか?