0

Windows 7 ローカルホストに Jenkins と Subversion がインストールされています。それらは独立して正常に動作します。

Jenkins 用の Subversion プラグインがインストールされています。このページからhttps://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin#SubversionPlugin-Windowsspecificpostcommithook post-commit.bat と vbs スクリプトが記述されています。

この Visual Basic コードは失敗します。

url = jenkins + "crumbIssuer/api/xml?          
xpath=concat(//crumbRequestField,"":"",//crumb)"
Set http = CreateObject("Microsoft.XMLHTTP")
http.open "GET", url, False

このエラーで:

javax.servlet.ServletException: POST でなければなりません。hudson.model.AbstractModelObject.requirePOST(AbstractModelObject.java:88) で GET することはできません

このコードは CSRF 保護トークンのクラムを取得していると思いますが、失敗しています。

https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API言います:

Jenkins uses the "Prevent Cross Site Request Forgery exploits" 
security option (which it should), when you make a POST request, 
you have to send a CSRF protection token as an HTTP request header.

CSRF 保護をオンにしませんでしたが、単純にする必要があることはわかっています。

* .vbs スクリプト ファイルの GET セクションを削除したので、POST セクションを呼び出すだけで、crumb 変数を参照したり、要求ヘッダーをまったく変更したりしませんが、それでも「Must be POST, Can GET しないでください」というエラーが表示されます。

何を与える?

4

1 に答える 1

0

ジェンキンスを構成しました:ジェンキンスの管理>グローバルセキュリティの構成>「クロスサイトリクエストフォージェリの悪用を防ぐ」にチェックを入れます(「セキュリティを有効にする」をオフのままにしておくことができます)>デフォルトのクラム発行者

そして、それは少し役に立ちました (GET は成功しましたが、POST は同じように失敗しました)。

POST を機能させるにはどうすればよいですか? 私の質問は、この仲間の答えによって答えられました。SCM ポーリングを行うようにプロジェクトを構成する必要がありますが、心配する必要はありません。年に 1 回ポーリングするように設定できます。

自動 Jenkins Build をトリガーする Post-Commit フック

于 2014-04-28T20:36:52.647 に答える