【问题标题】:How to call Docker and Push Images to GCR from Go in Google Cloud Builder如何在 Google Cloud Builder 中从 Go 调用 Docker 并将图像推送到 GCR
【发布时间】:2019-09-24 15:15:33
【问题描述】:

我希望过渡到 Google Cloud Builder 来构建我的项目。该项目包含许多我想要构建并推送到 Google Container Registry 的 Docker 映像。

我有一个 Cobra CLI 命令,它在 Travis CI 上运行良好,可以自动进行 linting(golint 和 go vet)、格式化(gofmt)、测试(go test)以及其他一些事情,例如自动化原型编译。该命令还为存储库中的每个可执行文件 (package main) 发现、构建和推送一个 Docker 映像(有很多)。

我想过渡到 Cloud Builder,但我不清楚如何从 Cobra CLI 调用 Docker。提供的go 构建器镜像gcr.io/cloud-builders/go 没有Docker CLI 和Docker 构建器镜像gcr.io/cloud-builders/docker 似乎没有go 运行时。

任何关于如何设置 Cloud Builder yaml 的建议,让我能够利用经过身份验证的 Docker CLI,同时还提供对 go 的支持,我们将不胜感激。

【问题讨论】:

    标签: google-cloud-platform gcloud google-container-registry google-cloud-build


    【解决方案1】:

    有趣的问题。

    Cloud Build“构建”(最好)使用cloudbuild.yaml 文件进行配置。此配置文件是 CI|CD 流程的声明性定义,应构成源代码库的一部分,可以在签入等时运行。

    最好将 Cloud Build 视为管道处理器;它将一系列功能(顺序)应用于某些输入。通常,输出(工件)是容器图像(但不一定是)。每个管道步骤都显示为一个容器(图像给定了一些输入、参数等)

    因此,虽然 Cloud Build 可以替代您的 Travis 作业,但您需要做一些工作来转换使用 Cobra 以编程方式调用的一系列命令行步骤 (go,@987654326 @, gofmt) 转化为 YAML 中定义的一系列等效容器化步骤。

    这是 Google 支持的容器的 list。因为 Cloud Build 的工作单元是一个 (ny) 容器(映像),所以几乎可以使用任何东西。这是社区提供的图片的list。

    golint 和 gofmt 没有列出(尽管我假设有人已经构建了它们)。这些对于您开发然后包含在您的管道中将是微不足道的。如果您确实构建了它们,请将它们提交到社区 repo。

    包含 gRPC protoc (link)

    【讨论】:

      猜你喜欢
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-02
      • 2020-04-22
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多