2017-05-17 10 views
0

私はいくつかのJava標準ライブラリメソッドを使用する必要があるJenkinsfileを構築しています。Jenkins JenkinsfileサンドボックスでJavaクラス(java.net.URLなど)を使用するにはどうすればよいですか?

例えば、ビルドスクリプトの1ビットで、ユーザー入力として提供されたURLからホスト名を抽出する必要があります。私はいくつかの他の文字列の内容の一部の文字列の内容を置き換えるためにjava.lang.Stringでを使用したいスクリプトの別のビットで

URI u = new URI(artifactoryIndexURL) 

:私はこのような何かをしたいと思います。

残念ながらクラスが記載されている白(またはそのような何か)ではないと表示されます。

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use new java.net.URI java.lang.String 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectNew(StaticWhitelist.java:187) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onNewInstance(SandboxInterceptor.java:130) 
    at org.kohsuke.groovy.sandbox.impl.Checker$3.call(Checker.java:191) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedConstructor(Checker.java:188) 
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.constructorCall(SandboxInvoker.java:20) 

ジェンキンスデフォルトのサンドボックスは、メソッドの非常に小さなコアが、すべてを除くように見えます。私がJenkinsfileで特定のJavaクラスを実行できるようにする方法はありますか?私のJenkinsサーバーで完全な管理者権限を取得する必要はありませんか?この問題を回避する通常の方法は何ですか?

答えて

1

jenkinsホームページから「Manage Jenkins」に移動し、「In-process Script Approval」メニューを選択することで、これらのメソッドを1つずつホワイトリストに登録することができます。時間の経過とともに、一般的な方法のまともなホワイトリストを構築することができます。また、ホワイトリストの危険な方法を承認しようとすると警告が表示されます。

1

シンプルな修正が1つ見つかりました。ジェンキンスライブラリをグローバルにインストールできます。これにより、サンドボックスが無効になります。

関連する問題