如Cloud Native Buildpack功能中所述,它们添加了的重新定基功能
无需重新构建即可即时更新基本图像。
在buildpacks文档中,Paketo的pack CLI的rebase操作被描述为如下执行:
pack rebase my-app:my-tag
由于这是Cloud Native Buildpacks的关键功能之一,也是大多数基于微服务的架构迫切需要的功能,因此很高兴知道如何在CI/CD管道(如GitHub Actions(或依赖管理工具(如翻新(中实现自动化。Renovate已经支持Docker,但由于没有针对Paketo的依赖性管理文件,它现在不会创建Pull Request。
因此,问题是如何在没有人工交互的情况下自动进行Paketo/Buildpacks重新基础操作以创建PR?
pack rebase
命令将交换容器使用的运行映像。运行图像是您在构建图像时选择的生成器的一部分。
例如,有一个Paketopaketobuildpacks/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图像(不是为了这个特定的目的,但想法是一样的(。没有很好的方法(至少在我写这篇文章的时候(,但我们使用时间表定期检查图像的更新。然后启动工作流,在这种情况下,工作流基本上是运行pack rebase
。