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.
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)
Si cela vous aide (sur Linux):
head -5 /var/lib/jenkins/config.xml| grep -oP '(?<=<version>).*?(?=</version>)'