概要
現在、β版として提供されているCloud Buildトリガーの紹介
Buildトリガーを有効にするための手順、設定をまとめました。
Cloud Build トリガーとは
Source RepositoryやGithubにPushを検知して、Cloud Buildを実行できる。
現時点ではβ版(いつからβが出現していたのか。。。)
- 公式(β)
ビルドトリガー
Cloud Build
ソースの取得元として選択できるリポジトリ
- Source Repository
- Github
やること
- Cloud BuildトリガーでPushを検知してビルドを行う
- GAE(Google App Engine)に自動でデプロイする
前提
やりたいこと
プログラムを作った後、品質を確保するためには継続的にテスト、デプロイを行う必要があります。(CI/CD)
また、自動化を行うことで人が行っているがためにおこるヌケやモレがなくなります。
GithubではGithub Actionsが実装されて自動でCloud Buildに連携が可能になっていましたが、Source Repositoryでソース管理を行っている場合にもCloud Build トリガーでできるようになりました。
How to set
Build トリガーを設定して実際に動かしてみます。
簡単なフロー図
事前設定
クラウドビルドサービスアカウントにApp Engine管理者権限をつける
デプロイ管理者で行けると思ったんですが、なぜか管理者じゃないとダメでした。
App Engine APIを有効にする
Build トリガーの作成
ナビゲーションのCloud BuildからBuild トリガーを選択します。
トリガーの設定
特に何も考えずに全てのpushに反応するようにします。
各項目を設定後、トリガーを作成します。
ビルドトリガーの起動
Source Repositoryにpushします。
(適当に改行とか追加してpush)
$ git commit -m "Cloud Build Test"
[master 71e85cb] Cloud Build Test
1 file changed, 1 insertion(+)
$ git push origin master
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 343 bytes | 343.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2)
To https://source.developers.google.com/p/$PROJECT_ID/r/source-repository-demo
aab808d..71e85cb master -> master
ビルドログの確認
Source RepositoryにpushするとBuild トリガーによって自動でビルドが行われます。
Cloud Buildの履歴から確認できます。
App Engineに配備されていることの確認
App Engineの該当のサービスにアクセスします。
サービス名はapp.yamlのserviceで定義した名前です。
自動テスト
go testも実行されています。
この自動テストがエラーになると、後続のデプロイは行われません。
cloudbuild.yamlの環境変数を変更します。
steps:
- name: "gcr.io/cloud-builders/go"
args: ["test", "./test/..."]
env:
- "TEST_ENV_VAL=null"
- "GOPATH=golib"
- name: "gcr.io/cloud-builders/gcloud"
args: ["app", "deploy"]
timeout: "1600s"
main.goも以下のように変更します。
package main
import (
"fmt"
"net/http"
)
func main() {
// ①
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, Build Trigger! Test error")
})
// ②
http.ListenAndServe(":8080", nil)
}
ソースを変更してSource Repositoryにpushします。
テストがエラーになっています。
いい感じだと思われる使い方
開発用、ステージング用、本番用のブランチを用意し、それぞれのブランチに対応したBuild トリガーを作成する。
といいんじゃないかなぁとおもいました
その他機能
RESTAPIが用意されているみたいです。
Build Trigger REST API
Buildの開始は
POST https://cloudbuild.googleapis.com/v1/projects/{projectId}/builds
でJsonパラメーターに応じて指定のトリガーが起動されるようです。
実行中のBuildのキャンセルもあるようですが、どんなふうに使うんだろう。。。
今後望むこと
AWSのこのめっちゃべんりきのうがほしい。Build トリガーかんけいない
Test Reports with AWS CodeBuild