Неудачный многоотраслевой конвейер Jenkins не работает, так как работает в Groovy Sandbox - PullRequest
0 голосов
/ 05 сентября 2018

Моя конфигурация сборки Jenkins CI / CD работала, и ничего не изменилось до моего последнего запроса на получение, и мне нужно, чтобы это снова заработало.

Многотранспортный конвейер настроен для запуска jenkinsfile из BitBucket SCM, но теперь происходит сбой со следующей ошибкой;

groovy.lang.MissingPropertyException: No such property: pipeline for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:130)

Подключаемый модуль безопасности сценариев установлен, и в утверждении сценария в процессе работы ничего не указано для подтверждения.

Плагин безопасности Permissive Script установлен и jenkins.xml изменен, чтобы включить флаг -Dpermissive-script-security.enabled=true для запуска .war.

Они были реализованы и работали ранее на основе Как отключить проверки безопасности для сборок конвейера Jenkins

В качестве теста я создал задание Pipeline, которое позволяет включать и отключать Groovy Sandbox. Это было настроено с помощью следующей урезанной версии моего конвейерного скрипта:

#!groovy

pipeline {

    agent any

    environment {
        VERSION = "${env.MAJOR_VERSION}.${env.MINOR_VERSION}"
        BUILD_LABEL = "MyProject ${env.VERSION} Build #${env.BUILD_NUMBER}"
        BUILD_SOURCESDIRECTORY = "${WORKSPACE}\\src"
    }

    options {
        copyArtifactPermission('MyProject-Deploy')
        buildDiscarder(logRotator(numToKeepStr: '5', artifactNumToKeepStr: '5'))
    }

    parameters {
        string (
            defaultValue: '3',
            description: 'MyProject Major Version',
            name : 'MAJOR_VERSION')
        string (
            defaultValue: '7',
            description: 'MyProject Minor Version',
            name : 'MINOR_VERSION')
    }

    stages {

        stage('Checkout Source') {
            steps {             
                echo('checkout scm')                
            }
        }
    }
}

Если я включил Use Groovy Sandbox и запустил задание, я получаю ту же ошибку;

Running in Durability level: MAX_SURVIVABILITY
[Pipeline] End of Pipeline
groovy.lang.MissingPropertyException: No such property: pipeline for class: groovy.lang.Binding
    at groovy.lang.Binding.getVariable(Binding.java:63)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:130)

Если я отключу Use Groovy Sandbox, сценарий конвейера успешно завершится;

Running in Durability level: MAX_SURVIVABILITY
[Pipeline] node
Running on Jenkins in C:\Jenkins-Workspace\Pipeline-Test
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Checkout Source)
[Pipeline] echo
checkout scm
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
  • Как мне убедиться, что у меня чистая конфигурация Jenkins?
  • Стоит ли пытаться понизить версию Jenkins с версии 2.121.3?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Исправлено в версии 1.46 плагина безопасности скрипта.

0 голосов
/ 05 сентября 2018

Попробуйте понизить плагин Script Security с v1.45 до v1.44 и перезапустить Jenkins.

Просто столкнулся с этим сам после обновления плагинов, хотя я не использую плагин Permissive Script Security.

...