Récupérer le nombre de constructions ou les artéfacts de la construction en aval à Jenkins

j'ai un travail (appelez-le BIGJOB) à Jenkins; plusieurs des étapes de construction sont de déclencher des constructions sur d'autres travaux (appelez-les SMALLJOB) en utilisant le Paramétrée Déclencher Plugin puis attendre pour eux de complet. Ce que je dois faire, c'est Récupérer des artefacts de la construction déclenchée sur SMALLJOB.

a L'origine, j'ai pensé que je pourrais utiliser le Copier Le Plugin Artefact pour récupérer les artefacts de la "dernière construction" de la petite tâche déclenchée. Et cela fonctionne de manière fiable lorsqu'il n'y a qu'un seul petit emploi à la fois.

mais j'ai plusieurs BIGJOBs en cours d'exécution, tous déclenchant plusieurs SMALLJOBs de sorte que l'utilisation de la "dernière construction" est peu fiable de deux SMALLJOBs terminer en même temps.

Existe-t-il un moyen plus fiable d'obtenir les artéfacts à partir du travail spécifique en aval? Si je pouvais juste obtenir le numéro de construction, je pourrais utiliser curl pour obtenir les artefacts.

21
demandé sur Jason Swager 2011-08-20 20:17:50

3 réponses

Seulement si l'un (d'autre) stumples à travers cette question dans l'avenir:

lors de L'utilisation du Plugin de déclenchement paramétré comme une étape de construction, puis si le déclencheur est configuré avec le "bloc jusqu'à ce que les projets déclenchés terminent leurs constructions" activé, les variables D'environnement suivantes sont mises à disposition pour les étapes de construction suivantes:

  • LAST_TRIGGERED_JOB_NAME= "Last project started"
  • TRIGGERED_BUILD_NUMBER_{nom du projet}= " dernier numéro de construction déclenchée"

à partir de la version 2.17 à partir de

  • TRIGGERED_JOB_NAMES= "virgule separated list of all triggered projects"
  • TRIGGERED_BUILD_NUMBERS_{nom du projet}= "virgule séparée de la liste des numéros de build déclenchés"
  • TRIGGERED_BUILD_RESULT_{nom du projet}= "Last triggered build result of project"
  • TRIGGERED_BUILD_RESULT_{nom du projet}RUN{build number}= " résultat de la construction déclenchée pour la construction le numéro de"
  • TRIGGERED_BUILD_RUN_COUNT_{nom du projet}= "nombre de constructions déclenchées pour le projet"

Voir plus d'infos sur le site du plugin - lien dans la question.

26
répondu tveon 2013-06-25 14:32:43

Trouvé ma réponse. Pas aussi facile que plugin ou une variable déjà définie, mais ça marche.

Utilisez L'API XML de Jenkins avec depth=1 (très important pour obtenir les URL entièrement traversées et toutes les informations disponibles) et XPATH. Voici un exemple de L'URL que j'ai utilisé:

http://jenkins/job/SMALLJOB/api/xml?depth=1&xpath=/freeStyleProject/build[action/cause/upstreamProject="%JOB_NAME%" and action/cause/upstreamBuild=%BUILD_ID%]/number/text()

cela retournerait le nombre de construction de la petite tâche droite (celle commencée par cette grosse tâche). Ensuite, utilisez ce nombre dans le téléchargement http à partir de Jenkins pour obtenir les fichiers de compilation archivés.

10
répondu Jason Swager 2011-08-22 20:58:28

vous pouvez Vous référer à ces fonctions :

Jenkins Build où vous pouvez trouver :

jenkinsapi.API.block_until_complete(jenkinsurl, des emplois, des maxwait=12000, intervalle=30, raise_on_timeout=True, nom d'utilisateur=Aucun, mot de passe=None)

jenkinsapi.API.get_artifacts(jenkinsurl, jobid=None, build_no=None, nom d'utilisateur=Aucun, mot de passe=None)

jenkinsapi.API.get_build(jenkinsurl, jobname, build_no, nom d'utilisateur=None, mot de passe=None)

jenkinsapi.API.get_latest_build(jenkinsurl, jobname, nom d'utilisateur=Aucun, mot de passe=None)

jenkinsapi.API.get_latest_complete_build(jenkinsurl, jobname, nom d'utilisateur=Aucun, mot de passe=None)

jenkinsapi.API.get_latest_test_results(jenkinsurl, jobname, nom d'utilisateur=Aucun, mot de passe=None)

jenkinsapi.API.get_nested_view_from_url(url, nom d'utilisateur=Aucun, mot de passe=None)

jenkinsapi.API.get_view_from_url (url), nom d'utilisateur=Aucun, mot de passe=None)

jenkinsapi.API.grab_artifact(jenkinsurl, jobid, artifactid, targetdir, nom d'utilisateur=Aucun, mot de passe=None)

jenkinsapi.API.install_artifacts(artefacts, dirstruct, dir, basestaticurl)

jenkinsapi.API.search_artifact_by_regexp(jenkinsurl, jobid, artifactRegExp, nom d'utilisateur=Aucun, mot de passe=None)

0
répondu Kamesh Jungi 2016-04-12 06:30:55