目标:
使用云构建配置-将一个应用程序构建成一个可以部署到应用程序引擎的工件。
不起作用的解决方案:
我是cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/go'
args: ['get']
env: ['PROJECT_ROOT=project-name']
- name: 'gcr.io/cloud-builders/go'
args: ['build', '.']
env: ['PROJECT_ROOT=project-name']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy']
timeout: '1600s'
artifacts:
objects:
location: 'gs://project-artifacts/'
paths: ['project-name']App引擎配置app.yaml
runtime: go
api_version: go1
handlers:
- url: /.*
script: _go_app最后是main.go:https://github.com/GoogleCloudPlatform/golang-samples/blob/master/appengine/helloworld/hello.go
我理解部署步骤现在非常幼稚,甚至不需要前面的两个步骤。参考cloud app帮助,我无法看到deploy步骤是否可以接受外部工件。
部署步骤失败,原因如下:
failed analyzing /workspace: cannot find package "google.golang.org/appengine" in any of:
($GOROOT not set)
/builder/home/go/src/google.golang.org/appengine (from $GOPATH)
GOPATH: /builder/home/go我在寻找2种解决方案:
project-artifacts桶中,并使用部署步骤部署它们gcloud components install app-engine-go,这样它就不会因为缺少依赖而失败。发布于 2018-09-13 07:46:17
在构建目录(/workspace)之外使用GOPATH。例如,/gopath。
此外,由于默认情况下,在云构建步骤之间只保留/workspace,所以必须将GOPATH放入卷中。
以下完整的示例适用于我:
steps:
- name: 'gcr.io/cloud-builders/go'
args: ['get', '-d', './...']
env: ['GOPATH=/gopath']
volumes:
- name: 'go'
path: '/gopath'
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy']
env: ['GOPATH=/gopath']
volumes:
- name: 'go'
path: '/gopath'此外,我必须将Admin角色授予IAM中的云构建服务帐户,以使gcloud app deploy步骤在云构建中获得成功。
https://stackoverflow.com/questions/52118034
复制相似问题