gpt4 book ai didi

jenkins - 如何在 Jenkins 声明性管道的发布阶段和 emailext 中访问 $GIT_COMMIT?

转载 作者:行者123 更新时间:2023-12-04 21:04:43 29 4
gpt4 key购买 nike

我想在构建成功/失败时发送电子邮件以及一些有用的 Git 信息,例如提交 SHA、先前成功的 SHA、提交消息等。
我能够以旧的 UI 方式做到这一点,但现在我已经创建了声明性管道,现在我得到了 GIT_BRANCH is not supported in this context在收到的电子邮件中。我正在使用 Jenkins 版本。 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 {
...
}

任何帮助表示赞赏。提前致谢。

最佳答案

JENKINS-26100建议

node {
withCheckout(scm) {
echo "GIT_COMMIT is ${env.GIT_COMMIT}"
}
}

关于jenkins - 如何在 Jenkins 声明性管道的发布阶段和 emailext 中访问 $GIT_COMMIT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49249458/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com