如何限制某些Jenkins用户在我的管道中部署到某些环境?
我有我的管道,您可以选择要将代码部署到哪个环境(服务器),但是我想要实现的是只有一定数量的用户才能部署到生产环境,以实现明显的安全性问题,尤其是在不阻止其他用户部署到任何其他环境的情况下
现在,我的管道可以正常工作,但是任何人都可以触发部署到任何环境
我发现的唯一一件事就是通过用户管理来阻止整个项目,但这并不是我想要实现的。
我想要实现的是
User1和User2可以部署到生产环境,但是User3无法触发Prod部署,或者至少将它们分组并允许Group A部署而Group B不能部署到Prod
答案 0 :(得分:0)
对我有用的解决方案是将人工批准插入到管道中,该管道只能由某些组的成员通过。我已经将詹金斯与AD集成在一起,但是它也可以用于其他类型的组:
def checkEnvPermissions() {
if (env.ENVIRONMENT == "production") {
userInput = input message: 'Is this deployment approved?', ok: '', submitter: 'AD_GROUP_WITH_PERMISSIONS', parameters: [
[$class: 'hudson.model.ChoiceParameterDefinition', choices: 'Approved\nNot Approved', name: 'isApproved', description: 'This input can only be answered by users with deployment permission on this environment']
]
if (userInput == "Not Approved") {
error "Deployment to PROD is not approved"
}
}
}
如果您不考虑询问其他问题,则可以执行以下操作:
def listOfGroupsAllowedToDeploy = ["group1","group2"]
def userId = currentBuild.rawBuild.getCause(Cause.UserIdCause).getUserId()
def user = hudson.model.User.getById(userId, false)
userAuthorities = user.getAuthorities()
if userAuthorities.intersect(listOfGroupsAllowedToDeploy)