Cloud Buildを使ってReactアプリをGCEへデプロイ
- 2020.10.11
- GCP
CI/CDを構築する際、AWSのCodePipelineを使う機会はこれまで結構あったのですが、今回、初めてGCPのサービスであるCloudBuildを使ってみたので、その使い方を記録に残しておきます。
Cloud Buildアプリのインストール
今回は、ソースリポジトリとしてGitHubを使用するので、GitHub MarketplaceページからCloud Buildと連携するためのアプリをインストールします。リンク→https://github.com/marketplace/google-cloud-build
上記リンクを辿っていくと、最終的にCloud Buildのコンソールに移動し、どのリポジトリに対して、何をトリガーにCI/CDを起動するか、といった設定を行うことができます。
cloudbuild.yamlの作成
AWSのCodeBuildではbuildspec.ymlにパイプラインで実行するコマンドを記載していきますが、GCPのCloudBuildではcloudbuild.yamlがそれに該当します。ここでは、create-react-appで作成したプロジェクトをビルドし、GCE上の/var/www/html上にデプロイすることにし、以下のように設定ファイルを記載し、GitHubのリポジトリの直下に配置しました。
steps:
- name: node
entrypoint: yarn
args: ['install']
- name: node
entrypoint: yarn
args: ['build']
- name: 'bash'
args: ['mv', './build', 'html']
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: gcloud
args: ['compute', 'scp', '--recurse', './html', 'codebuild-test:/var/www', '--zone', 'asia-northeast1-b']
各ステップで記述する項目であるname、entrypoint、argsについて少し解説します。(他の項目も含めた解説は→https://cloud.google.com/cloud-build/docs/build-config?hl=jaを参照ください)
- name:指定が必須の項目。コマンドを実行するコンテナイメージを指定。
- entrypoint:上記で指定したイメージのデフォルトのエントリポイントを使用しない場合に、エントリポイントを指定するために使用。このフィールドを指定しない場合は、デフォルトのエンドポイントが使用される。
- args:イメージのデフォルトのエントリポイント、もしくはentrypointに指定したコマンドへの引数のリストを指定。
entrypointとargsの箇所が少しわかりにくいかもしれませんが、基本的にはnameでパイプラインで使用するコンテナイメージを指定して、entrypoint、argsで実行したいコマンドを指定する形となります。
まとめ
以上で、CI/CDの構築は完了です。あとはGitHubにプッシュした内容がGCE上に反映されたらOKです。
GCEにデプロイする方法として、gcloudのscpコマンドを使ってるのですが、もっと良い方法があればコメントいただけると嬉しいです。CloudBuildの公式のページ見ると、GKE、CloudRun、AppEngine、CloudFunctions、Firebaseへのデプロイ方法は記載があったのですが、GCEへのデプロイ方法は記載がなかったので、これで良いのか少し疑問が残っています。
-
前の記事
Cognitoの未認証ユーザの機能をAPI Gatewayで使用(Node.js) 2020.09.06
-
次の記事
「初めての自動テスト」読書メモ 2020.11.24