3

私はこのパイプラインを実行しようとしているローカルの信頼環境でJenkinsを実行しています。このJenkinsfileはgitにチェックインされています。Jenkinsパイプラインビルドのセキュリティチェックを無効にする方法

#!groovy 
node('master') { 
    def ver = pomVersion() 
    echo "Building version $ver" 
} 

def pomVersion(){ 
    def pomtext = readFile('pom.xml') 
    def pomx = new XmlParser().parseText(pomtext) 
    pomx.version.text() 
} 

私は、ビルドを実行した最初の数回、私は手動で(インプロセスJenkins->疥癬Jenkins->スクリプトの承認)の変更を承認する必要がありました。今私はこの例外を取得し、承認するものはありません。私がしたいのは、XMLファイルを解析するだけです。これらのセキュリティチェックは、パイプラインビルドのために完全にバイパスできますか?

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: unclassified field groovy.util.Node version 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.unclassifiedField(SandboxInterceptor.java:367) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:363) 
    at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238) 
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:23) 
    at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:17) 
    at WorkflowScript.pomVersion(WorkflowScript:10) 
    at WorkflowScript.run(WorkflowScript:3) 
    at ___cps.transform___(Native Method) 
    at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:62) 
    at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30) 
    at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:54) 
    at sun.reflect.GeneratedMethodAccessor479.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72) 
    at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21) 
    at com.cloudbees.groovy.cps.Next.step(Next.java:58) 
    at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:154) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:29) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:29) 
    at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:164) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:276) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$000(CpsThreadGroup.java:78) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:185) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:183) 
    at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:47) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112) 
    at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Finished: FAILURE 

答えて

0

上記のように、新しいJenkinsバージョンでは、スクリプトセキュリティが強化されています。しかし、Mavenのpom.xml 1から版を読んでの具体的なユースケースのためにPipeline Utility Steps PluginからreadMavenPomを使用することができますいくつかの他のソリューションでは

pom = readMavenPom file: 'pom.xml' 
pom.version 

このStackOverflow questionでも同様に。

あなたは、次の手順で問題を解決することができます
0

  1. Permissive Script Securityプラグイン(バージョン0.3以降)をインストール
  2. 値とジェンキンスマスターにpermissive-script-security.enabledコマンドラインパラメータを追加します。

    • trueスクリプトを承認する必要性を無効にしたいが、潜在的に危険な署名が記録される場合:

      -Dpermissive-script-security.enabled=true 
      
    • no_securityスクリプトを承認し、潜在的に危険な署名のログインも無効にする必要性を無効にしたい場合:

      -Dpermissive-script-security.enabled=no_security 
      
関連する問題