- 1日120分まで無料
- 1ステップ1Docker(コンテナ)
、、、いきなり1ステップ1Dockerといわれるととなってしまうのですが、設定ファイルをみると
cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/npm'
args: ['install']
- name: 'gcr.io/cloud-builders/npm'
args: ['run', 'build']
どうやらTravisやCircleCIのようにOSイメージやシェルスクリプトを書くのではなく、ビルドの1ステップ毎にname
でコンテナを指定していくとのこと。
gcr.io/cloud-builders/npm
でnpmを使用し、他にこちらの一覧にはすぐに使えるOfficialコマンドや、自分のプロジェクトで作成するCommunityコマンドが用意されてます。
⚡クイックスタート⚡
- GCPの適当なプロジェクトでCloud BuildのAPIを有効化
- Cloud Shellにアクセスして、
- 設定ファイルを作成し、ビルドコマンドを実行するだけ
# (必要であれば) 使用プロジェクトの設定
gcloud projects list
gcloud config set project [PROJECT_ID]
# 作業ディレクトリの作成
mkdir ~/gcb-test && cd $_
# 設定ファイルの作成
cat << EOF > cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/npm'
args: ['--version']
EOF
# ビルドコマンドの実行
gcloud builds submit
出力結果 >
Creating temporary tarball archive of 1 file(s) totalling 65 bytes before compression.
Uploading tarball of [.] to [gs://***.tgz]
Created [https://cloudbuild.googleapis.com/v1/projects/***].
Logs are available at [https://console.cloud.google.com/gcr/builds/***].
---------------- REMOTE BUILD OUTPUT ------------------
starting build "***-***-***"
FETCHSOURCE
Fetching storage object: gs://***...
Copying gs://***...
/ [1 files][ 195.0 B/ 195.0 B]
Operation completed over 1 objects/195.0 B.
BUILD
Already have image (with digest): gcr.io/cloud-builders/npm
6.4.1
PUSH
DONE
--------------------------------------------------------
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
*** 2018-11-27T07:16:04+00:00 7S gs://***.tgz - SUCCESS
コンソールに表示される履歴 >
手軽に使えて便利そうです!
独自コマンドの作成
基本npm build
でなんでもできそうですが、例えばpolymer-cliを直接使いたい時は、
# 作業ディレクトリの作成
mkdir ~/gcb-polymer-cli && cd $_
# Dockerの定義ファイル作成
cat << EOF > Dockerfile
FROM gcr.io/cloud-builders/npm
RUN npm install polymer-cli -g --unsafe-perm
ENTRYPOINT ["polymer"]
EOF
# Cloud Buildの設定ファイルの作成
cat << EOF > cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/\$PROJECT_ID/polymer', '.']
images:
- 'gcr.io/\$PROJECT_ID/polymer'
EOF
# ビルドの実行
gcloud builds submit
でコマンドがプロジェクトに登録されるので、
cloudbuild.yaml
steps:
- name: 'gcr.io/$PROJECT_ID/polymer'
args: ['--version']
として使うことができます。