微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Paketo.io/Cloud Native Buildpacks Docker 镜像 rebaseCI-Pipeline,如 GitHub Actions 或 renovatebot自动创建 PR?

如何解决如何使用 Paketo.io/Cloud Native Buildpacks Docker 镜像 rebaseCI-Pipeline,如 GitHub Actions 或 renovatebot自动创建 PR?

如 Cloud Native Buildpack 功能中所述,它们添加a rebasing capability

无需重新构建即可即时更新基础映像。

Paketo 的 pack CLI 的

In the buildpacks docs the rebase operation 被描述为这样执行:

pack rebase my-app:my-tag

由于这是 Cloud Native Buildpacks 的关键功能之一 - 并且是大多数基于微服务的架构迫切需要的功能 - 很高兴知道如何在 CI/CD 管道内实现自动化,例如GitHub Actions 或依赖管理工具,如 renovate。 Renovate already supports Docker,但是因为没有 Paketo 的依赖管理文件,所以它现在不会创建拉取请求。

那么问题是如何在没有人工交互的情况下自动执行 Paketo/Buildpacks rebase 操作以创建 PR?

解决方法

pack rebase 命令将换出容器使用的运行映像。运行映像是您在构建映像时选择的构建器的一部分。

例如,有 Paketo paketobuildpacks/builder:base 构建器。您可以运行 pack inspect-builder paketobuildpacks/builder:base 并且 pack 将为您提供有关构建器的大量详细信息。其中包含一个部分,告诉您此构建器的运行映像以及使用此构建器构建的任何映像。

Run Images:
  index.docker.io/paketobuildpacks/run:base-cnb
  gcr.io/paketo-buildpacks/run:base-cnb

注意列出了两个,但它们是相同的图像,只是托管在两个不同的地方。

鉴于此,您将需要设置 CI 系统以监视构建器的运行映像的新版本。当有新的运行映像时,您需要 pack rebase 以便更新您的映像以使用最新的运行映像。

我没有使用过 Renovate,但听起来 Docker 支持可能正是您想要的。将其指向您的基本图像并使用它来触发 pack rebase 命令。

我们有一些 Github 动作来监控 Paketo 图像(不是为了这个特定目的,但想法是一样的)。没有很好的方法来做到这一点(至少在我写这篇文章的时候),但我们使用 schedule 定期检查图像的更新。然后启动工作流,在这种情况下,工作流基本上是运行 pack rebase

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。