Advent calendar3日目です🎉
引き続きGCPの話です。
パーソンリンクではkiberaというツールを使って社内で技術系の知見を共有しています。
そこで投稿したものを外部にも公表します🌞
本題
Cloud Storageに置いてある静的ページに対して、Cloud BuildでGitリモートリポジトリ(ここではBitbucket)へのpushをトリガーに自動デプロイするまでの設定手順です。
前提条件
以下は行っている前提で書きます。
- GCPアカウント作成
- GCPプロジェクト作成
- GCPアカウントの決済情報登録
- Gitリポジトリ作成
Cloud Storageの作成
- 「バケットを作成」をクリック
- 名前、リージョン(asia-northeast1(東京))、ストレージクラス(Standerd)、アクセス制御(均一)を設定。
- 「作成」をクリック
Cloud Builder トリガーの作成
ホーム画面 > メニュー > Cloud Builder
- 初期状態だとAPIの画面に飛ばされるので「有効にする」をクリック
- トリガー > 「トリガーを作成」をクリック
- トリガー名、イベント(ブランチにpushする)、ソース(新しいリポジトリに接続>Bitbucket>リポジトリ選択)、ビルド構成(Cloud Build構成ファイル)を設定。
- 「作成」をクリック
Cloud Build 構成ファイルの作成
- プロジェクトのルートディレクトリにcloudbuild.yamlを作成する
- cloudbuild.yamlの内容に以下を記載する
steps:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
args: ['gsutil', 'rsync', '-d', '-r', '.', 'gs://STORAGE_NAME/']
書き方は一般的なCI設定で書くのと同じような感じです。
nameフィールドでコンテナイメージを指定し、argsフィールドでコマンドの引数をリストにして指定します。
以下は構成ファイルの公式ドキュメントです。
ビルド構成の概要 | Cloud Build のドキュメント | Google Cloud
gsutilはGoogle Cloud Storage (GCS) を操作するためのコマンドラインツールのことです。
rsyncコマンドは2つのバケットやディレクトリの内容を同期するためのコマンドです。
参考:gsutil rsync についての簡単なメモ | Yucchiy's Note
STORAGE_NAMEには最初の手順で作成したストレージの名前を記載します。
自動デプロイ実行
上記ファイルをコミットしてpushします。
Cloud Builderの履歴でログを確認し、成功になっていることを確認します。
Cloud Storage上でも、ファイルがアップロードされていることが確認できました。