Comment définir des variables d’environnement dans Jenkins?

Je voudrais pouvoir faire quelque chose comme:

AOEU=$(echo aoeu) 

et avoir Jenkins mis AOEU=aoeu .

La section Variables d’environnement de Jenkins ne le fait pas. Au lieu de cela, il définit AOEU='$(echo aoeu)' .

Comment puis-je amener Jenkins à évaluer une commande shell et atsortingbuer la sortie à une variable d’environnement?

Finalement, je veux pouvoir affecter l’exécuteur d’un travail à une variable d’environnement pouvant être transmise ou utilisée par d’autres scripts.

    Cela peut être fait via le plugin EnvInject de la manière suivante:

    1. Créez une étape de construction “Execute shell” qui s’exécute:

       echo AOEU=$(echo aoeu) > propsfile 
    2. Créez une étape de génération des variables d’environnement Inject et définissez “Chemin du fichier de propriétés” sur propsfile .

    Note : Ce plugin est (principalement) incompatible avec le plugin Pipeline.

    Le plus simple

    Vous pouvez utiliser le plug-in EnvInject pour injecter des variables d’environnement au démarrage de la construction. Par exemple:

    Ajouter clé = valeur (bash OK!) Sous 'Build Environment' -/> ‘Injecter des variables d’environnement au processus de construction’ -> ‘Propriétés Content'”></p>
<h3>  Comment tu sais que ça marche </h3>
<p><img src=

    Dans mon cas, je devais append la variable d’environnement JMETER_HOME disponible via mes scripts de compilation Ant sur tous les projets de mon serveur Jenkins (Linux), de manière à ne pas interférer avec mon environnement de génération local (Windows et Mac). script build.xml . Définir la variable d’environnement via Manage Jenkins – Configure System – Global properties était la manière la plus simple et la moins intrusive d’y parvenir. Aucun plug-in n’est nécessaire.

    Gérer les propriétés globales de Jenkins


    La variable d’environnement est alors disponible dans Ant via:

       

    Cela peut être vérifié pour travailler en ajoutant:

      

    Qui produit:

    JMeter Home: ~ / .jmeter

    EnvInject Plugin aka ( Environment Injector Plugin ) vous offre plusieurs options pour définir des variables d’environnement à partir de la 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éfinir une variable d’environnement en fonction du résultat de la commande exécutée :

    • avec la méthode execute :
      return [HOSTNAME_SHELL: 'hostname'.execute().text, DATE_SHELL: 'date'.execute().text, ECHO_SHELL: 'echo hello world!'.execute().text ] 
    • ou avec du code Groovy explicite:
      return [HOSTNAME_GROOVY: java.net.InetAddress.getLocalHost().getHostName(), DATE_GROOVY: new Date() ] 

    (Vous trouverez plus de détails sur chaque méthode dans l’aide intégrée (?))


    Malheureusement, vous ne pouvez pas faire la même chose avec le Script Content du Script Content car il est écrit:

    Exécutez un fichier de script destiné à définir un environnement tel que la création de dossiers, la copie de fichiers, etc. Donnez le contenu du fichier de script. Vous pouvez utiliser les variables de propriétés ci-dessus. Cependant, l’ajout ou le remplacement de variables d’environnement dans le script n’a aucun impact sur le travail de génération .

    Il y a Build Env Propagator Plugin qui vous permet d’append de nouvelles variables d’environnement de construction, par exemple

    Jenkins Build - Propage des variables d'environnement de construction

    Toute étape successive de variables d’environnement de construction Propagate remplacera les valeurs de variable d’environnement précédemment définies.

    Vous pouvez essayer quelque chose comme ça

     stages { stage('Build') { environment { AOEU= sh (returnStdout: true, script: 'echo aoeu').sortingm() } steps { sh 'env' sh 'echo $AOEU' } } } 

    Vous pouvez utiliser Environment Injector Plugin pour définir des variables d’environnement dans Jenkins au niveau du travail et des nœuds. Ci-dessous, je montrerai comment le faire au niveau du travail.

    1. Depuis l’interface Web de Jenkins, accédez à Manage Jenkins > Manage Plugins les plug-ins et installez le plug-in.

    Plugin d'injecteur d'environnement

    1. Aller à votre travail Configure écran
    2. Trouver l’ Add build step de Build dans la section Build et sélectionner Inject environment variables
    3. Définissez la variable d’environnement souhaitée en tant que modèle VARIABLE_NAME = VALUE. Dans mon cas, j’ai changé la valeur de la variable USERPROFILE

    entrer la description de l'image ici

    Si vous devez définir une nouvelle variable d’environnement en fonction de certaines conditions (par exemple, parameters de travail), vous pouvez vous référer à cette réponse .

    Normalement, vous pouvez configurer les variables d’environnement dans les propriétés globales de Configure System .

    Cependant, pour les variables dynamics avec substitution de shell, vous pouvez créer un fichier script dans le répertoire HOME de Jenkins et l’exécuter pendant la génération. L’access SSH est requirejs. Par exemple.

    1. Connectez-vous en tant que Jenkins: sudo su - jenkins ou sudo su - jenkins -s /bin/bash
    2. Créez un script shell, par exemple:

       echo 'export VM_NAME="$JOB_NAME"' > ~/load_env.sh chmod 750 ~/load_env.sh 
    3. Dans Jenkins Build ( Execute shell ), appelez le script et ses variables avant toute autre chose, par exemple

       source ~/load_env.sh 

    Essayez Environment Script Plugin ( GitHub ) qui ressemble beaucoup à EnvInject . Il vous permet d’exécuter un script avant la construction (après l’extraction SCM) qui génère des variables d’environnement pour celui-ci. Par exemple

    Jenkins Build - Travail régulier - Créer un environnement

    et dans votre script, vous pouvez imprimer par exemple FOO=bar sur la sortie standard pour définir cette variable.

    Exemple d’ajout à une variable PATH -style existante:

     echo PATH+unique_identifier=/usr/local/bin 

    Vous êtes donc libre de faire tout ce dont vous avez besoin dans le script – soit cat un fichier, soit exécuter un script dans une autre langue à partir de l’arborescence du projet, etc.

    Pour une raison quelconque, sudo su - jenkins ne me connecte pas aux utilisateurs de jenkins , j’ai fini par utiliser une approche différente.

    J’ai réussi à configurer les variables d’environnement globales en utilisant jenkins config.xml dans /var/lib/jenkins/config.xml (installé sous Linux / RHEL) – sans utiliser de plug-ins externes.

    Je devais simplement arrêter jenkins add puis append globalNodeProperties , puis redémarrer.

    Exemple, je SPRING_PROFILES_ACTIVE variables APPLICATION_ENVIRONMENT et SPRING_PROFILES_ACTIVE à continious_integration ci-dessous,

               2 APPLICATION_ENVIRONMENT continious_integration SPRING_PROFILES_ACTIVE continious_integration