在线客服

Google Cloud DevOps实践中,如何使用Cloud Build进行自动化构建?

⏱️2026-04-25 09:00 👁️3

🚀 使用 Cloud Build 进行自动化构建,简直是 DevOps 的神兵利器!

一、准备工作 🛠️

  1. Google Cloud 项目: 确保你有一个 Google Cloud 项目,并且启用了 Cloud Build API。
  2. 源代码仓库: 代码放在 GitHub、Cloud Source Repositories 或者 Bitbucket 上。
  3. Dockerfile(可选): 如果你的应用需要容器化,准备好 Dockerfile。
  4. Cloud Build 配置文件 (cloudbuild.yaml 或 cloudbuild.json): 定义构建步骤。

二、Cloud Build 配置文件详解 📝

Cloud Build 配置文件是核心!它告诉 Cloud Build 如何构建你的应用。

基本结构:


steps:
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/$PROJECT_ID/my-image:$BUILD_ID', '.']
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'gcr.io/$PROJECT_ID/my-image:$BUILD_ID']
images: ['gcr.io/$PROJECT_ID/my-image:$BUILD_ID']

  • steps: 构建步骤列表,每个步骤在一个 Docker 容器中执行。
  • name: 使用的构建器镜像,Cloud Build 提供了很多预定义的构建器,比如 docker、gcloud、kubectl 等。
  • args: 传递给构建器镜像的参数。
  • images: 构建完成后要推送的镜像列表。

常用构建器:

  • gcr.io/cloud-builders/docker: 用于构建和推送 Docker 镜像。
  • gcr.io/cloud-builders/gcloud: 用于执行 gcloud 命令,比如部署应用到 App Engine 或 Cloud Functions。
  • gcr.io/cloud-builders/git: 用于执行 git 命令,比如克隆代码仓库。
  • gcr.io/cloud-builders/mvn: 用于构建 Maven 项目。
  • gcr.io/cloud-builders/npm: 用于构建 Node.js 项目。
  • gcr.io/cloud-builders/kubectl: 用于与 Kubernetes 集群交互。

示例:构建 Docker 镜像并推送到 Container Registry


steps:
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/$PROJECT_ID/my-app:$BUILD_ID', '.']
images: ['gcr.io/$PROJECT_ID/my-app:$BUILD_ID']

示例:部署到 App Engine


steps:
  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['app', 'deploy']

示例:运行单元测试


steps:
  - name: 'gcr.io/cloud-builders/mvn'
    args: ['test']

使用环境变量 ⚙️

Cloud Build 提供了很多有用的环境变量,比如:

  • $PROJECT_ID: Google Cloud 项目 ID。
  • $BUILD_ID: 当前构建的 ID。
  • $COMMIT_SHA: 触发构建的提交的 SHA 值。
  • $BRANCH_NAME: 触发构建的分支名称。
  • $TAG_NAME: 触发构建的标签名称。

三、触发构建 🚀

有多种方式触发 Cloud Build:

  1. 手动触发: 在 Cloud Console 中手动触发构建。
  2. 通过 Cloud Source Repositories 触发: 当代码推送到 Cloud Source Repositories 时自动触发构建。
  3. 通过 GitHub 或 Bitbucket 触发: 当代码推送到 GitHub 或 Bitbucket 时自动触发构建。需要配置 Webhook。
  4. 使用 Cloud Scheduler 定时触发: 定时执行构建。
  5. 使用 Cloud Functions 触发: 通过 Cloud Functions 监听事件并触发构建。

配置 GitHub 触发器:

  1. 在 Cloud Console 中,进入 Cloud Build -> Triggers。
  2. 点击 "Create Trigger"。
  3. 选择你的代码仓库 (GitHub)。
  4. 配置触发器:
    • Name: 触发器名称。
    • Description: 触发器描述。
    • Event: 触发事件 (Push to a branch, Create a tag)。
    • Source: 仓库和分支/标签。
    • Build configuration: 选择 Cloud Build 配置文件 (cloudbuild.yaml)。
  5. 保存触发器。

四、Google Cloud DevOps 实践示例 🌟

假设我们有一个 Node.js 应用,想要使用 Cloud Build 进行自动化构建、测试和部署到 Cloud Run。

1. Dockerfile


FROM node:14

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 8080

CMD ["npm", "start"]

2. cloudbuild.yaml


steps:
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/$PROJECT_ID/node-app:$BUILD_ID', '.']
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'gcr.io/$PROJECT_ID/node-app:$BUILD_ID']
  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['run', 'deploy', 'node-app',
           '--image', 'gcr.io/$PROJECT_ID/node-app:$BUILD_ID',
           '--platform', 'managed',
           '--region', 'us-central1',
           '--allow-unauthenticated']
images: ['gcr.io/$PROJECT_ID/node-app:$BUILD_ID']

3. 流程

  1. 代码推送到 GitHub 仓库。
  2. GitHub Webhook 触发 Cloud Build。
  3. Cloud Build 执行 cloudbuild.yaml 中的步骤:
    • 构建 Docker 镜像。
    • 推送 Docker 镜像到 Container Registry。
    • 部署应用到 Cloud Run。

五、高级用法 🚀🚀

  • 使用 Service Account: 授予 Cloud Build Service Account 必要的权限,比如访问 Container Registry、Cloud Run 等。
  • 构建缓存: 使用 cache 字段缓存构建依赖,加快构建速度。
  • 自定义构建器: 如果 Cloud Build 提供的构建器不能满足需求,可以创建自定义构建器。
  • 构建状态通知: 配置构建状态通知,比如发送到 Slack 或邮件。

🎉 总结:Cloud Build 是一个非常强大的自动化构建工具,可以帮助你实现 CI/CD,提高开发效率!

鲨鱼云自助平台

鲨鱼云自助平台是一站式国际云服务解决方案平台,支持阿里云国际、腾讯云国际、亚马逊AWS、谷歌云GCP等主流云厂商账号的开通、充值与管理。

热门文章
更多>