web-dev-qa-db-fra.com

Comment utiliser la commande source dans le script de pipeline Jenkins

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?

14
Neil

Remplacer source environment.sh avec

. ./environment.sh

Veuillez noter qu'il y a un espace après le premier point.

14
Steephen

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
    ...
'''
8
chepner