gpt4 book ai didi

Jenkins 在管道中获取当前用户

转载 作者:行者123 更新时间:2023-12-05 00:48:35 25 4
gpt4 key购买 nike

我在 Jenkins 管道中有一个要求,在成功构建后,我需要用户输入来继续或中止。开发人员仅用于部署到 Dev 环境中,Ops 人员可以在 QA 和 Prod 上进行。

我的问题是,如果我以开发人员身份登录 Jenkins 并在构建后为 QA 或 Prod 执行构建和部署,那么它应该显示一条消息,即未授权在 QA 或 Prod 上进行部署。 Dev 团队将通知 Ops 团队在管道中进行进一步的部署。 Ops 人员将使用他们的凭据登录,当他们触发 procced 或 abort 以部署到 QA 或 Prod 时,它应该会发生。

我的问题是如何获取 Jenkins 的当前登录用户,以便我可以验证用户并继续部署。

stage('confirmDeploy'){
inputMessage("${TARGET_PLATFORM}")
echo "Deploying release on ${TARGET_PLATFORM} environment"
}
def inputMessage(String inputEnvName) {
timeout(time: 1, unit: 'HOURS') {
input message: "Are you sure to promote this build to ${inputEnvName} env ?", ok: 'deploy'
wrap([$class: 'BuildUser']) {
sh 'echo "${BUILD_USER}"'
if (( "${inputEnvName}" == "qa" && "${BUILD_USER}" == "ops")||( "${inputEnvName}" == "prod" && "${BUILD_USER}" == "ops")){
input message: "Are you sure to promote this build to ${inputEnvName} env ?", ok: 'deploy'}
else if (( "${inputEnvName}" == "dev" && "${BUILD_USER}" =="devuser")){
input message: "Are you sure to promote this build to ${inputEnvName} env ?", ok: 'deploy'}
else {
echo 'Further code will not be executed'echo "Not authorized to carry deployment to the respective environment", ok: 'deploy'
}
}
}
}

最佳答案

您需要以下代码:

wrap([$class: 'BuildUser']) {
def user = env.BUILD_USER_ID
}

注意:这是假设您拥有 https://wiki.jenkins-ci.org/display/JENKINS/Build+User+Vars+Plugin已安装

关于 Jenkins 在管道中获取当前用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49726409/

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