Buildというプロダクトを検証したので紹介させて頂きたいと思います。BuildはGCP上で実行できるCI/CDツールです。BuildはCI/CDで必要なファイルのみ提供するだけで簡単にCI/CDができます。特徴は下記となります。柔軟なビルドステップ詳細はこちらを参照してください。Buildを使える状態になりました。BuildでどうやってCI/CDができるか二つに分けて説明致します。Dockerfileを利用(CI)cloudbuild.yaml利用(CI/CD)Dockerfileを利用(CI)先にDockerfileを利用してCIする方法を説明します。今回の説明で利用するレポジトリはgithub.comで、ビルドするアプリケーションはgolangで作成した簡易ウェブサーバーになります。※ソースファイル及びレポジトリ作成は省略させて頂きます。BuildではDockerfileを利用してビルドすることができます。後述のトリガー作成で指定することになりますので、先に作成しましょう。imageを作成する」というマルチステージビルドを利用しており、作業内容は下記となります。files作成したDockerfileをソースレポジトリにPushしましょう。これでDockerfile用のトリガーを作成する準備ができました。Console画面を開きます。トリガー作成そして、下記の手順でトリガーを作成しましょう。※github.comの認証は省略させて頂きます。トリガーの内容設定これでトリガーの作成ができました。次は作成されたトリガーを確認し、実行してその結果を確認しましょう。TriggerボタンをクリックするとレポジトリまたはTag一覧が表示されます。その中で一つを選択するとビルドされます。ビルド結果確認これで無事にビルドできることができました。引き続き、cloudbuild.yamlを利用してCI/CDする方法を説明します。Buildが公式にサポートするデフォルト設定ファイルです。今回はこのファイルを利用してトリガーを作成してビルドします。Dockerfileを利用してテスト&ビルドを行い、アプリのイメージを作成することまでできました。ビルドしたイメージをpushしてないし、デプロイもできてない状態です。cloudbuild.ymlの組み合わせでCI/CDを行います。各ファイルの役割は下記となります。GKEサーバーとデプロイ関連ファイルの準備アプリをデプロイするためにはデプロイされるサーバーが必要です。Engine(以下GKE)のクラスタを利用させて頂きます。Balancing(以下LB)サービスを利用しております。LB作成手順は省略させて頂きます。今回のGKEクラスタは東京リーゾンを利用します。${ZONE}デプロイ関連ファイル準備GKEクラスタにウェブサーバーをデプロイする為に必要なファイルを準備しましょう今回はdeployment.yamlとservice.yaml二つになります。deployment.yaml作成specのcontainersのimage名のプロジェクト名はご自分で設定してください。imageはcloudbuild.yaml中で改めて設定します。100service.yaml作成GKE外部と連携のため、別途ポートを用意する必要があります。今回は30580ポートを利用します。この30580がLBからアクセスできるポートです。service.yaml追加後の構成は下記のような感じです。files作成したdeployment.yaml、service.yamlはgithubレポジトリにPushしましょう。次はトリガーで利用するcloudbuild.yamlの準備になります。今回のトリガーはcloudbuild.yamlを利用しますので、そのファイルを用意する必要があります。cloudbuild.yamlのステップの説明とファイル作成cloudbuild.yamlの中で行なっているステップの説明とファイルを作成します。cloudbuild.yamlの中で行なっているステップの説明cloudbuild.yamlの中身ですが、7つのステップ構成されております。既存のDockerfileを利用してアプリのテスト&ビルド&イメージ作成を行います。imageをGCRにPUSHします。クラスタへの作業を行う前に、利用するクラスタ情報を取得して設定する必要があります。デプロイ設定を適用します。外部との通信の為、ポートフォーワードを行うサービスの設定します。ビルドしたイメージを設定して、デプロイで使用するようにします。デプロイステータス確認して、デプロイが完了するまで待ちます。Dockerfileを利用してアプリのテストビルドとイメージのビルドを行う。$_VERSIONはトリガーの変数として設定します。Clusterを取得。$_ZONEはトリガーの変数として設定します。イメージをDeploymentにセットする。'deployment/cb-sample-server'cloudbuild.yaml作成後、構成は下記のような感じです。files作成したcloudbuild.yamlはgithubレポジトリにpushしましょう次はトリガー作成になります。トリガー作成cloudbuild.yamlを利用するトリガーを作成しましょう。作成手順はDockerfile用のトリガー作成とほとんど同じですが、設定内容が少し異なります。今回はcloudbuild.yaml中で利用する変数も設定しました。ここまで準備できましたので、実行したいところですが、もう一つの設定が必要です。Buildではサービスアカウントを利用して通信を行います。Adminロールを追加してください。役割を追加」の部分を参照してください。作成したトリガーを実行してテスト→ビルド→イメージ作成→デプロイが問題なく動作しているか確認しましょう。実行して問題なければ下記のように表示されると思います。Webサーバーの動作確認そして、ブラウザを開き、LBのIPアドレスまたはURLを入力して問題なく動作しているか確認しましょう。Worldが表示されました。BuildのCI/CDができることが確認できました。BuildではDockerfileのサポート、ソースレポジトリの連携でもっと楽にCI/CDができるようになったと感じました。この記事を読んでいる読者の方もGCPをご使用中であれば是非お試しして頂ければと思います。Buildを活用して行きます。今回の記事では基本設定を利用して簡単にCI/CDする方法を説明しましたが、次回はいろんな設定方法を活用して説明させて頂きたいと思います。BuildGCPGKEGolangsanleon2012年中途入社のサーバーサイドエンジニアです。golangを利用した開発に専念しております。