Open sinmetal opened 5 years ago
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のようなものを動かしたいという話がある。 https://github.com/GoogleCloudPlatform/cloud-builders/issues/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実行時に起動する方法もあるが、なんか動く時と動かない時がある。
一晩ではない…一時間だ
カッコいい
元の issue にも書いておくべきでは?となったので書いておいた https://github.com/GoogleCloudPlatform/cloud-builders/issues/376
上の issue でやりとりをした結果ドキュメントに追記された https://cloud.google.com/cloud-build/docs/configuring-builds/build-test-deploy-artifacts?hl=en#running_unit_tests_and_integration_tests
Google Cloud BuildをCIのように回す時に、Google Cloud * Emulatorたちを動かしたい!という気持ちを言ったら、 @apstndb さんが一晩でやってくれました https://gist.github.com/apstndb/f362881ac2335f10a5ebe5456e5c4cec
以下はDatastore Emulatorを動かしている例
例えば、GoのTestを動かしたい時は以下のような感じ
余談
Emulatorではないけど、似たような話で、DBのようなものを動かしたいという話がある。 https://github.com/GoogleCloudPlatform/cloud-builders/issues/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