1

jenkins APIを使用してユーザーの詳細(特に電子メール)を変更する方法はありますか? 変更された json ファイルを {root}/user/{username}/api/json に投稿しても、基になるデータは変更されないようです。

import urllib2
import json 

root = 'your_url'
username = 'your_username'
user_url = root +'/user/{username}/api/json'.format(username=username)

orig_d = json.loads((urllib2.urlopen(user_url).read()))

d = dict(orig_d)

d['fullName'] = 'XXXXX'
json_data = json.dumps(d)

request = urllib2.Request(user_url)
request.add_header('Content-type', 'application/json')
new_d = json.loads(urllib2.urlopen(request, json_data).read())

print new_d, '\n', orig_d
assert orig_d!=new_d, 'They are equal!'
4

1 に答える 1

0

jenkins のソース コードmodel/User.javaを見ると、User モデルでサポートされている唯一の「POST」構成がdoConfigSubmit()メンバー関数を介して行われているように見えます。それで、私は で Web POST フォームを偽造してしまいましたjenkins_url/user/{username}/configSubmit。次のスニペットは私のために働いた:

import urllib2, urllib
import json 

root = jenkins_url
username = username
user_url = root +'/user/{username}/api/json'.format(username=username)
config_url = root + '/user/{username}/configSubmit'.format(username=username)

d = json.loads((urllib2.urlopen(user_url).read()))

fullname = d['fullName']
description = d['description']
new_email = 'new_user_email'

post_d = {"userProperty1": {"address": new_email}}

request = urllib2.Request(config_url)
values = {'json': json.dumps(post_d),
          'fullName': fullname,
          'email.address': new_email,
          'description': description}

data = urllib.urlencode(values)

response = urllib2.urlopen(request, data).read()
于 2013-06-04T22:16:05.183 に答える