Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cloud BuildでGoogle Cloud * Emulator を使う #97

Open
sinmetal opened this issue Jun 4, 2019 · 4 comments
Open

Cloud BuildでGoogle Cloud * Emulator を使う #97

sinmetal opened this issue Jun 4, 2019 · 4 comments
Assignees

Comments

@sinmetal
Copy link
Member

sinmetal commented Jun 4, 2019

Google Cloud BuildをCIのように回す時に、Google Cloud * Emulatorたちを動かしたい!という気持ちを言ったら、 @apstndb さんが一晩でやってくれました https://gist.github.com/apstndb/f362881ac2335f10a5ebe5456e5c4cec

以下はDatastore Emulatorを動かしている例

steps:
# Cloud Build uses cloud
# https://cloud.google.com/cloud-build/docs/overview#build_configuration_and_build_steps
- name: gcr.io/cloud-builders/docker
  args: ['run', '-d', '--network=cloudbuild', '--name=cds-emulator', 'google/cloud-sdk:248.0.0', 'gcloud', 'beta', 'emulators', 'datastore', 'start', '--host-port=0.0.0.0:8081']
- name: jwilder/dockerize:0.6.1
  args: ['dockerize', '-timeout=60s', '-wait=tcp://cds-emulator:8081']
# ここの部分を自分のTestを動かすものに置き換える。
- name: google/cloud-sdk:248.0.0
  env:
  - DATASTORE_EMULATOR_HOST=cds-emulator:8081
  args: ['sh', '-c', 'curl $${DATASTORE_EMULATOR_HOST}/v1/projects/example-project/indexes']
# for cloud-build-local
- name: gcr.io/cloud-builders/docker
  args: ['rm', '--force', 'cds-emulator']

例えば、GoのTestを動かしたい時は以下のような感じ

steps:
  - name: gcr.io/cloud-builders/docker
    args: ['run', '-d', '--network=cloudbuild', '--name=cds-emulator', 'google/cloud-sdk:248.0.0', 'gcloud', 'beta', 'emulators', 'datastore', 'start', '--host-port=0.0.0.0:8081']
  - name: jwilder/dockerize:0.6.1
    args: ['dockerize', '-timeout=60s', '-wait=tcp://cds-emulator:8081']
  - name: 'golang:1.11.5-stretch'
    entrypoint: 'go'
    args: ['test', '-v', './...']
    env:
      - 'GO111MODULE=on'
      - 'DATASTORE_EMULATOR_HOST=cds-emulator:8081'
  # for cloud-build-local
  - name: gcr.io/cloud-builders/docker
    args: ['rm', '--force', 'cds-emulator']

余談

Emulatorではないけど、似たような話で、DBのようなものを動かしたいという話がある。
GoogleCloudPlatform/cloud-builders#376 にそれをいい感じにやるドキュメントを書いて欲しいというissueが存在している。
PhilmodさんがGooglerのようで、docker-composeを使う方法を提案している https://github.com/Philmod/gcb-docker-compose が、みんなあんまりdocker-composeは使いたくない雰囲気がある。
それがそのまま公式ドキュメントになったのか、ドキュメントでもdocker-composeでやっている https://cloud.google.com/cloud-build/docs/configuring-builds/build-test-deploy-artifacts#running_unit_tests_and_integration_tests

Goの場合 https://github.com/ory/dockertest を利用してUnitTest実行時に起動する方法もあるが、なんか動く時と動かない時がある。

Refs

@sinmetal sinmetal self-assigned this Jun 4, 2019
@apstndb
Copy link
Contributor

apstndb commented Jun 4, 2019

一晩ではない…一時間だ

@sinmetal
Copy link
Member Author

sinmetal commented Jun 4, 2019

カッコいい

@apstndb
Copy link
Contributor

apstndb commented Jun 4, 2019

元の issue にも書いておくべきでは?となったので書いておいた
GoogleCloudPlatform/cloud-builders#376

@apstndb
Copy link
Contributor

apstndb commented Dec 18, 2019

上の issue でやりとりをした結果ドキュメントに追記された
https://cloud.google.com/cloud-build/docs/configuring-builds/build-test-deploy-artifacts?hl=en#running_unit_tests_and_integration_tests

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants