2

我收到了一个由许多 s 构建的项目,这些Makefiles 运行许多docker命令。我想在 Cloud Build 上构建它。

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

我尝试了 make Custom Build 步骤,但 Cloud Build 由于缺少dockerand 而失败kubectl。所以我可以将这些添加到Dockerfilemake Custom Build 步骤中,但这似乎是错误的,因为然后 make运行 Docker-in-Docker 并且这会导致问题——例如,gcloud权限kubectl和上下文丢失。

作为这样一个 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?

4

1 回答 1

3

要回答您的评论:“如何在 docker 容器中运行 docker?”,您必须像跑步者一样看待您的自定义云构建器。您可以在 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 容器中。

于 2019-11-29T12:02:23.903 回答