2017-09-26 4 views
1

J'ai défini une bibliothèque partagée dans Jenkins:Jenkins pipeline déclarative jette org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: méthode getAt non classés

import com.codependent.jenkins.pipelines.Utils 

def call(List<String> mavenGoals){ 
    def processedMavenGoals = mavenGoals.join ' ' 
    pipeline { 
    agent any 
    ... 
} 

Si j'appelle cela de Jenkinsfile de mon projet comme celui-ci il fonctionne ok:

#!groovy 
@Library('jenkins-pipeline-shared-library-example') _ 
buildPipeline(['clean', 'install']) 

Toutefois, si je laisse de côté la parethesis comme la syntaxe Groovy permet:

#!groovy 
@Library('jenkins-pipeline-shared-library-example') _ 
buildPipeline ['clean', 'install'] 

L'exécution montre l'exception suivante. Pourquoi?

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: unclassified getAt method buildPipeline[java.util.ArrayList] 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetArray(SandboxInterceptor.java:451) 
    at org.kohsuke.groovy.sandbox.impl.Checker$10.call(Checker.java:413) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetArray(Checker.java:418) 
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getArray(SandboxInvoker.java:45) 
    at com.cloudbees.groovy.cps.impl.ArrayAccessBlock.rawGet(ArrayAccessBlock.java:21) 
    at WorkflowScript.run(WorkflowScript:3) 
    at ___cps.transform___(Native Method) 
+0

Je suis confronté à un problème similaire. Avez-vous déjà trouvé la solution? Merci – Matyas

+0

Désolé, pas encore de solution. – codependent

Répondre

1

J'ai eu un problème similaire après jenkins mis à jour.

Dans mon cas, le stacktrace a également montré une org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException[...]

Raison

Jenkins a un module de sécurité qui bloque certains appels de méthode dans Jenkinsfile s.

Solution

Pour permettre à ces appels qui sont parfois inoffensifs:

  1. Aller à: http://JENKINS_HOST/scriptApproval/ (Official Documentation)
  2. Approuver l'action qui a été refusée dans le Jenkinsfile enter image description here
  3. Relancez la construction échouée pour voir le travail de Jenkinsfile