【问题标题】:Can I use Cloud Build to perform CI/CD tasks in VM instances?我可以使用 Cloud Build 在 VM 实例中执行 CI/CD 任务吗?
【发布时间】:2021-02-16 05:26:19
【问题描述】:

我正在使用 Google Cloud Platform 并探索其 CI/CD 工具。

我在 VM 实例中部署了一个应用程序,我想知道是否可以使用 GCP 的工具(例如 Cloud Build)来执行 CI/CD,而不是使用 Jenkins。

根据我从多个资源中了解到的情况,Cloud Build 似乎是 Cloud Run(部署 Docker 映像)和 Cloud Functions 的一个不错的工具。

我可以将它用于部署在 VM 实例中的应用吗?

在 Cloud Build 中创建作业时,您会设置一个 cloudbuild.yaml 文件,您可以在其中指定构建步骤。如何编写该步骤以使其进入 linux VM,以特定用户 cd 登录到目录,拉取项目 repo 的主分支,然后开始运行 main.py(假设它是一个 python项目)?

【问题讨论】:

    标签: google-cloud-platform google-cloud-build


    【解决方案1】:

    你可以这样做

      - name: gcr.io/cloud-builders/gcloud
        entrypoint: "bash"
        args:
          - "-c"
          - |
              gcloud compute ssh --zone us-central1-a my_user@oracle -- whoami;ls -la;echo "cool"
    

    但是,它不是部署应用的云原生解决方案。虚拟机不是“宠物”而是“牛”,也就是说,当你不再需要它的时候,就杀了它,不要情绪!

    因此,使用云的现代方式是使用您的应用的新版本创建一个新虚拟机。或者,您可以保留以前的 VM,在回滚时停止(无需支付任何费用)。为此,您可以添加一个startup script,它会在 VM 上安装所有必需的包、库和您的应用程序,然后启动它。

    最简单的方法是创建一个容器。像这样,所有的系统依赖都在容器内,虚拟机不需要任何定制:只需下载容器并运行它

    Cloud Build 允许您使用 gcloud CLI 创建带有启动脚本的虚拟机。您也可以停止前一个。您是否有可重复使用的持久性(用于版本之间的数据)?通过云构建,您还可以克隆它并将其附加到新 VM;或将其与前一个分离并附加到新的!

    【讨论】:

      猜你喜欢
      • 2020-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 2021-12-14
      • 1970-01-01
      • 2023-02-23
      • 2019-04-09
      相关资源
      最近更新 更多