我有点奇怪,不打算用于GCP。因此,我需要使用Google Cloud Platform做一些事情。我们使用比办公室Ubuntu VM更强大的工具来构建yocto。我以某种方式无法弄清楚在Google Cloud中打开VM的正确.yaml是什么。管道应从bitbucket运行,并应满足以下要求
(伪代码)
start up the vm in gcp && ssh builder@server
cd ./repo/build
start build && push build image to repo server
push logs to pipeline
shutdown
我知道google cloud的构建,但是我们有一些依赖关系可能会使其效率低下,现在我已经大致了解了yaml的外观,但是我可以在其中使用一些更好的指针。正如我确定的那样,这是错误的。
steps:
- name: 'gcloud compute instances start build-server-turnoff-when-unused'
- name: buildstep
script: /bin/bash build.sh
- name: 'send logs'
script: /bin/bash sendlogs.sh
- name: gcloud compute instances stop build-server-turnoff-when-unused'
我想知道以前是否有人做过这样的事情并且可以帮助我?
答案 0 :(得分:1)
假设您的目录如下所示:
.
./cloudbuild.yaml
./repo
./repo/build
./repo/build/build.sh
./repo/build/sendLogs.sh
您的Yaml文件应如下所示:
steps:
#0 Start Instance
- name: 'gcr.io/cloud-builders/gcloud'
args: ['compute', 'instances', 'start', 'INSTANCE', '--zone', 'ZONE']
#1 Build Step
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
dir: 'repo/build'
args: ['./build.sh']
#2 Send Logs
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
dir: 'repo/build'
args: ['./sendLogs.sh']
#3 Stop Instance
- name: 'gcr.io/cloud-builders/gcloud'
args: ['compute', 'instances', 'stop', INSTANCE, '--zone', 'ZONE']
在这种情况下,我们在构建步骤中使用了dir
字段来设置运行脚本时要使用的工作目录。另外,请确保您的Cloud Build服务帐户在IAM上具有 Compute Admin 角色,以便您可以在构建步骤中启动和停止Compute Engine实例。
服务帐户名称:
project-number@cloudbuild.gserviceaccount.com
答案 1 :(得分:0)
我对 bitbucket 中的管道究竟是如何工作的理解有点错误,我发现我可以下载 google-cloud sdk 并通过管道发出命令。
image: google/cloud-sdk:latest
pipelines:
default:
- step:
name: "Start build instance"
script:
- echo ${GCLOUD_JSON_KEY} > client-secret.json
- gcloud auth activate-service-account --key-file client-secret.json
- gcloud config set project $project-name
- 'gcloud compute instances start build-serve --zone=america-west4-b'