使用 helm 更新 pom 中的版本

LeY*_*ble 5 version maven kubernetes-helm

我只想更新一个应用程序版本字段。目前在 maven 的 pom.xml 中我有像往常一样的版本:

<version>1.1.0</version>
Run Code Online (Sandbox Code Playgroud)

我希望该字段继承 Helm 的 Chart.yaml appVersion 属性。

appVersion: 1.1.0
Run Code Online (Sandbox Code Playgroud)

这可以通过 Helm 模板或其他方式来完成吗?

小智 2

您可以在此处的验证阶段使用 maven-resources-plugin 将 Helm Chart 从一个文件夹复制到另一个文件夹。假设您在模板文件夹中有带有占位符的 helm 图表,并且在运行 helm 命令时您可以指向应用程序文件夹。

因此模板文件夹中的值文件可以包含占位符,例如

image:
  tag: application-${project.version}
Run Code Online (Sandbox Code Playgroud)

pom.xml 应包含启用过滤的 maven-resources-plugin。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <goals>
        <goal>resources</goal>
    </goals>
    <executions>
        <execution>
            <id>copy-resources-helm-deployment</id>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>k8s/app</outputDirectory>
                <resources>
                    <resource>
                        <directory>k8s/app/values_templates</directory>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

当执行 mvn clean process-resources 时,它将复制 k8s/app (输出目录)中的值文件,并将项目版本替换为 pom 版本。

有关 Maven 资源插件的更多信息,请参阅此https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html