Pas beaucoup d'expérience de programmation mais heureux d'apprendre. Question: L'envoi de données d'erreur de construction jenkinsfile à la plupart des travaux fonctionne très bien localement dans le fichier, mais lorsqu'il est chargé en tant que script .groovy, il échoue "silencieusement". Des conseils sur pourquoi/comment je peux poster cette information à une chaîne dans un script groovy chargé?jenkinsfile chargement des variables locales dans le script groovy
Jenkinsfile
#!groovy
properties([[$class: 'jenkins.model.BuildDiscarderProperty', strategy: [$class: 'LogRotator', numToKeepStr: '5', artifactNumToKeepStr: '5']]])
node('node_name'){
def err = null
currentBuild.result = "SUCCESS"
role_name = "deploy"
try {
timeout(60){
stage "${role_name}"
deleteDir()
checkout scm
sh 'introduce error here'
}
}
catch (error){
err = error
currentBuild.result = "FAILURE"
load "ci/curlBuildFailed.groovy"
}
finally {
if (err){
throw err
}
}
}
curlBuildFailed.groovy
sh "curl -i -X POST -d \'payload={" +
"\"text\": \"${env.JOB_NAME}: ${env.BUILD_URL} - build failed with ${err}!\", " +
"\"username\": \"JenkinsBot\", " +
"\"icon_url\": \"$FAIL_BUILD\"}\' $DEVOPS_NOTIFY_URL "
L'exécution du produit ci-dessus ceci:
[cure-deploy] Running shell script
+ introduce error here
/home/jenkins/remote/workspace/blablabla/script.sh: line 2: introduce: command not found
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // timeout
[Pipeline] load
[Pipeline] { (ci/curlBuildFailed.groovy)
[Pipeline] }
[Pipeline] // load
[Pipeline] }
[Pipeline] // wrap
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // load
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 127
Finished: FAILURE
Notes:
- La suppression du contenu de
curlBuildFailed.groovy
dans le même emplacement commeload "ci/curlBuildFailed.groovy"
crée la sortie souhaitée. - Avoir réduit le coupable à
${err}
encurlBuildFailed.groovy
, dès que je supprime cette variable, il publie à peine très bien. - (Nous avons environ 30 rôles ansible similaires à celui-ci afin d'essayer de faire abstraction du code en double à une structure plus facile à maintenir)
- J'ai cherché autour pendant quelques heures et il semble similaire à ceux-ci, mais je n'avais pas trouvé une résolution d'équations encore:
- jenkins plain catch blocks
- don't think I need a 'returns this;' but who knows
- Passing Variables in Jenkinsfile Closure
Merci pour votre temps! - Sam