我想知道我是否可以使用Jenkins的API在Jenkins中创建一个新用户。我可以创建作业,但Jenkins的API文档没有任何与用户创建相关的内容。实际上,我必须创建一个新用户,然后为该用户创建一个新作业,所有这些都使用API。
gab6jxml1#
你是对的,没有显式的CLI命令来添加用户。但是您可以使用groovy脚本(使用CLI执行)。具体细节取决于您的Jenkins是如何配置的。例如,如果您的Jenkins使用自己的用户数据库,则可以通过以下CLI调用添加新用户:
echo 'jenkins.model.Jenkins.instance.securityRealm.createAccount("user1", "password123")' | java -jar jenkins-cli.jar -s http://localhost/ groovy =
字符串此shell命令将创建一个新用户,其登录名为“user1”,密码为“password123”。这里echo将一行groovy代码提供给Jenkins CLI(注意**=**意味着CLI应该从STDIN接收代码)。groovy脚本还允许管理用户权限,但是,具体的代码取决于使用的授权策略。您可以使用this sample script作为开始。
iyfamqjs2#
安装后如何创建用户:
echo 'jenkins.model.Jenkins.instance.securityRealm.createAccount("user", "password")' | java -jar jenkins-cli.jar -auth admin:c3a5dcd6bc3f45ee8d6c9f0f5abc14c0 -s http://localhost:8080/ groovy =
字符串其中c3 a5 dcd 6 bc 3f 45 ee 8d 6c 9 f0 f5 abc 14 c 0是自动生成的密码,存在于日志或文件中(对于ubuntu):/var/lib/jenkins/secrets/initialAdminPassword
fnatzsnv3#
echo和pipe在我的Windows上不起作用,所以我最终使用了一个脚本文件。在脚本文件中添加更多逻辑也更容易。下面的脚本将在添加新用户之前检查现有用户,然后在创建帐户后设置用户的电子邮件,并使用基于矩阵的安全性给予READ访问权限。您可以通过将脚本保存到一个文件(比如user-creation.groovy)中来运行它,然后运行以下代码
java -jar jenkins-cli.jar -s http://localhost/ groovy user-creation.groovy testUser testPassword testEmail@testEmail.com
个字符
x8goxv8g4#
我设法获得了以下Python代码段,以使用ssh-key创建用户:
import json import requests def main(): data = { 'credentials': { 'scope': "GLOBAL", 'username': "jenkins", 'privateKeySource': { 'privateKey': "-----BEGIN RSA PRIVATE KEY-----\nX\n-----END RSA PRIVATE KEY-----", 'stapler-class': "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey$DirectEntryPrivateKeySource" }, 'stapler-class': "com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey" } } payload = { 'json': json.dumps(data), 'Submit': "OK", } r = requests.post("http://%s:%d/credential-store/domain/_/createCredentials" % (HOSTNAME, 8080), data=payload) if r.status_code != requests.codes.ok: print r.text
字符串它有点像一个REST接口,除了人们必须知道代码的内部结构和对象应该解码到的类的名称。我试图从一个Ansible脚本(在Jenkins服务器外部运行)配置Jenkins;因为java cli不支持创建凭证,所以python代码段看起来是个不错的选择。
pvcm50d15#
基于@vitaleek的回答,下面将从文件中获取默认的管理员凭据并创建一个新用户:
pass=`sudo cat /var/lib/jenkins/secrets/initialAdminPassword` && echo 'jenkins.model.Jenkins.instance.securityRealm.createAccount("user1", "password123")' | sudo java -jar jenkins-cli.jar -auth admin:$pass -s http://localhost:8080/ groovy =
字符串如果你和我一样,一开始找不到jenkins-cli.jar,可以从Jenkins服务器中提取,如下所示:
curl -O http://127.0.0.1:8080/jnlpJars/jenkins-cli.jar
型
wwodge7n6#
我在GitHub上阅读了GlobalMatrixAuthorizationStrategy插件的代码,我试图找到他们如何将用户添加到MatrixAuthorizationStrategy并达到以下解决方案。参考GlobalMatrixAuthorizationStrategy on GitHub
import hudson.model.* import hudson.security.* import hudson.tasks.Mailer import org.jenkinsci.plugins.matrixauth.PermissionEntry import org.jenkinsci.plugins.matrixauth.AuthorizationType def username = "username" def password = "password here" def fullName = "User full name" def instance = jenkins.model.Jenkins.instance def user = instance.securityRealm.createAccount(username, password) user.addProperty(new Mailer.UserProperty(email)); user.setFullName(fullName) def strategy = instance.getAuthorizationStrategy() strategy.add(Jenkins.READ, new PermissionEntry(AuthorizationType.USER, username)) //This is the solution ^^^^ instance.save()
字符串
6条答案
按热度按时间gab6jxml1#
你是对的,没有显式的CLI命令来添加用户。但是您可以使用groovy脚本(使用CLI执行)。
具体细节取决于您的Jenkins是如何配置的。例如,如果您的Jenkins使用自己的用户数据库,则可以通过以下CLI调用添加新用户:
字符串
此shell命令将创建一个新用户,其登录名为“user1”,密码为“password123”。这里echo将一行groovy代码提供给Jenkins CLI(注意**=**意味着CLI应该从STDIN接收代码)。
groovy脚本还允许管理用户权限,但是,具体的代码取决于使用的授权策略。您可以使用this sample script作为开始。
iyfamqjs2#
安装后如何创建用户:
字符串
其中c3 a5 dcd 6 bc 3f 45 ee 8d 6c 9 f0 f5 abc 14 c 0是自动生成的密码,存在于日志或文件中(对于ubuntu):/var/lib/jenkins/secrets/initialAdminPassword
fnatzsnv3#
echo和pipe在我的Windows上不起作用,所以我最终使用了一个脚本文件。在脚本文件中添加更多逻辑也更容易。下面的脚本将在添加新用户之前检查现有用户,然后在创建帐户后设置用户的电子邮件,并使用基于矩阵的安全性给予READ访问权限。您可以通过将脚本保存到一个文件(比如user-creation.groovy)中来运行它,然后运行以下代码
个字符
x8goxv8g4#
我设法获得了以下Python代码段,以使用ssh-key创建用户:
字符串
它有点像一个REST接口,除了人们必须知道代码的内部结构和对象应该解码到的类的名称。
我试图从一个Ansible脚本(在Jenkins服务器外部运行)配置Jenkins;因为java cli不支持创建凭证,所以python代码段看起来是个不错的选择。
pvcm50d15#
基于@vitaleek的回答,下面将从文件中获取默认的管理员凭据并创建一个新用户:
字符串
如果你和我一样,一开始找不到jenkins-cli.jar,可以从Jenkins服务器中提取,如下所示:
型
wwodge7n6#
我在GitHub上阅读了GlobalMatrixAuthorizationStrategy插件的代码,我试图找到他们如何将用户添加到MatrixAuthorizationStrategy并达到以下解决方案。
参考GlobalMatrixAuthorizationStrategy on GitHub
字符串