当使用Python3.10.2和Ubuntu 20.4和Jenkins 2.361一起使用api4jenkins 1.11作为API的包装时,我对Jenkins的API有问题。
我的主要问题是将参数传递给一个任务。我能够启动任务,我正在执行示例所指示的传递参数的操作,但是taks的执行不会打印参数。
Jenkins为每个用户配置了一个全局安全配置,这是一个用于启动任务的用户的配置:

我的任务名为Prueba4,任务安全配置如下:

现在,我只有参数客户机

我还启用了脚本执行:

唯一的步骤是这个shell命令:
echo Hello
echo $USER
echo $cliente使用Python,我要这样做:
from api4jenkins import Jenkins
j = Jenkins('http://localhost:8080/', auth=('my_user', 'mypass'))
j.build_job('Prueba4', client="my cliente", token="my_token", delay='1sec')因此,我找不到行echo $client没有显示我传递的参数的问题。将print添加到api4jenkins i可以识别它传递这个kwards:
method: POST
url +: http://localhost:8080/job/Prueba4/buildWithParameters
kwards: {'params': {'client': 'my_client'}, 'token': 'my_token', 'delay': '1sec'}, 'headers': {'Jenkins-Crumb': '81bec758701d0783a68f3ad4050e42c647953834f1c552120b194d6e8b989f52'}} 我不知道我做错了什么。这是一个从python开始的不打印参数的执行:

我尝试使用CURL和Python的请求库,但我还无法使用它们提出请求。
希望有人能帮我。谢谢
编辑: Ok,我犯了一个愚蠢的错误,我真的需要传递一个字典,我正在直接添加变量,我忘了把它作为字符串发送,这是Jenkins不接受请求的真正原因。
发布于 2022-07-27 15:20:47
好的,我忘了在api4jenkins的Github页面中搜索问题页面,在那里我找到了本期。在那里,Sinutok于2021年9月7日评论了解决方案:
对不起,浪费了您的time....got it facepalm,如果有人需要的话,我会把我现在正在运行的代码作为示例
jenkins_server = api4jenkins.Jenkins('https://myjenkins.example.com:8443', auth=('someuser','the_api_token'),verify=False)
user = jenkins_server.me.exists()
version = jenkins_server.version
print(str(user))
print(str(version))
job = jenkins_server.get_job("API-TEST - JOB")
print(job)
lauf = job.build(TEXT1="C",TEXT2="lalala")
print(lauf)
Output:
True
2.277.4
<FreeStyleProject: https://myjenkins.example.com:8443/job/API-TEST%20-%20JOB/>
<QueueItem: https://myjenkins.example.com:8443/queue/item/1149/>而jenkis作业的参数是:"C“(用于下拉框)和"lalala”(用于文本字段)。
编辑:好的,我犯了一个愚蠢的错误,我真的需要传递一个字典,我直接添加变量,我忘了把它作为字符串发送,Jenkins不接受请求的真正原因。这个问题帮我看清楚了。
https://stackoverflow.com/questions/73140264
复制相似问题