Разверните приложение App Engine go с помощью Cloud Build
Цель:
Использование конфигурации Cloud Build - создайте приложение в артефакт, который можно развернуть в ядре приложения.
Решение, которое не работает:
Это 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 Engine 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
Bucket и развернуть их, используя шаг развертывания - Если это невозможно, мне по крайней мере нужно знать, как бежать
gcloud components install app-engine-go
в контейнере развертывания, чтобы он не завершился с отсутствующей зависимостью.
1 ответ
Используйте GOPATH вне вашей директории сборки (/workspace
). Например, /gopath
,
Кроме того, потому что по умолчанию только /workspace
сохраняется между этапами Cloud Build, вы должны поместить свой 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'
Кроме того, мне пришлось предоставить роль администратора App Engine учетной записи службы Cloud Build в IAM для gcloud app deploy
шаг к успеху в Cloud Build.