我正在尝试将 Jenkins 战争的版本部署到
/usr/share/jenkins/jenkins.war
。我尝试跑步:
local version=$(java -jar /usr/share/jenkins/jenkins.war --version)
不幸的是,这会在版本号之前将几行愚蠢的输出打印到标准输出:
Running from: /usr/share/jenkins/jenkins.war
webroot: $user.home/.jenkins
1.643
有没有办法告诉 Jenkins 避免打印 webroot 和“从”行运行?这很烦人,我想任何解析它的尝试(检查标准输出的第三行)将来都容易崩溃。
从 Jenkins 1.649 开始,
--version
标志导致版本直接打印出来,没有任何无关信息:
$ wget -q http://mirrors.jenkins.io/war/1.649/jenkins.war \
&& java -jar jenkins.war --version
1.649
(原始答案,Jenkins 1.649 之前)
作为 WAR 打包过程的一部分,Jenkins 版本被写入清单,这是
--version
标志从中获取答案的地方。
所以虽然它可能不是特别漂亮,但应该是稳定的:
unzip -c /usr/share/jenkins/jenkins.war META-INF/MANIFEST.MF \
| egrep ^Jenkins-Version: | awk '{print $2}'
(假设
unzip
和朋友有时间)
这是否有帮助(在 Linux 上):
head -5 /var/lib/jenkins/config.xml| grep -oP '(?<=<version>).*?(?=</version>)'
可以从 config.xml 文件轻松检查 Jenkins 版本。
要提取 WAR 文件,您应该在安装目录中找到它并导航到 META-INF\maven\org.jenkins-ci.main\jenkins-war 中的 pom.xml 文件。在此文件中,您将找到类似于以下内容的代码:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>jenkins-war</artifactId>
<version>2.426.2</version>
<packaging>war</packaging>
<name>Jenkins war</name>
.....
标签中提到了版本。就我而言,它是版本 2.426.2。