前回 Cloud BuildでGAE/Goデプロイ by Slack vol.2
Cloud Source RepositoriesのコミットとCloud Buildとの連携
Cloud BuildでGAE/Goデプロイ by Slack vol.3ということで、
今回はCloud Buildをフックする部分について、実施したいと思います。
前回までで、Cloud Source Repositoriesへのマージの連携までできていますので、
このマージをフックしてCloud Build を起動する流れとなります。
Cloud Build の起動設定
Cloud Buildはvol.1でもお伝えした通り、
デフォルトで、Cloud Source Repositoriesとの連携に対応していますので、
連携の設定自体は簡単です。
トリガーの作成画面 に行くと、以下のようなボタンが出てくるので、
トリガーを作成をクリックします。
Cloud Source Repositoriesを選択して続行をクリックします。
前回の手順で設定したリポジトリが出てくるので、選択して続行をクリックすると以下のような画面になります。
ここの設定を終えれば、完了なのであとちょいです。
たくさん項目がありますが、
今回必要なのは、
- 名前(任意)
- わかりやすい名前であればなんでも構いません
- ブランチ(正規表現)
- masterを入力します。
- すでにmasterブランチがBitBucketにあれば、一致するブランチとして出てきます
- ビルド設定
- cloudbuild.yamlを選択します
上記設定が終わったら、
トリガーを作成ボタンをクリックします。
以上でトリガーの作成は完了です。
では、masterブランチにpushして、処理が起動するか確かめたいと思います。
以下のような内容で、ルートディレクトリに、cloudbuild.yamlという名前のファイルを作ります。
steps: - name: 'ubuntu' args: ['ls', '-lR', '/workspace']
これはubuntuコンテナを使って、/workspaceのls結果を表示するというタスクを意味します。
Cloud Buildでタスクを定義する際、cloudbuild.yamlに1つ以上のstepを定義することで、
実行したいタスクを定義できます。
nameには、GCPがデフォルトで用意しているコンテナを使用することも、
Docker Hubの公開イメージを使用することも、
独自のDockerイメージをGCRなどに登録して使用することもできます。
argsには、実行するコマンドを記述します。
[blogcard url=”https://medium.com/veltra-engineering/be-careful-when-deploying-golang-app-with-vendor-to-gae-4a12ad12b65f”]
ここでは、Docker Hubで用意されているubuntuの最新バージョンのコンテナを使用して、
/workspace配下に対して、lsコマンドを実行する、ということになります。
なお、Cloud Buildが実行されると、/workspace配下に、ブランチの内容が展開されます。
上記の内容で、masterブランチにpushすると、
ビルド履歴に、ビルド結果が表示されます。
starting build "54d09adf-f483-40e9-9fde-9736c3e3b61b" FETCHSOURCE Initialized empty Git repository in /workspace/.git/ From https://source.developers.google.com/p/bitbucket-build/r/bitbucket-source-repo * branch 19a70a0da7a6c0ddfd32b2ebadff3ffbdeff7561 -> FETCH_HEAD HEAD is now at 19a70a0 cloudbuild.yaml追加 BUILD Already have image (with digest): ubuntu /workspace: total 4 -rw-r--r-- 1 root root 60 Aug 13 10:41 cloudbuild.yaml PUSH DONE
/workspace配下に、ブランチの内容が反映されているのが確認できるかと思います。
終わりに
これで、リポジトリの反映をフックして、Cloud Buildの処理を起動することができるようになりました。
ここでは、pushを契機に設定していますが、手動/CLIなどで実行することも可能ですし、
処理の内容も、設定次第で様々なユースケースに対応できるかと思います。
次回はいよいよ、GAE/Goのアプリをデプロイする設定をしたいと思います。