【问题标题】:How to start a GCP VM in a pipeline?如何在管道中启动 GCP VM?
【发布时间】:2020-11-05 22:41:27
【问题描述】:

我有点奇怪,不适合用于 GCP 的情况。所以我需要用谷歌云平台做一些事情。我们使用一个比在办公室强得多的 Ubuntu VM 来构建一个 yocto 构建。我无法弄清楚在谷歌云中打开虚拟机的正确 .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

我知道谷歌云构建,但我们有一些依赖项可能会或多或少地降低效率,现在我大致了解我的 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'

我想知道是否有人以前做过类似的事情并可以帮助我?

【问题讨论】:

    标签: google-cloud-platform continuous-integration yocto google-cloud-build


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      我对 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'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-17
        • 1970-01-01
        • 2021-03-04
        • 1970-01-01
        • 1970-01-01
        • 2020-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多