web-dev-qa-db-fra.com

Obtenir la version de Jenkins via Java -jar jenkins.war --version sans spam

J'essaie d'obtenir la version de la guerre Jenkins déployée en /usr/share/jenkins/jenkins.war. J'essaye de courir:

local version=$(Java -jar /usr/share/jenkins/jenkins.war --version)

Malheureusement, cela affiche plusieurs lignes stupides de sortie sur stdout avant le numéro de version:

Running from: /usr/share/jenkins/jenkins.war
webroot: $user.home/.jenkins
1.643

Y a-t-il un moyen de dire à Jenkins d'éviter d'imprimer la racine Web et les lignes "en cours d'exécution"? C'est agaçant et j'imagine que toute tentative d'analyse (vérifier la 3ème ligne de stdout) risque de se briser à l'avenir. 

6
Kevin Burke

Depuis Jenkins 1.649, l’indicateur --version provoque l’impression directe de la version, sans aucune information supplémentaire:

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

(réponse originale, avant Jenkins 1.649)

Dans le cadre du processus d'emballage de WAR, la version de Jenkins est écrite dans le manifeste, d'où provient l'indicateur --version.

Donc, même si cela n’est pas particulièrement joli, cela devrait être stable:

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

(en supposant que unzip et ses amis soient disponibles)

14
Christopher Orr

Si cela vous aide (sur Linux):

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