49 votes

Charger le fichier avec les variables d'environnement Jenkins Pipeline

Je fais un simple pipeline :

Build -> Staging -> Production

J'ai besoin de variables d'environnement différentes pour la mise en place et la production, j'essaie donc de fuente variables.

sh 'source $JENKINS_HOME/.envvars/stacktest-staging.sh' 

Mais il revient Non trouvé

[Stack Test] Running shell script
+ source /var/jenkins_home/.envvars/stacktest-staging.sh
/var/jenkins_home/workspace/Stack Test@tmp/durable-bcbe1515/script.sh: 2: /var/jenkins_home/workspace/Stack Test@tmp/durable-bcbe1515/script.sh: source: not found

Le chemin est correct, car j'exécute la même commande lorsque je me connecte via ssh, et cela fonctionne bien.

Voici l'idée du pipeline :

node {
    stage name: 'Build'
    // git and gradle build OK
    echo 'My build stage'

    stage name: 'Staging'
    sh 'source $JENKINS_HOME/.envvars/stacktest-staging.sh' // PROBLEM HERE
    echo '$DB_URL' // Expects http://production_url/my_db
    sh 'gradle flywayMigrate' // To staging
    input message: "Does Staging server look good?"    

    stage name: 'Production'
    sh 'source $JENKINS_HOME/.envvars/stacktest-production.sh'
    echo '$DB_URL' // Expects http://production_url/my_db
    sh 'gradle flywayMigrate' // To production
    sh './deploy.sh'
}

Que dois-je faire ?

  • Je pensais ne pas utiliser le pipeline (mais je ne pourrai pas utiliser mon fichier Jenkins).
  • Ou bien faire des travaux différents pour la mise en scène et la production, en utilisant le plugin EnvInject (mais je perds la vue de la scène).
  • Ou faire withEnv (mais le code devient gros, parce qu'aujourd'hui je travaille avec 12 vars env)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X