Accéder à Construire Changelog dans Jenkins
J'ai été en tirant mes cheveux en essayant de trouver un moyen d'inclure la liste des changements générés par Jenkins (depuis le SVN de traction) dans notre Testflight notes. Je suis à l'aide de la Testflight Plugin, qui dispose d'un champ pour les notes, mais il ne semble pas être tout paramater/jeton que jenkins crée pour l'incorporer de l'information.
Quelqu'un avait une chance d'accomplir quelque chose de ce genre?
- J'avais besoin de la même chose. Merci de poser cette question, et je suis d'autant plus reconnaissant pour la réponse.
Vous devez vous connecter pour publier un commentaire.
Il ressemble à la TestFlight Plugin étend variables placées dans le de Construire "Notes", donc la question est: comment pouvons-nous obtenir les changements pour la version actuelle dans une variable d'environnement?
Autant que je sache, la Subversion plugin ne fournit pas cette information via une variable d'environnement. Cependant, tous Jenkins SCM plugins intégrer changelog de l'information, comme vous pouvez le voir via les "Changements" dans l'INTERFACE utilisateur web pour chaque build.
Cette information est également disponible via le Jenkins API, même si une construction est en cours.
Par exemple, si vous ajoutez un "Exécuter shell" construire l'étape où vous exécutez cette commande:
Vous obtiendrez un document XML similaire à ceci:
Vous pouvez ensuite le format de cette information comme il vous plaît et de le placer dans une variable d'environnement qui peuvent ensuite être référencés dans le TestFlight "Construire des Billets de la section".
Toutefois, la définition d'une variable d'environnement dans une étape de génération n'est pas persistante par défaut — faire nécessite l'aide de la EnvInject Plugin.
Dans ce cas, vous pourriez écrire votre journal des modifications de texte dans un fichier temporaire avec le contenu comme:
Puis, à l'aide d'une étape de génération avec la Propriétés De L'Environnement Chemin D'Accès Au Fichier option pour charger ce fichier, le
$CHANGELOG
variable existe dans votre environnement et persistent jusqu'à la fin de la construction, vous permettant de l'utiliser dans le de Construire "Notes".Remarque: je n'ai pas utilisé le TestFlight plugin moi-même (bien que j'ai pris un coup d'oeil sur le code), et j'ai testé uniquement les changements de l'API avec un dépôt Git. De même, je n'ai pas tester la façon dont les retours à la ligne doit être encodé avec le EnvInject plugin, ce qui pourrait causer des problèmes.
sed -e "s/<\/*comment>//g" | sed '/^$/d;G'
à dépouiller le XML<comment>
balises et nettoyer les retours à la ligne.sed -e "s/<\/comment>//g; s/<comment>/\t* /g; s/<\/*changes>//g" | sed '/^$/d;G'
CHANGELOG=$(curl "http://localhost:8080/job/myproject/$UPSTREAM_BUILD_NUMBER/api/xml?wrapper=changes&xpath=//changeSet//comment" | sed -e "s/<\/comment>//g; s/<comment>/* /g; s/<\/*changes>//g" | sed '/^$/d;G') echo $CHANGELOG
L' $fichier "CHANGELOG" contient une liste de tous les fichiers et dossiers dans le dossier actuel ET le changelog. Comment les fichiers/dossiers du dossier en cours apparaissent dans cette variable??Étant donné que Jenkins journal changé de format, j'ai mis à jour le contenu XML à partir de l'original post. Aussi, depuis l'origine TestFlight est mort, et le plugin est maintenant obsolète, je suis en train de bousculer le contenu dans un fichier HTML pour une utilisation avec HockeyKit. C'est vraiment un fichier texte AVEC des sauts de ligne. Prise de sed insérer des sauts de ligne, c'est ..un défi, et la chaîne a l'air très confus (au moins pour moi) au premier coup d'oeil.
Note Edit: BuildDestinationPath et Changelog sont mes variables locales. Les Variables en majuscules sont Jenkins variables d'environnement et doit exister sur toute l'installation.
Je suis à l'aide de celle trouvée ici: http://jenkins.361315.n4.nabble.com/Get-SVN-changes-td3511042.html
Très simple et cela fonctionne pour SVN.
En fait, vous pouvez accéder à cette information avant la phase de construction terminer par la lecture/l'analyse de l' ../construit/$BUILD_NUMBER/changelog.xml fichier dans le dossier de création.
Ce fichier est créé avec la SVN/GIT commit le déclenchement et pas avec la fin de la construction ou post_build phase. Cela signifie que, vous pouvez l'analyser au début de la phase de construction du même travail avec un script et d'insérer les données dans des variables d'environnement.
C'est, si vous ne voulez pas utiliser la boucle et XML.
J'ai fait quelques exemple python qui convertit xml pour CHANGELOGS
note.xml devrait être
réelle python code est ci-dessous
La Testflight Plugin a une option pour cela. Voici le commit:
https://github.com/jenkinsci/testflight-plugin/commit/e8edfef012d4bdefb95ee24818891a27ac920a36
Je n'ai pas vu dans les plus récentes testflight-plugin version alors j'ai construit le plugin à partir de git et il dispose de cette option.