Cloud Run が GitHub と接続設定をするだけで、 GitHub 上に push したコードをデプロイ出来る仕組みが簡単に作れるので、静的ファイルを簡単にデプロイ出来るミニマムな方法になります。
GCSで公開やFirebase Hostingなど他にも公開するシンプルな方法はありますが、 GCP や Firebase など GitHub 以外の存在を隠蔽して static file を公開する仕組みを作りたい場合(社内の非エンジニアなどにも対応してほしい場合)などに利用できるかと思います。
カスタムドメイン化やSSL化も容易だし。
GitHubにコードを配置する。
こちら がサンプルになります。
初期設定時に必要なものとしては、 Dockerfile, default.conf は仕組みとして必要です。
これがなぜ必要なのか理解できない人は Docker で nginx コンテナを利用してコンテンツを公開する方法などを検索して学ぶと良いと思います。
仕組みが理解できていれば、 node でも go でもこのパターンを応用して公開できます。
話が脱線しましたが、このリポジトリで外部に公開したいファイルは index.html になります。
中身は超手抜きで以下のようなもの(Hello!と大きく表示されるだけ)です。
<h1>Hello!!</h1>
上記のようなイメージで GitHub にリポジトリを用意します。
GCPにプロジェクトを作成する
すでに作成しているものがあれば Cloud Run を有効化し、
未作成の場合にはプロジェクトの作成の後、Cloud Run の有効化を行います。
(細かい手順は省略します)
Run と GitHub を統合する
まずは GCP の Cloud Run の画面を表示します
まずは、何もない状態だと思いますので、上段の 「CREATE SERVICE」ボタンを押します。
Service settings
の項目は、自分が利用したいリージョン、サービス名を入力します。
Authenticationは外部に公開するのであれば Allow unauthenticatec invocations
を選択しましょう
入力が済んだら 「NEXT」ボタンを押します。
ここからがポイント。
Configure the service's first revision
の設定項目では、
Continuously deploy new revisions from a source repository
を選択します。
選択すると表示が狭まるので、「SET UP CLOUD BUILD」ボタンを押します。
リポジトリは GitHub/Bitbucket が選択できます。
今回は GitHub
を選択しましょう。
尚、この際に、 Cloud Source Repositories API
, Cloud Build API
の有効化が必要になります。
それに伴い billing の有効化も必要になります。リンクから遷移して有効化しておきましょう。
有効化が済むと、 「Authenticate」のリンクが表示されます。
これは GCP から GitHub に接続するための認証になりますので実行しておきます。
認証が完了すると、リポジトリの選択ができるようになります。
以下のように選択し、有効な状態になっていることを確認しましょう(ちゃんと青くなる)
確認できたら 「NEXT」を実行します。
Build 設定を行う
こちらのように Build 設定が表示されます。
任意のブランチを選択し、今回は Dockerfile を利用しますので、 Source location は /Dockerfile
を利用します。
設定が完了したら 「SAVE」 ボタンを実行します。
Cloud Run のサービスを作成する
入力がすべて完了したら、 一番下段の 「CREATE」ボタンを実行します。
尚、デプロイの際の細かいパラメータを変更したい場合には、 ADVANCED SETTINGS
を展開することで設定の変更が可能です。
メモリの量や、CPUのコア数などの指定が行なえます。
CREATE ボタンを実行すると Cloud Run のサービス詳細画面に遷移し、サービスのデプロイ状況が確認できます。
変更の際にデプロイされるか確認する
GitHub で管理しているコードを変更して master に push してみます。
このような感じでデプロイが行われました。
コンテンツも表示されました。
めでたし、めでたし。