正如标题所提到的,我想知道,从云构建步骤,我是否可以启动和使用pubsub仿真器?
options:
env:
- GO111MODULE=on
- GOPROXY=https://proxy.golang.org
- PUBSUB_EMULATOR_HOST=localhost:8085
volumes:
- name: "go-modules"
path: "/go"
steps:
- name: "golang:1.14"
args: ["go", "build", "."]
# Starts the cloud pubsub emulator
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
args: [
'-c',
'gcloud beta emulators pubsub start --host-port 0.0.0.0:8085 &'
]
- name: "golang:1.14"
args: ["go", "test", "./..."]对于我需要的测试,它在本地工作,而不是使用来自云构建的专用发布子,我想使用一个仿真器。
谢谢
发布于 2020-09-08 11:32:45
当我找到一个解决方案和一个有趣的git存储库时,我想和您分享这个解决方案。
根据需要,您需要一个cloud-build.yaml,并且希望添加一个步骤,以便启动模拟器:
options:
env:
- GO111MODULE=on
- GOPROXY=https://proxy.golang.org
- PUBSUB_EMULATOR_HOST=localhost:8085
volumes:
- name: "go-modules"
path: "/go"
steps:
- name: "golang:1.14"
args: ["go", "build", "."]
- name: 'docker/compose'
args: [
'-f',
'docker-compose.cloud-build.yml',
'up',
'--build',
'-d'
]
id: 'pubsub-emulator-docker-compose'
- name: "golang:1.14"
args: ["go", "test", "./..."]如您所见,我运行了一个命令,它将实际启动模拟器。
version: "3.7"
services:
pubsub:
# Required for cloudbuild network access (when external access is required)
container_name: pubsub
image: google/cloud-sdk
ports:
- '8085:8085'
command: ["gcloud", "beta", "emulators", "pubsub", "start", "--host-port", "0.0.0.0:8085"]
network_mode: cloudbuild
networks:
default:
external:
name: cloudbuild设置容器名称和网络非常重要,否则您将无法从另一个云构建步骤访问pubsub仿真器。
发布于 2020-09-03 17:01:35
因为Cloud上的每一步都是在docker容器中执行的,所以这是可能的,但是映像gcr.io/cloud-builders/gcloud在启动模拟器之前只安装了最少的gcloud组件,您需要通过gcloud命令安装pubsub仿真器。
gcloud components install pubsub-emulator另外,安装Open也是必要的,因为大多数JDK7模拟器都需要java来操作。
https://stackoverflow.com/questions/63721400
复制相似问题