J'ai récemment réécrit la commande d'exécution bash dans le pipeline Jenkins. L'ancien code est comme
...
source environment.sh
//Build
//Test
...
Maintenant, j'utilise un script de pipeline pour encapsuler la commande, comme ceci
sh '''
...
source environment.sh
//Build
//Test
...
'''
Cependant, j'ai eu une erreur, comme .../.jenkins/script.sh: line 9: source: environment.sh: file not found
. Lorsque j'essaie de less environment.sh
, Il s'affiche correctement. Je soupçonne donc quelque chose de mal avec source command
Dans sh wrap
.
Avant d'utiliser le pipeline, la commande source environment.sh
Fonctionne correctement dans l'exécution du shell. Donc, la source est installée sur le serveur Jenkins, il semble que le script de pipeline ne sache pas quelle est la commande source.
Comment pourrais-je faire pour exécuter la commande source dans un bloc enveloppé sh?
Remplacer source environment.sh
avec
. ./environment.sh
Veuillez noter qu'il y a un espace après le premier point.
source
est une extension bash
/ksh
/etc, fournie comme synonyme plus "substantiel" de .
.
Dans sh
, vous devez utiliser .
dans le cas où le Shell sous-jacent est un (tel que dash
) qui ne prend pas en charge la commande source
.
sh '''
...
. environment.sh
//Build
//Test
...
'''