我正在尝试向Jenkins API发出请求。但是,我总是收到401未经授权的错误。我已经尝试了使用Curl的所有请求排列-包括发送API令牌和Crumb。Jenkins托管在DEV服务器上,而不是我的本地服务器上。我在Jenkins上启用了CSRF保护。这可能是CORS问题还是其他什么问题?
谢谢
发布于 2020-04-03 18:26:16
401可能表示您的用户名/密码不正确。
这对我来说很有效:curl -v -X GET "http://$JENKINS_URL/crumbIssuer/api/json" --user $USERNAME:$USERPASS
如果存在CORS问题,请使用https://plugins.jenkins.io/cors-filter/。
发布于 2021-09-30 23:54:07
使用API令牌使用参数触发Jenkins构建
变量
UserName是具有执行作业权限的用户
UserTokenValue是分配给UserName的令牌密钥。
JobTokenValue是分配给作业以允许远程执行的令牌密钥。
登录Jenkins
单击右上角的用户名
单击配置
单击添加令牌
捕获UserTokenValue。注意:下一步将不需要令牌id。
可选-验证分配给用户的令牌。
命令curl -v -u <user>:<userTokenValue> <jenkins>/user/<user>/api/json
示例curl -v -u john:11bc70579c86512be9a4356127640abfda http://jenkins.dv.local:8080/user/john/api/json
找到Jenkins作业,然后单击配置
滚动到“构建触发器”部分,并选中“远程触发构建”复选框。
在文本框中输入密码“身份验证令牌”。远程执行此特定作业需要令牌。使用"SuperSecret“
因为令牌是在这一个作业配置中设置的,所以该值将只允许这一个作业远程执行。
如果您愿意,可以对所有作业使用相同的值,但据我所知,没有办法全局管理JobTokenValue。
使用Curl POST的带参数的
你的价值观会有所不同。
JenkinsUrl:https://jenkins.dv.local:8080
UserName :约翰
UserTokenValue : 115e46b2109bda095cc070b6347dafe585
JobTokenValue : SuperSecret
命令
curl -X POST <JenkinsUrl>/job/test/build -user <UserName>:<UserTokenValue> --data token=<JobTokenValue> --data parm1Name=parm1Value --data parm2Name="Parm2Value with spaces"
示例
curl -X POST http://jenkins.dv.local:8080/job/MyRemoteJob/buildWithParameters --user john:115e46b2109bda095cc070b6347dafe585 --data token=SuperSecret --data TEST_PLAN_KEY=QTAK-1040 --data BROWSER="Chrome (headless)"
https://stackoverflow.com/questions/60902741
复制相似问题