メリクリ!この記事は PMOB Advent Calendar 10日目の記事です。 12/25に投稿されているという点以外は。
やること
この間のやつ のCI/CDをCloud Buildでやります。
GCP側でひゅってする
- GCPのダッシュボードからCloud Buildのダッシュボードを開く
- TriggersタブからCreate trigger
- SourceにGitHubを選択
- Build configurationでcloudbuild.yamlを選択
- 名前を “Deploy Slack Bookmark” として作る
リポジトリにCI用のスクリプト足す
cloudbuild.yaml
を作ります。
前回作ったwerckerの設定 は消します。
まずテスト用インテグレーション
cloudbuild.yaml
とします。
steps:
- name: 'gcr.io/cloud-builders/npm'
args: ['install']
- name: 'gcr.io/cloud-builders/npm'
args: ['run', 'test']
デプロイ用インテグレーション
cloudbuild/deploy.yaml
とします。
steps:
- name: 'gcr.io/cloud-builders/npm'
args: ['install']
- name: 'gcr.io/cloud-builders/npm'
args: ['run', 'test']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['functions', 'deploy', 'slackBookmark', '--runtime=nodejs8', '--trigger-http', '--region=asia-northeast1']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['functions', 'deploy', 'slackBookmarkPickRandomly', '--runtime=nodejs8', '--trigger-http', '--region=asia-northeast1']
横に長い。
GitHubにこれを足したら、Triggerの設定を投入します。 Cloud Buildのダッシュボードから “Deploy Slack Bookmark” を選択して以下のようにします。
- Branchを
master
にする。 - “cloudbuild.yaml location” を
cloudbuild/deploy.yaml
にする。
GCP側でIAMの設定
Cloud BuildでFunctionsをデプロイするにはIAMのrole設定も必要になります。
IAM名は [PROJECT_NUMBER]@cloudbuild.gserviceaccount.com
、
追加するRoleは Cloud Functions Developer
です。
これで 'gcr.io/cloud-builders/gcloud'
からデプロイできるようになります。
あとIAMの設定が不足していた場合はIAMにactAsの設定を追加する必要があるかもしれません。 設定方法はこの辺みてね。
gcloud iam service-accounts add-iam-policy-binding
github.com側の設定
テストをするCIはPRのマージブロック設定に使いたいので、 テスト結果をgithub.comのstatusとしてレポートしたいです。 そのためにAppsを有効にします。
Google Cloud Build · GitHub Marketplace
ここからなんかエイヤっとしましょう。 で、リポジトリのSettingからbranch protectionを設定すればもういい感じのアレです。
感想
- GCP向きのデプロイが楽。
- デプロイ時にテストTriggerと重複する部分がある。Pipeline的にしたい。
- GitHub Appsが見るtriggerを任意に設定したい。
- stepに名前つけたい。