Déclencheur paramétré Jenkins + Copie d'artefact

9

Je travaille sur la configuration de Jenkins pour gérer nos versions de versions. Une version de version se compose d'un programme d'installation de Windows qui inclut certains fichiers binaires qui doivent être construits sur Linux.

Voici ce que j'ai jusqu'à présent:

  • La partie Windows et la partie Linux sont configurées en tant que projets Jenkins distincts.
  • Le projet Windows est paramétré, en prenant la balise Subversion pour construire et publier.
  • Dans le cadre de sa construction, le projet Windows déclenche une génération de cette même balise Subversion pour le projet Linux (à l'aide du plug-in de paramétrage ), puis copie les artefacts du projet Linux (à l'aide du plug-in Copy Artifact ) dans l'espace de travail du projet Windows afin que ils peuvent être inclus dans le programme d'installation de Windows.

Là où je suis bloqué: pour le moment, Copy Artifact est configuré pour copier la dernière génération réussie. Il semble plus robuste de configurer Copier l'artefact pour copier à partir de la construction exacte déclenchée par le déclencheur paramétré, mais j'ai du mal à trouver comment faire fonctionner cela. Il y a une option pour un paramètre de "sélecteur de build" qui je pense est destiné à aider à cela, mais je ne peux pas comprendre comment il est censé être configuré (et expérimenter aveuglément avec différentes possibilités est quelque peu douloureux lorsque la construction prend une heure ou deux pour trouver le succès ou l'échec).

Comment dois-je configurer cela? Comment fonctionne le sélecteur de build?

Josh Kelley
la source

Réponses:

11

Après avoir terminé une génération déclenchée, vous aurez une nouvelle variable env définie sur le numéro de génération de cette génération déclenchée appelée TRIGGERED_BUILD_NUMBER_ <nom du travail>. Vous pouvez l'utiliser pour recopier spécifiquement les artefacts:

  1. La version Windows (appelée " WindowsBuild "), appelle la version Linux (appelée " LinuxBuild ") à l'aide du plugin Parameterized Trigger.

    Vous avez cette partie, assurez-vous de cocher Bloquer jusqu'à ce que les projets déclenchés terminent leurs builds et échouent la build bien sûr si la build Linux échoue.

  2. Ensuite dans votre copie des artefacts d'une autre étape du projet :

    Nom du projet: LinuxBuild

    Quelle version: version spécifique

    Numéro de build: $ TRIGGERED_BUILD_NUMBER_LinuxBuild (Tous les noms de projet ont des caractères non a-zA-Z ou 0-9 remplacés par _; plusieurs caractères sont condensés en un seul _).

Byron Brummer
la source
la variable d'environnement "$ TRIGGERED_BUILD_NUMBER_ <downstreamjob>" doit-elle être définie manuellement? Je ne le trouve dans aucune des variables d'environnement en amont ou en aval.
harish
1
Trouvé sur le plugin wiki que $ TRIGGERED_BUILD_NUMBER_ <downstreamjob> est défini automatiquement si "Bloquer jusqu'à ce que les projets déclenchés finissent leurs builds" est coché.
harish