inductor's blog

nothing but self note :)

Cloud RunがGitと連携して勝手にデプロイできるようになったのでやってみた

はじめに

こんにちは。inductorです。

GCPのCloud Runはご存知でしょうか。世界一簡単に単一のコンテナをデプロイできるサービスだと私は考えています。

さて、以下のようなリリースノートの通知があって、Cloud RunがGitと連携して更新まで自動でできるようになったみたいです。

Continuous deployment from Git using Cloud Build

まとめるとこんな感じのことが書いてあります

Cloud Buildのトリガーを使用して新しいコミットがGitリポジトリの特定のブランチにプッシュされるたびにコードを自動的にビルドしてデプロイすることで、ビルドとCloud Runへのデプロイを自動化できます

Cloud Buildトリガーを使用してコンテナをビルドすると、Cloud Runにデプロイした後、ソースリポジトリ情報がサービスのCloud Consoleに表示されます。

やってみる

試しに以下のリポジトリを使います。内容としてはシンプルでNuxtで生成されたページが表示されるWebサーバーを提供するだけのコンテナ。

github.com

https://console.cloud.google.com/run にアクセスしてからサービスを作成し、適当な名前をつけたら「次へ」。

すると、以下のようにソースリポジトリを選ぶという選択肢が増えているので選択肢、Cloud Buildの設定へ。

f:id:inductor:20200718140120p:plain

今度はCloud Source RepositoriesのAPIを有効化するように言われるので有効化して、そのあとGitHubの認証をとおします。

f:id:inductor:20200718140231p:plain

認証が通るとリポジトリが選べるようになるので、選んで次へ。

今度はブランチとDockerfileの場所を聞かれるので、今回はmaster、Dockerfileとそのまま選ぶだけにしました。

f:id:inductor:20200718140420p:plain

全部設定が終わるとサービスが作られ、最初はプレースホルダーとしてCloud RunのHello Worldが立ち上がりました。多分コンテナのビルドを待ってくれてる間のプレースホルダーですね。

f:id:inductor:20200718140607p:plain

所定のURLにアクセスしてみるとHello Worldがでてきました。

f:id:inductor:20200718140629p:plain

しばらく放置しててもなんも起こらないなと思ってましたが、よく考えたら「新しいコミットがGitリポジトリの特定のブランチにプッシュされるたびにコードを自動的にビルドしてデプロイ」とあったので、実際にこのイベントをトリガーさせないと動かないのか。と思い、Git pushを走らせてみることにしました。

Git pushすると、Cloud Runの画面で以下のようにイベントが動き始めました。

f:id:inductor:20200718141243p:plain

Cloud Buildの画面を見ると、ビルドが走っています。

f:id:inductor:20200718141335p:plain

ついでにトリガーの画面を見るとソースに所定のリポジトリが増えているのも確認。

f:id:inductor:20200718141408p:plain

しばらくするとCloud Runに新しいRevisionが作成されたのを確認。

f:id:inductor:20200718141615p:plain

ここまで来るともうCloud Runで勝手にロードバランスして切り替えてくれる・・・と思いきや、いつまで立ってもサービスが立ち上がってきません。最終的にはエラーになってしまいました。

f:id:inductor:20200718141837p:plain

これの原因は簡単で、コンテナ側のポートと、Cloud Runで期待したポートが違っていたからでした。ここは自分で編集して再デプロイしたらすんなり行きました。

f:id:inductor:20200718142016p:plain

所感

Cloud Buildのトリガーとパイプラインも勝手に作ってくれるのでめっちゃ便利ですね!!

ただ、コンテナポートのところは普通にハマりどころになると思うので(前にハマったことがあってすぐ気づいた)、ここは導線をしっかりしてほしいかな、とは思いました。

まだ出たばかりの機能なのでパイプラインの細かいところやネットワーク周りのこういうつまづきはユーザーから出てくるかと思いますが、PaaSみが増してきたので期待して改善を待とうと思います。