我们在GitLab CI/CD管道中使用Heroku Buildpacks,方法是触发一个运行heroku构建器映像的作业,然后直接调用/cnb/lifecycle/creator,而不是使用pack CLI。这是因为我们不能在容器编排器上的docker中使用docker。
这一切都很好,但我们面临的问题是无法指定任何将添加到生成的图像中的自定义标签。默认情况下,这些标签是添加的:
- io.buildpacks.lifecycle.metadata
- io.buildpacks.build.metadata
- io.buildpacks.project.metadata
但我们还想添加以下标签:
- org.opencontainers.image.revision
- org.opencontainers.image.url
- org.opencontainers.image.source
- org.opencontainers.image.version
- org.opencontainers.image.licenses
- org.opencontainers.image.authors
不幸的是,似乎没有办法指定这一点。创建者没有提供任何配置参数来做这件事,就我所知,也没有包CLI。当使用Paketo构建包时,确实有一个指定的构建包来解决这一问题:https://github.com/paketo-buildpacks/image-labels
在使用Heroku构建包时,有没有任何方法可以做类似的事情?
2条答案
按热度按时间des4xlb01#
您可以将Paketo image-labels buildpack与Heroku构建包一起使用。下面是一个从
pack
CLI执行此操作的示例:使用CLI,您可以根据需要添加更多的
--buildpack
选项。如果您想对此进行编码,您可以创建一个
project.toml
,并使用io.buildpacks.post.group
始终在最后运行image-labels构建包。如果您使用的是
creator
二进制文件,则可以为它提供group.toml
https://github.com/buildpacks/spec/blob/main/platform.md#inputs-3byqmnocz2#
以下是如何实现这一目标的更详细答案:
1.创建自定义构建器映像,其中包含heroku构建包以及所需的映像标签buildpack by paketo
1.按指定顺序手动运行生命周期可执行文件
1.将图像标签buildpack的条目添加到组。toml检测器运行后
下面是一个构建自定义构建器映像的Dockerfile示例:
/opt/group.toml
下的文件如下所示:然后,您可以按如下方式运行生命周期:
请确保使用platform spec定义的正常值填充env变量。