LoginSignup
6
3

More than 3 years have passed since last update.

Google Cloud Container Builderはコンテナのビルド以外のこともできる

Last updated at Posted at 2017-04-15
1 / 17

やってみましょう


やってみること

  • レポジトリにコミットをプッシュしたらレポジトリの内容を圧縮したファイルが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はコンテナのビルド以外のこともできる
  • 割といろんなことができる
6
3
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
6
3