2013-07-18 26 views
14

JenkinsでAPIを使用して新しいユーザーを作成できるかどうかは疑問でした。ジョブを作成することはできますが、JenkinsのAPIドキュメントにはユーザー作成に関連するものはありません。APIを使用してJenkinsでユーザーを作成する

実際には、新しいユーザーを作成してから、そのユーザー用に新しいジョブを作成する必要があります。そのすべてはAPIを使用しています。

答えて

8

あなたが正しいですが、ユーザーを追加するための明示的なCLIコマンドはありません。しかし、これにはgroovyスクリプトを使用することができます(実行にCLIを使用)。

詳細は、Jenkinsの設定方法によって異なります。たとえば、あなたのジェンキンスさんは、独自のユーザー・データベースを使用している場合、その後、あなたは、次のCLI呼び出しによって、新しいユーザーを追加することができ :このシェルコマンド

echo 'jenkins.model.Jenkins.instance.securityRealm.createAccount("user1", "password123")' | 
java -jar jenkins-cli.jar -s http://localhost/ groovy = 

は、ログイン「USER1」とパスワード「password123で新しいユーザーを作成します。 " echoは、Jenkins CLIにGroovyコードの行を送ります(=は、CLIにSTDINのコードを受信させることを意味します)。

また、groovyスクリプトではユーザー権限を管理することができますが、正確なコードは使用する承認戦略によって異なります。 this sample scriptを最初に使用できます。

+0

それ以外の場合は動作しません、あなたは認証方法(_securityのrealm_)として_Jenkins自身のユーザDATABASE_を使用していることを確認してください。 – kenorb

3

私のWindowsではエコーとパイプが機能しませんでしたので、代わりにスクリプトファイルを使用しました。また、スクリプトファイルにロジックを追加する方が簡単です。以下のスクリプトは、新しいユーザーを追加する前に既存のユーザーをチェックし、アカウント作成後にユーザーの電子メールを設定し、Matrixベースのセキュリティを使用してREADアクセスを行います。あなたがファイルにスクリプトを保存することで、それを実行することができ、

java -jar jenkins-cli.jar -s http://localhost/ groovy user-creation.groovy testUser testPassword [email protected] 

import hudson.model.* 
import hudson.security.* 
import hudson.tasks.Mailer 

def userId = args[0] 
def password = args[1] 
def email = args[2] 
def instance = jenkins.model.Jenkins.instance 
def existingUser = instance.securityRealm.allUsers.find {it.id == userId} 

if (existingUser == null) { 
    def user = instance.securityRealm.createAccount(userId, password) 
    user.addProperty(new Mailer.UserProperty(email)); 

    def strategy = (GlobalMatrixAuthorizationStrategy) instance.getAuthorizationStrategy() 
    strategy.add(Hudson.READ, userId) 
    instance.setAuthorizationStrategy(strategy) 
    instance.save() 
} 
+1

'java -jar jenkins-cli.jar -s http:// localhost:8080/groovy user-creation.groovy userName userPassword testEmail @ testEmail.com'コマンドを実行すると、エラーが発生しました。エラー:匿名Overall/Read権限がありません。 ' –

+0

これは私のために働いた。 java -jar jenkins-cli.jar -s http:// localhost/groovy user-creation.groovy testUser testPassword [email protected] --username = --password = – Upen

3

私は、ユーザーを作成するには、次のPythonスニペットを得ることができ、ユーザーcreation.groovyを言うし、次を実行します。 SSHキーを持つ:

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 

これ1つを除いてRESTインターフェースは、コードの内部とオブジェクトがにデコードすることになっているクラスの名前を知っていなければならない一種のようなものです。

私はジェンキンを(ジェンキンズサーバーの外部で実行している)安全なスクリプトから構成しようとしています。 java cliは資格情報の作成をサポートしていないので、Pythonのスニペットが使えるようです。

+0

こんにちは、ペドロ、ユーザーを作成する方法はありますか? ?あなたの上記のコードは、資格情報を作成する、私はユーザーを探しています。 – Nilesh

3

このインストール後にユーザーを作成する方法を次のとおりです。

(Ubuntuの場合)c3a5dcd6bc3f45ee8d6c9f0f5abc14c0が自動的にログまたはファイルにパスワードの存在を発生させる
echo 'jenkins.model.Jenkins.instance.securityRealm.createAccount("user", "password")' | java -jar jenkins-cli.jar -auth admin:c3a5dcd6bc3f45ee8d6c9f0f5abc14c0 -s http://localhost:8080/ groovy = 

:は/ var/libに/ジェンキンス/秘密/ initialAdminPassword

+0

これは本当に簡潔で簡単な方法です。セキュリティ(レルムと権限)を有効にするためにこれを使う方法を知っていますか?例えばジェンキン自身のデータベース、「ログインしたユーザーは何でもできる」 – ffghfgh

1
以下のファイルからデフォルトの管理者の資格情報を取得し、新しいユーザーを作成します@の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 = 

ヨーヨーの場合あなたは私のようで、ジェンキンズ・クリを見つけることができませんでした。次のようにあなたのジェンキンスサーバーから引き出すことができる最初の瓶、:

curl -O http://127.0.0.1:8080/jnlpJars/jenkins-cli.jar 
関連する問題