![GCP:我可以使用 Cloud Build 在 VM 实例中执行 CI/CD 任务吗?](https://linux22.com/image/759428/GCP%EF%BC%9A%E6%88%91%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20Cloud%20Build%20%E5%9C%A8%20VM%20%E5%AE%9E%E4%BE%8B%E4%B8%AD%E6%89%A7%E8%A1%8C%20CI%2FCD%20%E4%BB%BB%E5%8A%A1%E5%90%97%EF%BC%9F.png)
我正在使用 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
进入目录、提取项目存储库的主分支并开始运行main.py
(假设它是一个 Python 项目)?
答案1
您可以配置一个工作流,以便您在 GCE 实例中部署和执行任务。我在 Google Cloud Platform 中找到了一个很好的例子 Github存储库,这可能就是您正在寻找的:
它将在您的 Container Builder 工作区中创建一个临时的 SSH 密钥。
然后,将启动一个实例。
工作区将被复制到之前启动的实例。
命令将在该实例的工作区内运行。
请记住,您需要创建一个适当的 IAM 角色,并具有创建和销毁 Compute Engine 实例的权限:
export PROJECT=$(gcloud info --format='value(config.project)')
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT --format 'value(projectNumber)')
export [email protected]
gcloud services enable cloudbuild.googleapis.com
gcloud services enable compute.googleapis.com
gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:$CB_SA_EMAIL --role='roles/iam.serviceAccountUser' --role='roles/compute.instanceAdmin.v1' --role='roles/iam.serviceAccountActor'
然后,您应该配置您的构建步骤,例如,如果您想运行您的 python 应用程序:
steps:
- name: gcr.io/$PROJECT_ID/remote-builder
env:
- COMMAND=sudo python3 main.py
问候。