Jenkins pipeline bulles haut de la coquille code de sortie à l'échec de la scène
Absolue Jenkins pipeline/groovy noob ici, j'ai une scène
stage('Building and Deploying'){
def build = new Build()
build.deploy()
}
qui est à l'aide de l'partagé lib, la source de la Build.groovy
est ici:
def deploy(branch='master', repo='xxx'){
if (env.BRANCH_NAME.trim() == branch) {
def script = libraryResource 'build/package_indexes/python/build_push.sh'
//TODO: Test out http://stackoverflow.com/questions/40965725/jenkins-pipeline-cps-global-lib-resource-file-for-shell-script-purpose/40994132#40994132
env.PYPI_REPO = repo
sh script
}else {
echo "Not pushing to repo because branch is: "+env.BRANCH_NAME.trim()+" and not "+branch
}
}
Problème, c'est quand il n'arrive pas à pousser le construire à une distance de pensions de titres (voir ci-dessous), la scène finit toujours par en indiquant la réussite de la.
running upload
Submitting dist/xxx-0.0.7.tar.gz to https://xxx.jfrog.io/xxx/api/pypi/grabone-pypi-local
Upload failed (403): Forbidden
...
Finished: SUCCESS
Comment puis-je faire émerger le code de sortie du script de shell et de l'échec de la scène?
OriginalL'auteur James Lin | 2017-02-24
Vous devez vous connecter pour publier un commentaire.
La
sh
étape renvoie le même code d'état de votre commande sh (votre script dans ce cas) retourne. De sh documentation :Vous devez vous assurer que votre script renvoie une valeur non nulle en code de statut lorsqu'il échoue. Si vous n'êtes pas sûr de ce que votre script retourne, vous pouvez vérifier la valeur de retour à l'aide de la
returnStatus
param de lash
étape, qui ne manqueront pas de le construire, mais sera de retour le code de statut. E. g:Vous pouvez ensuite utiliser ce code d'état pour définir le résultat de votre version actuelle.
Vous pouvez utiliser :
currentBuild.result = 'FAILURE'
oucurrentBuild.result = 'UNSTABLE'
pour marquer le pas comme le rouge/jaune, respectivement. Dans ce cas, le build va encore traiter les prochaines étapes.error "Your error message"
si vous voulez le construire à l'échec et à le quitter immédiatement.deploy
fonction?J'ai ajouté des exemples de la façon dont vous pouvez marquer le construire comme un échec.
cool merci, j'ai un autre problème maintenant, pouvez-vous s'il vous plaît avoir un coup d'oeil? stackoverflow.com/questions/42475073/...
Juste un rappel par groovy débutant (moi): il y a une virgule (,) entre les paramètres à utiliser
script
etreturnStatus
. Le bon de commande doit être:def statusCode = sh script:script, returnStatus:true
OriginalL'auteur Pom12
Viens de tombé sur cette question à nouveau, il s'est avéré être un problème de version de Python, je ne me souviens pas la version exacte du Python, mais il a un problème au sein setuptools, IIRC la mise à niveau de Python pour 2.7.1 x fixe.
OriginalL'auteur James Lin