我正在尝试配置一个知名的事件管理工具,以对Jenkins职位构建URL执行POST请求,以响应某些警报。
在此工具中,出于某些原因我无法放置 Jenkins作业构建端点如下:
https://<user>:<apiToken>@my-jenkins.com/blabla/job/blabla/build?token=<myTokenName>
因此,该工具提供的唯一替代方法是将授权详细信息作为标题。
在此之前,我正在尝试使用curl
来检查是否可行。因此,我使用以下curl
命令使用基本身份验证标题调用该詹金斯URL:
curl -X POST -H 'Authorization:Basic <user:apiToken in base64>' -H 'Jenkins-Crumb:<my-crumb>' 'https://my-jenkins.com/blabla/job/blabla/build?token=<myTokenName>'
但是给我一个 401:未经授权(用户:my-user的无效密码/令牌)。如果我在URL中放置的凭据与第一个代码段相同,那么它将起作用。
我已阅读以下文档:https://wiki.jenkins.io/display/JENKINS/Authenticating+scripted+clients,并且似乎设置Basic auth标头很简单,但是我认为我在这里缺少了一些东西,因为当我使用{{ 1}}。
我也用Google搜索了一下,似乎每个人都用URL中的curl
来调用Jenkins职位构建URL,但是正如我提到的,该工具不允许放置这样的URL。
有没有人使用基本的auth标头执行Jenkins职位发布?
任何帮助将不胜感激。非常感谢!
答案 0 :(得分:0)
好的...很令人尴尬,但似乎我正在用macOS命令行shell生成base64字符串,但是它没有用。
我对Postman进行了同样的操作以生成auth标头,现在它可以正常工作了...
希望能以某种方式帮助某人。
答案 1 :(得分:0)
我面临着同样的问题。下面是我的解决方案。
Nginx配置:
upstream app {
server jenkin_internal_ip:8080;
}
server {
listen 80 default_server;
charset utf-8;
location / {
include proxy_params;
proxy_set_header Authorization $http_jenkins_authorization;
proxy_pass http://app;
proxy_redirect off;
}
}