普段、GitLabを利用してソースの管理をすることが多いので、今まではGitLabCIを利用して色々CI/CD周りを作ることが多かったのですが、最近、GCPをメインで使っているので、CloudBuildで出来ないかなと言う事で実験して見ました。
今回、作成した構成は、以下の通りです。自分の為のメモ書きです。
構成図
GitLab->CloudSourceRepositories間の連携
下記記事を参考に設定しました。
https://qiita.com/tarosaiba/items/850042d6383ac5b7ef47
CloudBuildの設定
ここに関しては、UIに表示された通りに選択する事で基本的に詰まる事はありませんでした。
リポジトリの直下に専用のフォルダ(hogehoge)を作成してあったので、各コマンド実行時にcd してから実行しています。
gaeの古いバージョンを定期的にけさいないと上限までいってしまうので、一つ前のバージョン以外は削除するようにしました。
steps:
- name: 'gcr.io/cloud-builders/yarn'
entrypoint: '/bin/bash'
args: [ '-c',
'cd hogehoge/ && yarn install'
]
- name: 'gcr.io/cloud-builders/yarn'
entrypoint: '/bin/bash'
args: [ '-c',
'cd hogehoge/ && yarn run build'
]
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: '/bin/bash'
args: [
'-c',
"cd hogehoge && gcloud app versions list --service=default | grep default | sort -rk 4,4 | awk '{print $2}' | tail -n +2 | xargs -I {} gcloud app versions delete {}",
]
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: '/bin/bash'
args: [
'-c',
"cd hogehoge && yes | gcloud app deploy",
]
CloudBuildからGAEへデプロイ
CloudBuildのサービスアカウントにGAEのデプロイ担当、サービス担当を追加しないとデプロイが出来ずCloudBuildでエラーとなるので、必要な役割はデプロイ先に応じて変更が必要なようです。
まとめ
実際、設定して見るとそこまで難しくはなかったのですが、GitLabとCloudSourceRepositoriesの連携でかなり手間取りました(^.^)