やってみましょう
やってみること
- レポジトリにコミットをプッシュしたらレポジトリの内容を圧縮したファイルがStorageにアップロードされるようにする
- Source Repository→Container Builder→Storageという流れ
必要なもの
- tgzファイルを解凍できるソフトと手元で動くgit
- 手元で動くGoogle Cloud SDK
- に含まれるgcloudコマンド
- クレジットカードが登録されたGCPアカウントと、プロジェクト1つ
- gcloudで↑のプロジェクトに接続できる設定
- gcloud config configurations createで作っておく
レポジトリの作成
- GCPコンソールのメニューから「開発」>「レポジトリ」でレポジトリ一覧画面を開いて、「レポジトリの作成」
- 名前は適当に
- 「ローカル Git レポジトリへの Cloud レポジトリのクローン作成」の手順に従って、手元にクローンして、ファイルの追加のコミットをプッシュしてみましょう(gitの使い方は説明しないよ)
Storageにバケット(ファイルの格納場所)を追加
- GCPコンソールのメニューから「Storage」>「ブラウザ」でバケット一覧画面を開いて、「バケットの作成」
- 名前は適当でいいけど、他のユーザーのバケットと同じ名前がつけられないので、自分の名前をprefixにつけるなどで対応すると良いです
- 名前以外の設定は変更しなくていいです
トリガーの作成
- GCPコンソールのメニューから「Container Registry」>「トリガーの作成」でトリガー一覧画面を開いて、「トリガーを追加」
- ソースを選択で「Cloud Source Repository」を選択
- レポジトリを選択でさっき作ったレポジトリを選択
- (つづく)
トリガーの作成>トリガー設定
- 名前は適当に
- ビルド設定で「cloudbuild.yaml」を選択
- cloudbuild.yamlの場所に「/cloudbuild.yaml」と入力
cloudbuild.yamlを追加するコミットをプッシュ
cloudbuild.yaml
steps:
- name: 'debian'
args: ['tar', 'cvf', 'archive.tgz', '.']
- name: 'gcr.io/cloud-builders/gsutil'
args: ['cp', 'archive.tgz', 'gs://YOUR_BUCKET_NAME/']
YOUR_BUCKET_NAME はさっき作ったバケット名に置き換えてください
ビルドされてることの確認
- GCPコンソールのメニューから「Container Registry」>「ビルド履歴」でビルド履歴一覧画面を開いたらビルド履歴が1つできてるはずなので、開いて詳細を見る
- GCPコンソールのメニューから「Storage」>「ブラウザ」でバケット一覧画面を開いて、さっき作ったバケットを開いて、その中にできているtgzファイルをダウンロードして中身を見る
ここから解説
Repository
- 今回はレポジトリを作ったけどGithub/Bitbucketのレポジトリと連携できる
- つまり「githubのレポジトリにpushされたらほげほげする」みたいなことができる
Container Builder
- 「コンテナを使ったビルダー」と考えて良い
- Docker Hubのイメージが使える
- 自分で作ってContainer Registryに置いたイメージが使える
-
公式イメージが使える
- gcloudとかgsutilでGCP上のリソースが権限通りに使える
- golang系が充実
自動以外のビルド開始方法
- トリガー一覧から設定したトリガーを起動できる
-
gcloud container builds submit --config cloudbuild.yaml .
とかで手元から起動できる- 手元の内容を送りつけてビルド実行
- REST APIを叩いてレポジトリを指定したビルドの起動などもできる(やや大変)
Storage以外の出力先
- Container Registry
- Pub/Sub
- デフォルトのトピックがある
- 自分でいろいろしたい場合は
gcloud beta pubsub topics publish
とか - そこからFunctionsにつなぐとか
どうやってファイルを取り回しているの?
- 各ビルドステップで使うコンテナに、同じディレクトリをボリュームマウントする仕組み
まとめ
- Google Cloud Container Builderはコンテナのビルド以外のこともできる
- 割といろんなことができる