使用 Google Cloud Build,我如何 运行 一个执行 docker 和 kubectl 命令的 Makefile?

With Google Cloud Build, how do I run a Makefile that executes docker and kubectl commands?

我收到了一个项目,该项目由 Makefile 个 运行 个 docker 个命令组成。我想在 Cloud Build 上构建它。

我知道 Cloud Build 本机处理 Docker,但必须使用现有的 Makefile 结构。

我尝试了 make Custom Build step,但由于缺少 dockerkubectl,Cloud Build 失败了。所以我可以将它们添加到 make 自定义构建步骤的 Dockerfile 中,但似乎这是错误的,因为那时 make 运行s Docker-in-Docker 这会导致问题——例如,缺少 gcloudkubectl 权限和上下文。

作为此类 Makefile 的一小部分,这里是一个调用 docker builddocker push.

的目标
build/myapp/deployer: ...

    docker build \
        --build-arg REGISTRY="$(REGISTRY)/myapp" \
        --tag "$(APP_DEPLOYER_IMAGE)" \
        -f deployer/Dockerfile \
        .

    docker push "$(APP_DEPLOYER_IMAGE)"
    @touch "$@"

如何在 Cloud Build 中 运行 这些 Makefile?

要回答您的评论:"How to run docker inside a docker container?",您必须像 运行ner 一样看待您的自定义云生成器。您可以在 Cloud Build

中像这样使用它
- steps:
  - name: gcr.io/your-project/your-custom-builder
    entrypoint: "bash"
    args: 
      - "-c"
      - |
        Makefile
        <All the script lines that you want which use binaries installed in your custom builder>

这里是自定义 Cloud Builder 运行 命令,但结果存储在您的 Cloud Build 工作区中,而不是自定义 Cloud Builder 容器中。