6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Cloud Build を使って静的ページを Cloud Storage にデプロイする

Posted at

こんばんわ! @ktoshi です!
今日は静的ページのデプロイについてお話します。

目的

静的ページを Cloud Storage を使って公開したい。
でも、バージョン管理をしているから、CI/CDっぽいことをやりたい。
それなら、CloudBuild を使ってレポジトリへのコミットをトリガーにファイルの転送をしちゃおう!
なお、本手順では一部ベータ機能を利用していますので、ご利用は自己責任でお願いいたします。

準備

以下のものを準備してください。

  • GoogleCloudPlatform のアカウント
  • gcloud コマンドのインストール
  • Git コマンドの設定

Cloud Source Repositories の作成

数多のレポジトリがありますが、Cloud Build を使う上では CloudSourceRepository を
使うのが便利です。
なお、他のレポジトリとミラーリングをすることができるので、今お使いのレポジトリを使いながら、CoudSourceRepository を使うことができます。

# レポジトリの作成
gcloud source repos create SAMPLE_REPO --project="SAMPLE_PROJECT"

これで空のレポジトリの作成が完了です。簡単ですねー。

Cloud Storage の作成

肝心の公開用となるストレージを準備します。
とりあえず、サンプルということで権限設定とかリージョン設定は適当に。。。

# バケットの作成(gs:// に続くストレージ名称は全ユーザで一意な必要があります)
gsutil mb -c standard -l asia-northeast2 -p SAMPLE_PROJECT gs://sample_storage_name

# 公開用の権限付与
gsutil acl ch -u AllUsers:R -p SAMPLE_PROJECT gs://sample_storage_name

これで公開用のストレージの準備が終わりました。

Cloud Build のトリガー作成

レポジトリへのコミットをトリガーに自動でビルドとデプロイ処理を行うためのトリガーを作成します。

# トリガーの作成
gcloud beta builds triggers create cloud-source-repositories --repo="SAMPLE_REPO" --branch-pattern=".*" --build-config="cloudbuild.yaml" --project="SAMPLE_PROJECT"

これで「SAMPLE_REPO」にコミットをすれば、cloudbuild.yaml の設定を参照してビルドとデプロイが走るようになります。

実践

環境の準備が整ったので実際にデプロイができるところまでいろいろやってみましょう。

ローカルレポジトリの作成

皆さんご存じだとは思いますので、特には記載しません。
あくまで手順の一つとしてご認識ください。

# 作業用ディレクトリの作成
mkdir sample_project

# 作業用ディレクトリへ移動
cd sample_project

# 初期化
git init

リモートレポジトリの登録

CloudSourceRepositories をリモートレポジトリとして登録します。

git config --global credential.https://source.developers.google.com.helper gcloud.cmd

# リモートレポジトリに追加
git remote add google https://source.developers.google.com/p/PROJECT_NAME/r/SAMPLE_REPO

レポジトリの登録確認

上記で登録したリモートレポジトリが正しく動作しているか確認します。
作業用ディレクトリに適当なファイル(README.md)などを作成しておいてください。

git add .
git commit -m "First Commit."
git push --all google

これでエラーが表示されなければ、正しく動作しています。
ただ、このままではビルドが動きません。

ビルド設定ファイルの作成

ルートディレクトリに cloudbuild.yaml を作成し、
その中にビルドの設定を記載します。

cloudbuild.yaml
steps:
- name: gcr.io/cloud-builders/gsutil
  args: ['rsync', '-d', '-r', '.', 'gs://sample_storage_name/']

このファイルをコミットすると Cloud Build が動き出します。
実は最初のコミットの時も動いているのですが、 cloudbuild.yaml が存在しないのでエラーになっています。

確認

Cloud Storage にファイルが上がっているか確認しましょう。

gsutil ls gs://sample_storage_name/

これでファイルが出力されればOK!!

まとめ

静的ファイルでもバージョン管理をする時代、いちいちサーバにアップロードするなんて面倒ですよね。
そういうときにはこのような仕組みを作っておくと便利ですね。
まあ静的なサイトの事例は少なそうですが、Vue.js などのビルドと一緒にとやると必要性はあがりそうですね。
実は今回の記事を書こうとした大元は Vue.js のビルドも混みでやっていたので、それはまた別の記事で書こうと思います。
それでは皆様も素敵なライフをビルドしてください。
良いお年をー。

6
4
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
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?