通过 java -jar jenkins.war --version without spam output 获取 Jenkins 版本

Get Jenkins version via java -jar jenkins.war --version without spam output

我正在尝试将 Jenkins war 的版本部署到 /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 和 "running from" 行?这很烦人,我想任何解析它的尝试(检查 stdout 的第 3 行)在未来很容易被破坏。

从 Jenkins 1.649 开始,--version 标志导致版本被直接打印出来,没有任何无关信息:

$ wget -q http://mirrors.jenkins.io/war/1.649/jenkins.war \
      && java -jar jenkins.war --version
1.649

(原答案,pre-Jenkins1.649)

作为 WAR 打包过程的一部分,Jenkins 版本被写入清单,--version 标志从中得到答案。

所以虽然它可能不是特别漂亮,但应该是稳定的:

unzip -c /usr/share/jenkins/jenkins.war META-INF/MANIFEST.MF \
  | egrep ^Jenkins-Version: | awk '{print }' 

(假设 unzip 和朋友有空)

这是否有帮助(linux):

head -5  /var/lib/jenkins/config.xml| grep -oP '(?<=<version>).*?(?=</version>)'

可以从 config.xml 文件轻松检查 Jenkins 版本。

  1. 导航到服务器中的 Jenkins 文件夹位置。
  2. 在其中搜索 config.xml 文件。大多数情况下,它将直接位于 Jenkins 文件夹中
  3. 键入命令head -10 config.xml
  4. 应该在第7行 - 2.176.2