Jenkins – passer des variables entre les travaux?

J’ai deux emplois dans Jenkins, tous deux nécessitant le même paramètre.

Comment puis-je exécuter le premier travail avec un paramètre afin que, lorsqu’il déclenche le deuxième travail, le même paramètre soit utilisé?

Vous pouvez utiliser le plug-in de déclenchement paramétré qui vous permettra de transmettre des parameters d’une tâche à une autre.

1.Post-Build Actions> Sélectionnez «Trigger paramétré sur d’autres projets»

2.Entrez la variable d’environnement avec value.Value peut également être Jenkins Build Parameters.

Les étapes détaillées peuvent être vues ici: –

https://itisatechiesworld.wordpress.com/jenkins-related-articles/jenkins-configuration/jenkins-passing-a-parameter-from-one-job-to-another/

J’espère que c’est utile 🙂

La réponse acceptée ici ne fonctionne pas pour mon cas d’utilisation. J’avais besoin de pouvoir créer dynamicment des parameters dans un travail et de les transmettre à un autre. Comme Mark McKenna le mentionne, il n’y a apparemment aucun moyen d’exporter une variable depuis une étape de construction du shell vers les actions de post-construction.

J’ai obtenu une solution de contournement à l’aide du plug-in Parameterized Trigger en écrivant les valeurs dans un fichier et en utilisant ce fichier comme parameters à importer via “Ajouter une action post-build” -> “Trigger paramétré …” > ‘Paramètres du fichier de propriétés’.

Ajoutez simplement ma réponse à celle de Nigel Kirby, car je ne peux pas encore faire de commentaire:

Pour passer un paramètre créé dynamicment, vous pouvez également exporter la variable dans la mosaïque ‘Execute Shell’ puis la passer par ‘Trigger paramétrée sur d’autres projets’ => ‘Paramètres prédéfinis’ => donner ‘YOUR_VAR = $ YOUR_VAR’. Mon équipe utilise cette fonctionnalité pour transmettre la version du package npm du travail de génération aux travaux de déploiement.

UPDATE: ci-dessus ne fonctionne que pour les parameters injectés Jenkins, le paramètre créé à partir du shell doit toujours utiliser la même méthode. par exemple. echo YOUR_VAR = $ {YOUR_VAR}> variable.properties et transmettez ce fichier en aval

Je pense que la réponse ci-dessus nécessite une mise à jour:

J’essayais de créer un répertoire dynamic pour stocker mes artefacts de construction en amont afin que je veuille passer mon numéro de build de travail en amont au travail en aval. J’ai essayé les étapes ci-dessus mais je ne pouvais pas le faire fonctionner. Voici comment cela a fonctionné:

  1. J’ai copié les artefacts de mon travail en cours en utilisant le plug-in de copie d’artefacts.
  2. Dans l’action post-build du travail en amont, j’ai ajouté la variable comme “SOURCE_BUILD_NUMBER = $ {BUILD_NUMBER}” et l’ai configurée pour déclencher le travail en aval.
  3. Tout a fonctionné sauf que mon travail en aval n’a pas pu obtenir $ SOURCE_BUILD_NUMBER pour créer le répertoire.
  4. J’ai donc découvert que pour utiliser cette variable, je devais définir la même variable dans le travail en aval en tant que variable de paramètre comme dans cette image ci-dessous:

entrer la description de l'image ici

En effet, la nouvelle version de jenkins vous oblige à définir également la variable dans le travail en aval. J’espère que c’est utile.

Vous pouvez utiliser le générateur Hudson Groovy pour ce faire.

Premier emploi dans le pipeline

entrer la description de l'image ici

Deuxième emploi dans le pipeline

entrer la description de l'image ici

J’ai rencontré le même problème lorsque j’ai dû passer une version pom à un travail Rundeck en aval.

Ce que j’ai fait, c’était d’utiliser des parameters d’injection via un fichier de propriétés en tant que tel:

1) Création de propriétés dans un fichier de propriétés via un shell:

Construire des actions:

  • Exécuter un script shell
  • Variables d’environnement d’injection

Ex: définition des propriétés

2) Passer les propriétés définies au travail en aval: Actions post-construction:

  • Déclencheur paramétré sur autre projet
  • Ajouter des parameters: Paramètres de construction actuels
  • Ajouter des parameters: parameters prédéfinis

Ex: envoi de propriétés

3) Il était alors possible d’utiliser $ POM_VERSION en tant que tel dans le travail Rundeck en aval.

/! \ Version Jenkins: 1.636

/! \ Pour une raison quelconque lors de la création de la génération déclenchée, il était nécessaire d’append l’option ‘Paramètres de construction actuels’ pour transmettre les propriétés.

En parcourant les réponses, je ne vois pas d’autre option qui me plaira et qui l’offrira également. J’adore le paramétrage des tâches, mais ça ne va pas toujours bien. Si vous avez des tâches qui ne sont pas directement en aval du premier travail, mais plus loin dans le pipeline, vous ne voudrez pas vraiment paramétrer chaque travail du pipeline pour pouvoir transmettre les parameters à toutes les étapes. Ou si vous avez un grand nombre de parameters utilisés par divers autres travaux (en particulier ceux qui ne sont pas nécessairement liés à un travail parent ou maître), le paramétrage ne fonctionne pas non plus.

Dans ces cas, je suis favorable à la sortie des valeurs dans un fichier de propriétés, puis à l’injecter dans le travail dont j’ai besoin à l’aide du plug- in EnvInject . Cela peut être fait dynamicment, ce qui est une autre façon de résoudre le problème à partir d’une autre réponse ci-dessus où les travaux paramétrés étaient encore utilisés. Cette solution évolue très bien dans de nombreux scénarios.

Voir ma réponse dans cet autre article:

Travaillé pour moi (le paramètre doit être spécifié dans les deux tâches, pas seulement dans la tâche parent)

https://stackoverflow.com/a/40348900/2010136