Comment obtenir le BUILD_USER dans Jenkins lorsque le travail déclenché par minuterie?
Je voulais montrer à l'utilisateur qui a déclenché un Jenkins travail dans le poste de travail d'e-mail. C'est possible en utilisant le plugin Construire Utilisateur Vars Plugin et la variable env BUILD_USER
.
Mais cette variable n'obtenez pas initialisé lorsque le travail est déclenché par un programmateur.
Comment pouvons-nous y parvenir? Je sais que nous avons un plugin appelé - EnvInject Plugin, et qui peut être...
Mais je veux juste savoir comment nous pouvons l'utiliser et trouver la solution...
OriginalL'auteur Musaffir Lp | 2016-03-24
Vous devez vous connecter pour publier un commentaire.
C'est très possible dans Jenkins
Il y a un plugin appelé -Construire Utilisateur Vars Plugin Jenkins, qui expose un ensemble de variables d'environnement qui décrivent l'utilisateur qui a commencé à la construire .
Il donne env variable comme BUILD_USER_ID, e-MAIL etc..
Cela fonctionne bien lorsque la construction est déclenché manuellement par un utilisateur connecté et lui donner des nom de l'utilisateur connecté pour BUILD_USER_ID
Comment cela env variable ne sera pas remplacé /initialisé lors de la build est déclenchée automatiquement par Jenkins, minuterie /programmateur
Joint une capture d'écran pour plus de détails
Ce problème peut être résolu par l'injection d'un état à l'Emploi en utilisant les Conditionnelle Étape de génération Plugin /Run Condition Plugin,où pour chaque job, nous pouvons ajouter une condition pour initialiser la variable BUILD_USER_ID uniquement lorsque la construction est causé ou déclenchée par la Minuterie ou un planificateur de tâches, par la définition d'une condition à l'aide de l'expression régulière..
OriginalL'auteur Musaffir Lp
Construire utilisateur vars plugin ne fonctionnait pas pour moi donc j'ai fait un quick-and-dirty hack:
Obtenir des informations de la ${BUILD_URL}/ API /json API est très utile
ce n'est pas de travail pour moi, même si je suis l'exécution de ce script section
OriginalL'auteur Kevin Brotcke
Je suis en utilisant une combinaison de la 'Exécuter Shell" et "Env Injecter' plugin comme suit:
Cette option a fonctionné pour moi. C'est un peu gênant pour moi car je suis passant à la construction des variables à un autre poste, et quand j'ai essayer de déclencher une parameterzied construire sur un autre poste, il ne fonctionne pas quand j'ai la même "vars" fichier de propriétés. J'ai fini d'enregistrer le fichier comme un artefact de la tâche d'origine et de les récupérer de l'autre qui serait plus difficile de créer un modèle.
OriginalL'auteur bishop
Le jeton $BUILD_CAUSE de la e-mail-ext plugin est ce que vous cherchez.
Vous pouvez voir l'intégralité du contenu du jeton de référence lorsque vous cliquez sur le ? juste après la Joindre journal de l' zone de liste déroulante au le contenu de l'email de configuration.
De quelques jetons ajoutés par les plugins, mais celui-ci devrait être aviable par défaut.
Edit: Comme l'a souligné par l'évêque dans les commentaires, lors de l'utilisation de la EnvInject plugin, l' $BUILD_CAUSE jeton est modifié à se comporter différemment.
$BUILD_CAUSE
ne comprend pas l'utilisateur.Pour vous qui est. Quand je fais démarrer le construire manuellement je vois mon nom dans le message. 'BUILD_CAUSE: Gestartet durch Benutzer Dominik Gebhart" Traduits: Commencé par l'utilisateur Dominik Gebhart. Quand sa a commencé par un Sondage déclenchée à partir de postCommit crochet ou une minuterie, et il s'appuie sur SCM des changements, il contient la " construction wurde durch eine SCM-Änderung ausgelöst.'Traduit: Construire déclenchée par le SCM des modifications. Pensez-vous que le contenu de la variable a été modifié par un autre plugin?
En effet. L'e-mail-ext plugin définit comme vous le dites, mais alors env-injecter le plugin remplace. Veuillez noter dans votre réponse afin que je puisse la rotation de mon vote de -1 à +1! (Vote verrouillé jusqu'à la post-édition.)
Ont également testé si $PROVOQUER obtient substituée trop?
Aussi, il ne doit remplacer lorsque vous activer le EvnInject dans votre travail, non seulement par le fait d'avoir ce Plugin installé.
OriginalL'auteur Dominik Gebhart
Installer la "construction de l'Utilisateur Vars Plugin" et l'utiliser comme ci-dessous:- [ Voir https://plugins.jenkins.io/build-user-vars-plugin ]
Assurez-vous pour vérifier la marque de la
Set jenkins user build variables
case à cocher sousBuild Environment
pour votre Jenkins travail de configuration.OriginalL'auteur Paramvir Singh Karwal
Je voulais déclencher construire initiateur info à l'un de mes jeu/troupeau groupe donc j'ai utilisé de la façon suivante pour obtenir de construire initiateur e-mail et nom par écrit dans Déclarative de la mode .
Je suis juste l'impression ici, vous pouvez l'utiliser pour stocker dans certains variable d'environnement ou d'écrire dans un fichier en donnant chemin d'accès du fichier selon votre convenance..
}
OriginalL'auteur ShreePrakash
Juste pour préciser Musaffir Lp répondre. Le Conditionnel Étape de génération plugin prend désormais en charge la Construire Provoquer directement - il nécessite la Exécuter État Plugin aussi.
Si vous voulais pour détecter le moment où la construction a commencé par une minuterie, vous pouvez sélectionner un Exécuter? la valeur de Construire Provoquer, avec Construire Provoquer de: TimerTrigger
C'est un peu plus simple et plus robuste que d'utiliser une regex. Il y a aussi d'autres éléments déclencheurs, vous pouvez détecter, par exemple lors de la construction était le résultat d'un Contrôle de Source de Gestion de commettre, vous pouvez sélectionner: SCMTrigger.
OriginalL'auteur ptha