2016-06-20 13 views
3

Ich verwende Jenkins in einer lokalen vertrauenswürdigen Umgebung, in der ich versuche, diese Pipeline auszuführen. Diese Jenkinsfile wird in git eingecheckt.Wie kann ich Sicherheitsüberprüfungen für Jenkins-Pipeline-Builds deaktivieren?

#!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() 
} 

Die ersten paar Male lief ich den Build, brauchte ich manuell Änderungen (Jenkins-> Mange Jenkins-> In-Prozess-Skript-Zustimmung) zu genehmigen. Jetzt bekomme ich diese Ausnahme und es gibt nichts zu genehmigen. Alles, was ich tun möchte, ist eine XML-Datei zu analysieren. Können diese Sicherheitsüberprüfungen für Pipeline-Builds vollständig umgangen werden?

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 

Antwort

0

Wie oben beantwortet: In den neueren Jenkins-Versionen wurde Script Security verschärft. Jedoch für den spezifischen Anwendungsfall eine Version von Maven pom.xml eine Lesung könnte readMavenPom vom Pipeline Utility Steps Plugin verwenden:

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

Mit einigen anderen Lösungen in diesen StackOverflow question auch.

0

Sie können das Problem durch folgende Schritte lösen:

  1. installieren Permissive Script Security Plugin (Version 0.3 oder höher)
  2. hinzufügen permissive-script-security.enabled Kommandozeilenparameter zu Jenkins Master mit Wert:

    • true Wenn Sie die Genehmigung von Skripts deaktivieren möchten, aber möglicherweise gefährliche Signaturen protokolliert werden:

      -Dpermissive-script-security.enabled=true 
      
    • no_security, wenn Sie die Notwendigkeit deaktivieren Skripte zu genehmigen und deaktivieren auch der potenziell gefährlichen Signaturen Anmeldung:

      -Dpermissive-script-security.enabled=no_security 
      
Verwandte Themen