Absolute Jenkins rurociąg/Groovy noobem tutaj, mam scenęJenkins rurociąg bańka się kodem wyjścia powłoki na niepowodzenie scenę
stage('Building and Deploying'){
def build = new Build()
build.deploy()
}
który korzysta z udostępnionego lib, źródłem Build.groovy
jest tutaj:
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
}
}
Problem polega na tym, że jeśli nie uda się przesłać kompilacji do zdalnego repo (patrz poniżej), etap nadal kończy się pomyślnie.
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
Jak wypisać kod zakończenia skryptu powłoki i zakończyć etap?
dziękuję, więc gdy już posiadam statusCode, czy muszę go zwrócić w funkcji 'deploy'? –
Dodałem przykłady tego, jak można oznaczyć kompilację jako nieudaną. – Pom12
Fajne dzięki, mam inny problem teraz możesz proszę spojrzeć? http://stackoverflow.com/questions/42475073/jenkins-pipeline-sh-step-not-returning-different-status-code –