通过java -jar jenkins.war获取Jenkins版本 - 无垃圾邮件输出

Kev*_*rke 9 command-line-interface jenkins

我正试图将Jenkins战争的版本部署到/usr/share/jenkins/jenkins.war.我尝试跑步:

local version=$(java -jar /usr/share/jenkins/jenkins.war --version)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会在版本号之前将几行输出打印到stdout:

Running from: /usr/share/jenkins/jenkins.war
webroot: $user.home/.jenkins
1.643
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉Jenkins避免打印webroot和"从"运行"?这很烦人,我想任何解析它的尝试(检查stdout的第3行)很容易在将来破坏.

Chr*_*Orr 15

自Jenkins 1.649以来,该--version标志导致版本直接打印出来,没有任何无关的信息:

$ wget -q http://mirrors.jenkins.io/war/1.649/jenkins.war \
      && java -jar jenkins.war --version
1.649
Run Code Online (Sandbox Code Playgroud)

(原始答案,前詹金斯1.649)

作为WAR打包过程的一部分,Jenkins版本被写入清单,这是--version标志得到答案的地方.

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

unzip -c /usr/share/jenkins/jenkins.war META-INF/MANIFEST.MF \
  | egrep ^Jenkins-Version: | awk '{print $2}' 
Run Code Online (Sandbox Code Playgroud)

(假设有unzip和朋友一起)


Alf*_*bel 5

这应该帮助(在Linux上):

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