ビルドが成功または失敗したときに、コミットSHA、以前の成功したSHA、コミットメッセージなどの便利なGit情報とともにメールを送信したい今私はGIT_BRANCH is not supported in this context
受信メール内。ジェンキンスver。を使っています。 2.89.3。私のスクリプト:
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'
}
}
}
printenv
は、「チェックアウト」段階と成功後の両方で、GIT_COMMITを含め、私が期待するすべてのものを出力します。このスクリプトは10を超えるJenkinsジョブで再利用するため、パラメーターやものを渡すために手動のUI作業を追加することは避けたいです。
stages
の前に環境を宣言しようとしましたが、emailext
のコンテキストからは使用できませんでした。
agent {
...
}
environment {
MY_GIT_COMMIT = "${GIT_COMMIT}"
}
stages {
...
}
どんな助けでもありがたいです。前もって感謝します。
それを行う別の方法は、コマンド置換を使用することです。これは私たちにとってはうまくいきます:
post {
success {
sh '''
echo "Commit $(git rev-parse HEAD)" | mail -s "Deployment completed successfully" [email protected]
'''
}
}
JENKINS-261 提案
node {
withCheckout(scm) {
echo "GIT_COMMIT is ${env.GIT_COMMIT}"
}
}