web-dev-qa-db-fra.com

Comment désactiver les contrôles de sécurité pour les versions de pipeline Jenkins

J'exécute Jenkins dans un environnement de confiance local où j'essaie de gérer ce pipeline. Ce Jenkinsfile est vérifié dans git.

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

Les premières fois que j'ai exécuté la construction, j'avais besoin d'approuver manuellement les modifications (Jenkins-> Mange Jenkins-> Approbation de script en cours de traitement). Maintenant, j'ai cette exception et il n'y a rien à approuver. Tout ce que je veux faire, c'est analyser un fichier XML. Ces contrôles de sécurité peuvent-ils être complètement ignorés pour les constructions en pipeline?

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
7
Gary

Actuellement, ce n'est pas possible. Il existe un ticket ouvert pour ce problème https://issues.jenkins-ci.org/browse/JENKINS-28178

8
Andre

Essayez le plugin jenkins suivant: https://wiki.jenkins-ci.org/display/JENKINS/Permissive+Script+Security+Plugin Il désactive le bac à sable. Travaille pour moi.

5
ruediste

Vous pouvez résoudre le problème en procédant comme suit:

  1. install Permissive Script Security plugin (version 0.3 ou plus récente)
  2. ajoute le paramètre de ligne de commande permissive-script-security.enabled au maître Jenkins avec la valeur:

    • true si vous souhaitez désactiver l'approbation des scripts, mais que les signatures potentiellement dangereuses seront consignées:

      -Dpermissive-script-security.enabled=true
      
    • no_security si vous souhaitez désactiver le besoin d'approuver les scripts et désactiver également la journalisation des signatures potentiellement dangereuses:

      -Dpermissive-script-security.enabled=no_security
      
3
agabrys

Comme indiqué ci-dessus: dans les nouvelles versions de Jenkins, Script Security a été renforcé. Toutefois, pour le cas d'utilisation spécifique de la lecture d'une version à partir du pom.xml de Maven, vous pouvez utiliser readMavenPom à partir du plugin Pipeline Utility Steps :

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

Avec d'autres solutions dans cette question StackOverflow aussi.

1
Joep Weijers