使用社区提供的构建器和自定义构建器

本页面介绍如何在 Cloud Build 中使用社区提供的构建器和自定义构建器。通过 Cloud Build 开发者社区提供 构建器 可用于执行任务。如果您要执行的任务需要用到现有映像未提供的功能,则可以构建自己的自定义映像并在构建步骤中使用。如需了解不同类型的构建器,请参阅 Cloud Builder

如果您是刚接触 Cloud Build,请先阅读快速入门构建配置概览

使用社区提供的构建器

社区提供的构建器没有可用的预构建的映像;要在 Cloud Build 配置文件中使用这些构建器,您必须先构建映像并将其推送到项目中的 Container Registry

如需使用社区提供的构建器,请执行以下操作:

  1. 构建和推送构建器:

    1. 导航到您的项目根目录。

    2. 克隆 cloud-builders-community 代码库:

      git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
      
    3. 导航到您要使用的构建器映像,其 中builder-name 是包含构建器的目录:

      cd cloud-builders-community/builder-name
      
    4. 将构建器提交到您的项目:

      gcloud builds submit .
      
    5. 导航回您的项目根目录:

      cd ../..
      
    6. 从根目录中移除代码库:

      rm -rf cloud-builders-community/
      
  2. 在 Cloud Build 配置文件中,在构建步骤中使用构建器:

    YAML

    steps:
    - name: 'gcr.io/project-id/builder-name'
      args: ['arg1', 'arg2', ...]
    ...
    

    JSON

    {
      "steps": [
      {
        "name": "gcr.io/project-id/builder-name",
        "args": [
          "arg1",
          "arg2",
          ...
        ]
        ...
      }
      ]
    }
    
  3. 使用构建配置文件手动启动构建使用触发器启动构建

有关如何使用社区提供的构建器的示例,请参阅部署到 Firebase使用 Packer 构建虚拟机映像

创建自定义构建器

如果您要执行的任务需要用到公共映像、受支持的构建器或社区提供的构建器未提供的功能,则可以构建自己的映像并在构建步骤中使用。

下面提供了一些您何时需要使用自定义构建器映像的示例:

  • 从外部位置下载源代码或程序包。
  • 使用外部工具链。
  • 缓存任何必要的库。
  • 预构建源代码(Cloud Build 仅负责在可能的情况下将构建封装到映像中)

与其他任何构建器一样,自定义构建器与装载于 /workspace 下方的源一起运行,并与 /workspace 中的某个工作目录一起运行。由给定构建步骤保留在 /workspace 中的任何文件都可用于其他构建步骤。

自定义构建器可以推送到您的构建服务账号有权访问的 Container Registry(托管在 gcr.io/$PROJECT-NAME/ 上)中的代码库,也可以从该代码库中拉取自定义构建器。

以下步骤展示了如何使用示例 Dockerfile 创建和使用自定义构建器:

  1. 创建自定义构建器映像:

    1. 为自定义构建器创建 Dockerfile。以下代码展示了一个示例 Dockerfile

        FROM alpine
        RUN apk add curl
        CMD curl https://httpbin.org/ip -s > myip.txt; echo "*** My IP is: $(cat myip.txt)"
      
    2. 构建自定义构建器并将其推送到项目中的 Container Registry,并替换 project-idimage-name 的值:

        gcloud builds submit --tag gcr.io/project-id/image-name
      
  2. 通过在构建步骤的 name 字段中指定构建器,可以在 Cloud Build 中使用自定义构建器映像:

    YAML

        steps:
        - name: 'gcr.io/project-id/image-name'
          id: Determine IP of this build worker
    

    JSON

        {
          "steps": [
          {
            "name": "gcr.io/project-id/image-name",
            "id": "Determine IP of this build worker"
          }
          ]
        }
    
  3. 使用构建配置文件手动启动构建使用触发器启动构建

后续步骤