Krz*_*lak 7 maven gitlab docker gitlab-ci
我想通过 gitlab CI 构建 docker 镜像,并将项目的版本作为标签:
docker build -t dockerimage:VERSION-IN-POM .
Run Code Online (Sandbox Code Playgroud)
在詹金斯的管道中,我得到了这样的版本:
${pom.version}
Run Code Online (Sandbox Code Playgroud)
是否可以从 gitlab CI 以类似、方便的方式读取版本?还是我必须为此编写脚本?
Ruw*_*han 10
假设您在构建环境中有 maven,您可以使用 maven help plugin 和 grep 来提取版本。
VERSION=$(mvn --non-recursive help:evaluate -Dexpression=project.version | grep -v '\[.*')
echo $VERSION
Run Code Online (Sandbox Code Playgroud)
Gitlab-CI 没有提供这样的便利,而是让您可以使用 shell 脚本做任何想做的事情。在命令脚本中做到这一点并不难。您可以安装xmllint(apt install libxml2-utils
在 Ubuntu 上),然后您可以通过一个简单的查询来获取它:
xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' pom.xml
Run Code Online (Sandbox Code Playgroud)
所以都可以通过这两行来解决:
- apt install libxml2-utils
- docker build -t dockerimage:$(xmllint --xpath '/*[local-name()="project"]/*[local-name()="version"]/text()' pom.xml) .
Run Code Online (Sandbox Code Playgroud)
小智 5
这适用于我的变量:gitlab-ci.yml
mvn -Dexec.executable='echo' -Dexec.args='${project.version}' --non-recursive exec:exec -q
Run Code Online (Sandbox Code Playgroud)
小智 5
另一种maven命令行替代方式直接获取版本信息
mvn --non-recursive help:evaluate -Dexpression=project.version -q -DforceStdout
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9176 次 |
最近记录: |