首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用云构建部署应用程序

使用云构建部署应用程序
EN

Stack Overflow用户
提问于 2018-08-31 14:54:18
回答 1查看 1.6K关注 0票数 2

目标:

使用云构建配置-将一个应用程序构建成一个可以部署到应用程序引擎的工件。

不起作用的解决方案:

我是cloudbuild.yaml

代码语言:javascript
复制
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

代码语言:javascript
复制
runtime: go
api_version: go1

handlers:
- url: /.*
  script: _go_app

最后是main.gohttps://github.com/GoogleCloudPlatform/golang-samples/blob/master/appengine/helloworld/hello.go

我理解部署步骤现在非常幼稚,甚至不需要前面的两个步骤。参考cloud app帮助,我无法看到deploy步骤是否可以接受外部工件。

部署步骤失败,原因如下:

代码语言:javascript
复制
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种解决方案:

  1. 理想情况下,能够将工件构建到project-artifacts桶中,并使用部署步骤部署它们
  2. 如果这是不可能的,我至少需要知道如何在部署容器中运行gcloud components install app-engine-go,这样它就不会因为缺少依赖而失败。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-13 07:46:17

在构建目录(/workspace)之外使用GOPATH。例如,/gopath

此外,由于默认情况下,在云构建步骤之间只保留/workspace,所以必须将GOPATH放入卷中。

以下完整的示例适用于我:

代码语言:javascript
复制
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步骤在云构建中获得成功。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52118034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档