Je veux envoyer un e-mail lorsque les builds réussissent/échouent avec des informations Git utiles telles que la validation SHA, la précédente réussite SHA, le message de validation, etc. maintenant je reçois GIT_BRANCH is not supported in this context
dans l'e-mail reçu. J'utilise Jenkins ver. 2.89.3. Mon script:
pipeline {
agent {
...
}
stages {
stage('Checkout') {
steps {
sh 'printenv'
checkout scm: [$class: 'GitSCM', branches: [[[name: '*/development']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [url: 'https://github.com/myrepo/']]]
sh 'git submodule foreach --recursive \'git submodule sync\''
sh 'git submodule update --init --recursive'
}
}
stage('Build') {
steps {
...
}
}
}
post {
success {
sh 'printenv'
emailext body: '$PROJECT_DEFAULT_CONTENT Commit message: ${FILE, path="commit_message.txt"}\nThis commit: ${GIT_COMMIT}Build URL: ${BUILD_URL}',
recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider']],
subject: 'Some subject'
}
}
}
Le printenv
imprimera tout ce que j'attends, y compris le GIT_COMMIT, à la fois au stade de la "vérification" et après la réussite. Étant donné que je vais réutiliser ce script pour plus de 10 travaux Jenkins, je veux éviter d'ajouter un travail d'interface utilisateur manuel pour passer des paramètres et des choses.
J'ai essayé de déclarer l'environnement avant le stages
mais je n'ai pas pu l'utiliser à partir du contexte de emailext
:
agent {
...
}
environment {
MY_GIT_COMMIT = "${GIT_COMMIT}"
}
stages {
...
}
Toute aide est appréciée. Merci d'avance.
Une autre façon de le faire est avec la substitution de commandes, ce travail pour nous:
post {
success {
sh '''
echo "Commit $(git rev-parse HEAD)" | mail -s "Deployment completed successfully" [email protected]
'''
}
}
JENKINS-261 suggère
node {
withCheckout(scm) {
echo "GIT_COMMIT is ${env.GIT_COMMIT}"
}
}