web-dev-qa-db-fra.com

Quel est le répertoire de travail dans Jenkins après l'exécution d'une boîte de commande Shell?

Je cherche un emploi chez Jenkins et j'essaie de le comprendre.

J'ai un Execute Shell boîte de commande dans ma Build section:

> mkdir mydir 
> cd mydir
> 
> svn export --force https://example.com/repo/mydir .

Quand Jenkins a fini d'exécuter cette commande et passe à l'étape suivante, quel est son répertoire de travail? workspece-root/ ou workspace-root/mydir?

Ensuite, j'ai Invoque les cibles Maven de niveau supérieur (toujours dans la section Build ).

Ce que je veux vraiment savoir, c'est: pourquoi cela s'exécute-t-il avec succès?
Est-ce parce que Jenkins revient automatiquement dans le dossier workspace-root/ après avoir exécuté une boîte de commande Shell ou est-ce parce que le travail suivant est un travail de "niveau supérieur" et que Jenkins revient donc au workspace-root/?

7
Christian

Chaque build step est un processus distinct créé par Jenkins. Ils ne partagent rien, ni le répertoire en cours, ni les variables d'environnement définies/modifiées dans le build step. Chaque nouveau build step commence par générer un nouveau processus à partir du processus parent (celui qui exécute Jenkins)

Ce n'est pas que Jenkins "retourne" au $WORKSPACE. C'est que Jenkins se défait de la session précédente.

12
Slav

J'ai récemment vu que si vous imprimiez le CWD, j'obtiendrais le Project_NAME. E.g D:\jenkins\workspace\My_Project

Aucun script que vous pourriez exécuter ne sera trouvé. Nous pouvons donc faire un "chemin de CD" avant de commencer les scripts.

0

L’explication de Slav est très bonne et j’ai pensé à la compléter en fournissant un exemple concret qui montre l’aspect de plusieurs commandes de traitement par lots de Windows même si elles fonctionnent dans le même répertoire:

Commande 1

REM #ensures that all npm packages are downloaded
cd "%WORKSPACE%"
npm install

Commande 2

REM #performs a prod-mode build of the project
cd "%WORKSPACE%"
ng build --prod --aot=true -environment=pp

Ainsi, chacun s'assure que le répertoire de travail actuel pointe vers le répertoire du projet actuel.

0
Alexei