当groovy向新用户授予权限时,用户访问权限正在消失

当groovy向新用户授予权限时,用户访问权限正在消失,groovy,jenkins-pipeline,jenkins-plugins,jenkins-groovy,Groovy,Jenkins Pipeline,Jenkins Plugins,Jenkins Groovy,我正试图通过groovy脚本通过projectMatrixAuthorizationStrategy创建具有特定权限的用户数量。实际上,我可以创建用户并向用户提供权限,但是当尝试创建另一个具有特定权限的用户时,旧用户的访问权限会自动消失。当尝试使用旧用户登录时,我得到“缺少总体/读取权限” 我尝试了多种方法,但没有得到任何解决办法。下面是我的脚本 import jenkins.model.* import hudson.security.* import hudson.model.* impor

我正试图通过groovy脚本通过projectMatrixAuthorizationStrategy创建具有特定权限的用户数量。实际上,我可以创建用户并向用户提供权限,但是当尝试创建另一个具有特定权限的用户时,旧用户的访问权限会自动消失。当尝试使用旧用户登录时,我得到“缺少总体/读取权限”

我尝试了多种方法,但没有得到任何解决办法。下面是我的脚本

import jenkins.model.*
import hudson.security.*
import hudson.model.*
import java.util.*
import com.michelin.cio.hudson.plugins.rolestrategy.*
import com.cloudbees.plugins.credentials.*
import com.cloudbees.plugins.credentials.common.*
import com.cloudbees.plugins.credentials.domains.*
import com.cloudbees.jenkins.plugins.sshcredentials.impl.*

def instance = Jenkins.getInstance()

def hudsonRealm = new HudsonPrivateSecurityRealm(false)

//def user = ["userInput","userPassword"]

hudsonRealm.createAccount("admin","admin")
//hudsonRealm.createAccount(userInput,userPassword)
hudsonRealm.createAccount("user","User2")

instance.setSecurityRealm(hudsonRealm)
instance.save()

def strategy = new ProjectMatrixAuthorizationStrategy()

//Overall Permission

strategy.add(Jenkins.ADMINISTER,'admin')
strategy.add(Jenkins.READ,user)

//Credential Level Permission

strategy.add(com.cloudbees.plugins.credentials.CredentialsProvider.CREATE,user)
strategy.add(com.cloudbees.plugins.credentials.CredentialsProvider.DELETE,user)
strategy.add(com.cloudbees.plugins.credentials.CredentialsProvider.UPDATE,user)
strategy.add(com.cloudbees.plugins.credentials.CredentialsProvider.VIEW,user)

//Job Level Permission

strategy.add(hudson.model.Item.BUILD,user)
strategy.add(hudson.model.Item.CANCEL,user)
strategy.add(hudson.model.Item.CONFIGURE,user)
strategy.add(hudson.model.Item.CREATE,user)
//strategy.add(hudson.model.Item.DELETE,user)
strategy.add(hudson.model.Item.DISCOVER,user)
//strategy.add(hudson.model.Item.READ,user)
strategy.add(hudson.model.Item.WORKSPACE,user)

//Build Run (Level) Permissions

//strategy.add(hudson.model.Run.DELETEuser)
strategy.add(hudson.model.Run.UPDATE,user)
//strategy.add(hudson.model.Run.REPLAY,user)

//View Level Permissions

//strategy.add(hudson.model.View.CONFIGURE,user)
//strategy.add(hudson.model.View.CREATE,user)
//strategy.add(hudson.model.View.DELETE,user)
strategy.add(hudson.model.View.READ,user)

instance.setAuthorizationStrategy(strategy)
instance.save()

}
}}

有人能帮我解决这个问题吗?

解决方案:事实上,知道这件事很简单

如果不想删除旧用户访问权限,则不应在权限行中提供用户名,而应提供“已验证”。请参见下面的示例

 strategy.add(Jenkins.READ,user)
strategy.add(com.cloudbees.plugins.credentials.CredentialsProvider.CREATE,user)
    strategy.add(Jenkins.READ,'authenticated')
strategy.add(com.cloudbees.plugins.credentials.CredentialsProvider.CREATE,'authenticated')