我已经让詹金斯在两个独立的工作中做了两件事:
在第1步中,jar会有一些版本附加到文件名中(例如my-app-0.1-SNAPSHOT,my-app-1.0-RELEASE等)。我遇到的问题是在Dockerfile中我们必须根据上游版本的版本号提取正确的jar文件。另外,我理想地希望用相同的版本号标记泊坞窗图像。
很想听听社区有关此问题的任何可能解决方案。
提前致谢!!
答案 0 :(得分:0)
显然,您需要(1)中的唯一版本来引用(2)。
0.1 -> 0.2 -> 0.3 -> ...
从构建/ Docker的角度来看,事情如何协同工作并不太复杂。我想更大的挑战是放弃开发工作流程中的SNAPSHOT构建。
使用您当前的Jenkins:发布为您创建容器的每个构建。
更好的选择:选择使用构建管道的CI / CD服务器。如果您还没有这样做,请查看底层概念here。
答案 1 :(得分:0)
您可以在步骤1结束时使用Groovy Postbulid Plugin至extract with a regular expression生成的.jar文件的确切名称。
然后对于第2步,您可以拥有一个Dockerfile模板,并在其中替换一些具有确切jar名称的占位符,构建映像并将其推送到您的注册表。
或者,如果您不使用Dockerfile,您可以在Docker注册表中拥有预制的Docker映像,该映像包含除jar文件之外的所有内容,并使用以下步骤将jar添加到其中:
答案 2 :(得分:0)
我的客户也需要。最后,我们将占位符放在Dockerfile中,这些占位符在docker build
之前使用sed替换。
这样,您就可以在FROM
或任何文件名中的多个位置使用该版本。
示例:
FROM custom:@placeholder@
ENV VERSION @placeholder@
RUN wget ***/myjar-${VERSION}.jar && ...
关于一致性,使用了唯一的版本: