Comment définir des variables d'environnement dans Jenkins?
Je voudrais être en mesure de faire quelque chose comme:
AOEU=$(echo aoeu)
et ont Jenkins ensemble AOEU=aoeu
.
La Variables d'Environnement section dans Jenkins ne pas le faire. Au lieu de cela, il définit AOEU='$(echo aoeu)'
.
Comment puis-je obtenir Jenkins pour évaluer une commande shell et affecter la sortie d'une variable d'environnement?
Finalement, je veux être en mesure d'assigner le liquidateur d'une tâche à une variable d'environnement qui peuvent être transmis à ou utilisé par d'autres scripts.
- EnvInject plugin est avoir un sérieux problème de sécurité. Maintenant Jenkins est d'avoir intégré l'appui de cette stackoverflow.com/a/53430757/1753177
Vous devez vous connecter pour publier un commentaire.
Cela peut être fait via EnvInject plugin de la manière suivante:
Créer un "Exécuter shell" étape de génération qui s'exécute:
Créer un Injecter des variables d'environnement étape de génération et de définir des "Propriétés du Fichier Chemin d'accès" à
propsfile
.Note: Ce plugin est (surtout) pas compatible avec le Pipeline plugin.
echo 'AOEU=' > propsfile
et puisecho `echo aoeu` > propsfile
. Dans la prochaine étape de génération que vous chargez propsfile (le contenu de ce qui est maintenantAOEU=aoeu
).sh
sur le chemin.export foo="bar"
?La façon la plus simple
Vous pouvez utiliser EnvInject plugin d'injecter des variables d'environnement lors de la compilation de démarrage. Par exemple:
Comment vous savez que c'est de travail
key=value
. Dans mon cas d'utilisation de générer de la ligne: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"])'
echo FOO=BAR
, mais qui semble être un bon test pour voir si cela fonctionne pour vous.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"`
ne fonctionne pas pour moiDans mon cas, j'ai besoin d'ajouter le
JMETER_HOME
variable d'environnement disponibles par l'intermédiaire de mes scripts Ant à travers tous les projets sur mon serveur Jenkins (Linux), de manière à ne pas interférer avec ma construction locale de l'environnement (Windows et Mac) dans lebuild.xml
script. Définition de la variable d'environnement via Gérer Jenkins - Configurer le Système Mondial de propriétés a été la méthode la plus simple et la moins intrusive, la façon d'y parvenir. Pas de plugins nécessaires.La variable d'environnement est alors disponible dans Ant par:
Cela peut être vérifié à des œuvres en ajoutant:
Qui produit:
git
/path/to/my/git
etPATH+git
/path/to/my/git
. Cependant, si j'essaie d'accéder àgit
de l'unJenkins pipeline script
, j'obtiens:/bin/sh: git: command not found
.Vous pouvez utiliser L'Environnement De L'Injecteur Plugin pour définir des variables d'environnement dans Jenkins à l'emploi et les niveaux de nœuds. Ci-dessous je vais vous montrer comment mettre au niveau de la tâche.
Manage Jenkins > Manage Plugins
et installer le plugin.Configure
écranAdd build step
dansBuild
section et sélectionnezInject environment variables
Si vous avez besoin de définir une nouvelle variable d'environnement en fonction de certaines conditions (p. ex. les paramètres de travail), alors vous pouvez vous référer à cette réponse.
Vous pouvez essayer quelque chose comme cela
Jenkinsfile
pour un pipeline (pas d'emploi)! C'est génial, merci pour elle!EnvInject Plugin aka (de l'Environnement de l'Injecteur Plugin) vous donne plusieurs options pour définir les variables d'environnement de configuration de 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éfinissez la variable d'environnement sur la base des résultats de la commande en cours d'exécution:execute
méthode:Groovy
code:(Plus de détails au sujet de chaque méthode peut être trouvé dans l'aide (?))
Malheureusement, vous ne pouvez pas faire la même chose de
Script Content
car il est dit:Il est Construire Env Propagateur De Plugin qui vous permet d'ajouter de nouveaux construire des variables d'environnement, par exemple
Normalement, vous pouvez configurer variables d'Environnement dans propriétés Globales dans Configurer le Système.
Toutefois, pour les variables dynamiques avec shell, vous pouvez créer un fichier de script dans Jenkins HOME dir et de l'exécuter au cours de la construction. L'accès SSH est nécessaire. Par exemple.
sudo su - jenkins
ousudo su - jenkins -s /bin/bash
Créer un script shell, par exemple:
Dans Jenkins Construire (Exécuter shell), appeler le script et ses variables avant toute autre chose, par exemple
sudo su - jenkins
, encoreecho $USER
me donneroot
.su -l
paramètre pour le faire, sinon poser une question distincte.Remarque: La valeur de la variable d'environnement est venue comme une Chaîne de caractères. Si vous voulez l'utiliser comme un booléen, alors vous devez l'analyser en utilisant un Booléen.parse(env.DISABLE_SQL).
Essayer Environnement De Script Plugin (GitHub) qui est très similaire à EnvInject. Il vous permet d'exécuter un script avant de le construire (après SCM checkout) qui génère des variables d'environnement pour elle. E. g.
et dans votre script, vous pouvez l'imprimer par exemple
FOO=bar
sur la sortie standard pour définir cette variable.Par exemple ajouter à un
PATH
de style variable:Vous êtes donc libre de faire ce que vous avez besoin dans le script soit
cat
un fichier, ou d'exécuter un script dans une autre langue de votre projet de l'arborescence des sources, etc.Dans mon cas, j'avais configuré les variables d'environnement à l'aide de l'option suivante et il a travaillé-
Pour quelque raison
sudo su - jenkins
ne pas me connecter àjenkins
l'utilisateur, j'ai fini par utiliser une approche différente.J'ai réussi l'échelon mondial des variables d'environnement en utilisant l'aide d'jenkins
config.xml
à/var/lib/jenkins/config.xml
(installé dans/Linux RHEL) - sans l'aide de plugins externes.J'ai simplement dû arrêter jenkins ajouter puis ajouter
globalNodeProperties
, puis redémarrez.Exemple, je suis à la définition des variables
APPLICATION_ENVIRONMENT
etSPRING_PROFILES_ACTIVE
àcontinious_integration
ci-dessous,Vous pouvez utiliser l'une des manières suivantes énumérées ci-dessous:
Gérer Jenkins -> Configurer le Système -> Propriétés -> Variables d'Environnement -> Ajouter
Nous utilisons groovy fichier de travail: