从网页触发一个jenkins项目(工作在1.9,在2.3中分解)

时间:2016-11-14 21:56:23

标签: jenkins

我们的构建生成一个网页,允许最终用户更轻松地基于原始构建启动新构建。这是一个例子:

<head>
   <title>Build Links</title>
   <script>
      function runNewBuild()
      {
         xmlhttp= new XMLHttpRequest();
         xmlhttp.open("POST","/view/MyView/job/MyJob/buildWithParameters?Parm1=Razz&Parm2=Zazz");
         xmlhttp.send()
      }
   </script>
</head>
<form onsubmit="return false;">
   <button onClick="runNewBuild()">Run New Build</button>
</form>

html文件存储在构建工作区中并从中进行访问。例如。网址是:

https://jenkins.myCompany.com:8081/job/MyJob/ws/SomeDir/build_links.html

这在1.9中运行良好,但现在升级后失败了。我通过设置修正了一些问题:

System.setProperty(&#34; hudson.model.DirectoryBrowserSupport.CSP&#34;,&#34; sandbox allow-forms allow-scripts;&#34;)

但我仍然(使用铬检查员):

  

XMLHttpRequest无法加载   https://jenkins.myCompany.com:8081/view/MyView/job/MyJob/buildWithParameters?Parm1=Razz&Parm2=Zazz。   No&#39; Access-Control-Allow-Origin&#39;标题出现在请求的上   资源。起源&#39; null&#39;因此不允许访问。响应   有HTTP状态码403。

有人可以提供一些指导吗?谷歌搜索倾向于提出与CORS相关的东西,但除非我遗漏了某些东西......这不应该是交叉起源。

2 个答案:

答案 0 :(得分:0)

如果我没弄错的话,那就是他们添加的Content-Security-Policy标题。 请尝试将其留空。如果你是从命令行运行它,只需加载Jenkins:

 -Dhudson.model.DirectoryBrowserSupport.CSP=\"\"
祝你好运!

答案 1 :(得分:0)

我得到了它的工作。有两个必要的步骤:

1)使用以下设置添加CORS插件:

Access-Control-Allow-Origins:https://jenkins.MyCompany.com:8081 Access-Control-Allow-Methods:POST Access-Control-Allow-Headers:origin Access-Control-Expose-Headers:origin

2)xmlhttp.withCredentials = true;