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)