我想知道我是否可以在Jenkins用户中更改密码,用户名,电子邮件。因为我可以像这样通过groovy脚本创建用户:
import hudson.model.*
def user = instance.securityRealm.createAccount(userId, password)
user.addProperty(new Mailer.UserProperty(email));
instance.save()
Jenkins接口允许我管理用户凭据,但是脚本允许更改密码/电子邮件/用户名那会很有帮助的。我没有找到例子。
我试了很多次这样的脚本,但它没有工作
import hudson.model.*
User user = User.getAll().get(1)
user.setProperty(newPassword)
下面是一个简单的代码:
import jenkins.model.*
import hudson.security.*
import hudson.tasks.Mailer
def env = System.getenv()
def jenkins = Jenkins.getInstance()
if(!(jenkins.getSecurityRealm() instanceof HudsonPrivateSecurityRealm))
jenkins.setSecurityRealm(new HudsonPrivateSecurityRealm(false))
if(!(jenkins.getAuthorizationStrategy() instanceof GlobalMatrixAuthorizationStrategy))
jenkins.setAuthorizationStrategy(new GlobalMatrixAuthorizationStrategy())
// update admin Jenkins user account
def user = jenkins.getSecurityRealm().getUser('admin')
email= 'jenkins-admin@gmail.com'
user.addProperty(new Mailer.UserProperty(email));
对于Jenkins Jenkins 2.361.1,我使用了这样的Jenkins groovy脚本来更新用户密码:
User.getById("userName",false).addProperty(hudson.security.HudsonPrivateSecurityRealm.Details.fromPlainPassword("new-password"));
你也可以很容易地从bash脚本或类似的运行它,给定$USERNAME和$PASSWORD设置:
echo "script=User.getById("$USERNAME",false).addProperty(hudson.security.HudsonPrivateSecurityRealm.Details.fromPlainPassword("$PASSWORD"));" |
curl -d @- --user admin:access_token http://<ip>:8080/scriptText