Jenkins的API可以通过用户名+密码或者用户名+token的方式来进行认证,这篇文章以具体示例来说明具体的使用方式。
本文示例的Jenkins的API Token是基于LTS 2.164.3版本进行演示。详细的环境构建可参看:
事前可参看如下文章创建相关的Job,也可手动直接在Jenkins上进行操作生成。
以curl客户端为例,使用-u方式传入用户名和密码, 将free_style_job的状态设定为禁用。
liumiaocn:jenkins liumiao$ curl -X POST -u root:liumiaocn -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 http://localhost:32002/job/free_style_job/disable
liumiaocn:jenkins liumiao$
URL中将用户名和密码嵌入其中,格式为用户名:密码@JenkinsURL也可以实现相同效果。同样以curl客户端为例,将将free_style_job_copy的状态设定为禁用。
liumiaocn:jenkins liumiao$ curl -X POST -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 http://root:liumiaocn@localhost:32002/job/free_style_job_copy/disable
liumiaocn:jenkins liumiao$
事前先为rooot用户创建tokenName同为test-token1的两个token
liumiaocn:jenkins liumiao$ curl -u root:liumiaocn -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 'http://localhost:32002/user/root/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' --data 'newTokenName=test-token1' 2>/dev/null |jq .
{
"status": "ok",
"data": {
"tokenName": "test-token1",
"tokenUuid": "b3d00e35-0fc5-4ca8-8212-6924cc4e7148",
"tokenValue": "11d4332105f7c745eb0e48827579397bd9"
}
}
liumiaocn:jenkins liumiao$
liumiaocn:jenkins liumiao$ curl -u root:liumiaocn -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 'http://localhost:32002/user/root/descriptorByName/jenkins.security.ApiTokenProperty/generateNewToken' --data 'newTokenName=test-token1' 2>/dev/null |jq .
{
"status": "ok",
"data": {
"tokenName": "test-token1",
"tokenUuid": "cdcce61a-6ec0-4472-93bb-d6c79cfd376d",
"tokenValue": "110d8a36c8e7c87c44fb69ee3dd7d430b8"
}
}
liumiaocn:jenkins liumiao$
而刚刚创建完毕的两个token的信息都显示Never used
以curl客户端为例,使用-u方式传入用户名和token, 将free_style_job的状态设定为启用。
liumiaocn:jenkins liumiao$ curl -X POST -u root:110d8a36c8e7c87c44fb69ee3dd7d430b8 -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 http://localhost:32002/job/free_style_job/enable
liumiaocn:jenkins liumiao$
从Jenkins页面也能确认此Job状态发生了变化
而使用此token信息的情况也能反映了出来,虽然两个名称相同,我们所使用的token显示使用了一次(Used 1 time(s))的信息
URL中将用户名和密码嵌入其中,格式为用户名:token@JenkinsURL也可以实现相同效果。同样以curl客户端为例,将将free_style_job_copy的状态设定为启用。
liumiaocn:jenkins liumiao$ curl -X POST -H Jenkins-Crumb:5955de6dcdcdb990b7341ead1045eb64 http://root:11d4332105f7c745eb0e48827579397bd9@localhost:32002/job/free_style_job_copy/enable
liumiaocn:jenkins liumiao$