Comment puis-je faire Jenkins 2.0 exécuter une sh de commande dans le même répertoire que la caisse?
Voici mon Jenkins 2.x pipeline:
node ('master'){
stage 'Checkout'
checkout scm
stage "Build Pex"
sh('build.sh')
}
Lorsque j'exécute ce pipeline de la caisse met le code dans l'espace de travail comme prévu, cependant au lieu de s'attendant à trouver le script de l'espace de travail/(c'est vraiment là!), il semble dans un autre répertoire: espace de travail@tmp/durable-d812f509.
Entering stage Build Pex
Proceeding
[Pipeline] sh
[workspace] Running shell script
+ build.sh
/home/conmonsysdev/deployments/jenkins_ci_2016_interns/jenkins_home/jobs/pex/branches/master/workspace@tmp/durable-d812f509/script.sh: line 2: build.sh: command not found
Comment puis-je modifier cette Jenkinsfile de sorte que build.sh est exécuté dans le même répertoire que celui où j'ai vérifié la source du projet de code?
- C'est vraiment votre complet du pipeline? Ou avez-vous plusieurs
node
des blocs? - Pour l'instant, c'est tout. C'est la plus petite pipeline qui montre le bogue.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez joindre à vos actions dans
dir
bloc.your new directory
est titulaire d'emplacement de votre répertoire. Par défaut, elle est un chemin d'accès relatif à l'espace de travail. Vous pouvez définir le chemin d'accès absolu, si vous êtes sûr que ce qui est présent sur l'agent.dir('buildscripts') {}
mais pas de chanceLa raison que votre script ne fonctionne pas c'est parce que "build.sh" n'est pas dans votre CHEMIN.
La Jenkinsfile est en cours d'exécution un "sh" de script, dont tout le contenu est la chaîne
build.sh
. Le parent script est dans le "@tmp" et sera toujours là - le "@tmp" est l'endroit où Jenkins garde la Jenkinsfile, essentiellement, au cours d'une exécution.Pour résoudre le problème, changer votre ligne de
sh "./build.sh"
oush "bash build.sh"
, de sorte que lesh
bloc dans la Jenkinsfile de situer correctement labuild.sh
script que vous souhaitez exécuter.Je vais avoir le même problème et dir n'est pas d'aider, peut-être parce que je suis en train de travailler à l'intérieur d'un sous-répertoire de la tmp dir lui-même (pour des raison de ne pas pertinente ici). Mon code ressemble à ceci
(le
pwd
etla -l
des déclarations ont été ajoutés à des fins de débogage. Il existe un problème de w/o eux.) Avec eux, je obtenir une sortie comme:J'ai finalement fait:
Jenkins créer un dossier quand il en faire un clone de votre projet comme celui-ci:
/var/lib/jenkins/espace de travail/emploi-nom@script
Pour que cela fonctionne, vous devez configurer le fichier en tant que fichier exécutable si vous êtes dans un environnement linux et ensuite appeler le script shell.
Quelque chose comme ceci: