Je voudrais pouvoir faire quelque chose comme:
AOEU=$(echo aoeu)
et avoir Jenkins ensemble AOEU=aoeu
.
La section Variables d'environnement dans Jenkins ne fait pas cela. Au lieu de cela, il se met AOEU='$(echo aoeu)'
.
Comment puis-je demander à Jenkins d'évaluer une commande shell et d'affecter la sortie à une variable d'environnement?
Finalement, je veux pouvoir affecter l'exécuteur d'un travail à une variable d'environnement qui peut être transmise ou utilisée par d'autres scripts.
Réponses:
Cela peut être fait via le plugin EnvInject de la manière suivante:
Créez une étape de construction "Exécuter le shell" qui s'exécute:
Créez une étape de génération de variables d'environnement Inject et définissez "Chemin d'accès du fichier de propriétés" sur
propsfile
.Remarque : Ce plugin n'est (principalement) pas compatible avec le plugin Pipeline.
la source
sh
sur le chemin.foo
sera exporté dans cette action shell spécifique mais pas dans d'autres actions.La manière la plus simple
Vous pouvez utiliser le plug-in EnvInject pour injecter des variables d'environnement au démarrage de la génération. Par exemple:
Comment vous savez que cela fonctionne
la source
key=value
. Dans mon cas d'utilisation, je génère la ligne complètement:cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[\d+\.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'
BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S"
etBUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S")
etBUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"`
n'a pas fonctionné pour moiDans mon cas, je devais ajouter la
JMETER_HOME
variable d'environnement pour être disponible via mes scripts de génération Ant dans tous les projets sur mon serveur Jenkins (Linux), d'une manière qui n'interfère pas avec mon environnement de construction local (Windows et Mac) dans lebuild.xml
script . La définition de la variable d'environnement via Gérer Jenkins - Configurer le système - Propriétés globales était le moyen le plus simple et le moins intrusif d'y parvenir. Aucun plug-in n'est nécessaire.La variable d'environnement est alors disponible dans Ant via:
Cela peut être vérifié pour les œuvres en ajoutant:
Ce qui produit:
la source
git
/path/to/my/git
etPATH+git
/path/to/my/git
. Cependant, si je suis en train d'accéder àgit
partir de l'unJenkins pipeline script
, je reçois:/bin/sh: git: command not found
.Vous pouvez utiliser le plug- in d' injecteur d'environnement pour définir les variables d'environnement dans Jenkins au niveau du travail et du nœud. Ci-dessous, je vais montrer comment les définir au niveau de l'emploi.
Manage Jenkins > Manage Plugins
et installez le plugin.Configure
écran de votre travailAdd build step
dans laBuild
section et sélectionnerInject environment variables
Si vous devez définir une nouvelle variable d'environnement en fonction de certaines conditions (par exemple, les paramètres de travail), vous pouvez vous référer à cette réponse .
la source
Vous pouvez essayer quelque chose comme ça
la source
Jenkinsfile
pipeline (pas de travail)! C'est génial, merci!EnvInject Plugin aka ( Environment Injector Plugin ) vous offre plusieurs options pour définir les variables d'environnement à partir de la configuration Jenkins.
En sélectionnant,
Inject environment variables to the build process
vous obtiendrez:Properties File Path
Properties Content
Script File Path
Script Content
et enfin
Evaluated Groovy script
.Evaluated Groovy script
vous donne la possibilité de définir la variable d'environnement en fonction du résultat de la commande exécutée :execute
méthode:Groovy
code explicite :(Plus de détails sur chaque méthode peuvent être trouvés dans l'aide intégrée (?))
Malheureusement, vous ne pouvez pas faire la même chose
Script Content
comme indiqué:la source
Le plugin Build Env Propagator vous permet d'ajouter de nouvelles variables d'environnement de construction, par exemple
la source
Dans mon cas, j'avais configuré des variables d'environnement en utilisant l'option suivante et cela a fonctionné-
la source
Normalement, vous pouvez configurer les variables d'environnement dans les propriétés globales dans Configurer le système .
Cependant, pour les variables dynamiques avec substitution de shell, vous souhaiterez peut-être créer un fichier de script dans le répertoire Jenkins HOME et l'exécuter pendant la génération. L'accès SSH est requis. Par exemple.
sudo su - jenkins
ousudo su - jenkins -s /bin/bash
Créez un script shell, par exemple:
Dans Jenkins Build ( Execute shell ), appelez le script et ses variables avant toute autre chose, par exemple
la source
sudo su - jenkins
,echo $USER
me donne toujoursroot
.su -l
paramètre pour cela, sinon posez une question distincte.Remarque: La valeur de la variable d'environnement arrive sous forme de chaîne. Si vous souhaitez l'utiliser comme un booléen, vous devez l'analyser en utilisant Boolean.parse (env.DISABLE_SQL).
la source
Essayez le plugin de script d'environnement ( GitHub ) qui est très similaire à EnvInject . Il vous permet d'exécuter un script avant la génération (après l'extraction SCM) qui génère des variables d'environnement pour celui-ci. Par exemple
et dans votre script, vous pouvez imprimer par exemple
FOO=bar
sur la sortie standard pour définir cette variable.Exemple à ajouter à une
PATH
variable de style existante :Vous êtes donc libre de faire tout ce dont vous avez besoin dans le script - soit
cat
un fichier, soit d'exécuter un script dans une autre langue à partir de l'arborescence source de votre projet, etc.la source
Vous pouvez utiliser l'une des méthodes suivantes répertoriées ci-dessous:
Gérer Jenkins -> Configurer le système -> Propriétés globales -> Variables d'environnement -> Ajouter
la source
Pour une raison quelconque,
sudo su - jenkins
ne me connecte pas à l'jenkins
utilisateur , j'ai fini par utiliser une approche différente.J'ai réussi à définir les variables env globales en utilisant jenkins
config.xml
at/var/lib/jenkins/config.xml
(installé dans Linux / RHEL) - sans utiliser de plugins externes.J'ai simplement dû arrêter jenkins add puis add
globalNodeProperties
, puis redémarrer.Exemple, je suis la définition des variables
APPLICATION_ENVIRONMENT
etSPRING_PROFILES_ACTIVE
àcontinious_integration
ci - dessous,la source
Nous utilisons un fichier de travail groovy:
la source