Странное поведение с плагином Jenkins "Pipeline: Build Step" - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь запустить работу Дженкинса с параметрами из другой работы. Я использую этот код для запуска:

stage ('Trigger autotests'){
  if (currentBuild.currentResult == 'SUCCESS'){
    build job: 'CloudVPN_Monitors/Monitor_QA', wait: false, parameters: [
      string(name: 'Environment', value: 'qa'),
      string(name: 'Browser', value: 'chrome')
    ]
 }
}

Это спокойствие кода работает довольно хорошо (в моем тесте Jenkinsfile), задание запущено. Но когда я использую тот же код в моем оригинальном Jenkinsfile - я получаю сообщение об ошибке:

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (java.util.LinkedHashMap) values: [[job:CloudVPN_Monitors/Monitor_QA, wait:false, parameters:[@string(name=Environment,value=qa), ...]]]
Possible solutions: wait(), any(), wait(long), any(groovy.lang.Closure), take(int), each(groovy.lang.Closure)
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:64)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:54)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)

Пожалуйста, посмотрите на мой оригинальный Jenkinsfile:

#!groovy

properties([
    [$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactDaysToKeepStr: '', artifactNumToKeepStr: '10', daysToKeepStr: '', numToKeepStr: '10']]
]);

def agent = getAgentForBranch()

node(agent) {
    notifyBuild('STARTED')

    def node = tool name: 'NodeJS', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation'
    env.PATH = "${node}/bin:${env.PATH}"

    sh 'npm --version'

    stage ('Checkout') {
        checkout scm
    }

    def date = new Date()
    def commitId = sh(returnStdout: true, script: 'git rev-parse --short --sq HEAD')
    def build = "${env.BUILD_NUMBER} | ${commitId} | ${date}"
    def RUNAUTOTESTS = false

    try {

        def IMAGE_ENVIRONMENT = env.BRANCH_NAME
        def WEBPACK_BUILD_ENV = env.BRANCH_NAME

        switch(env.BRANCH_NAME) {
            .......
            case 'qa':
                BUILD_ENVIRONMENT = 'qa'
                IMAGE_ENVIRONMENT = 'qa'
                AWS_REGION = 'us-east-1'
                RUNAUTOTESTS = true
                break;
            .......
        }

        CAPTCHA_PATH = '/cloudvpnui/' + BUILD_ENVIRONMENT


        stage ('Build docker containers'){
            withCredentials([file(credentialsId: 'nexus-ovpn-ui-shared', variable: 'NPMRC')]){
                ........
            }
            withAWSParameterStore(credentialsId: 'aws-public-captcha', naming: 'basename', path: "${CAPTCHA_PATH}", recursive: true, regionName: "${AWS_REGION}") {
                ........
            }
        }

        stage ('Upload containers') {
            .........
        }

        stage ('Update AWS service') {
            .........
        }

        stage ('Clean docker image') {
            .........
        }

        if (RUNAUTOTESTS){
            stage ('Wait until service becomes stable'){
                sh "aws ecs wait services-stable --cluster cloudvpn-${BUILD_ENVIRONMENT} --services cloudvpn-ui-${BUILD_ENVIRONMENT}"
                // Wait for ALB initialization
                sleep 120
            }
            stage ('Trigger autotests'){
                if (currentBuild.currentResult == 'SUCCESS'){
                    build job: 'CloudVPN_Monitors/Monitor_QA', wait: false, parameters: [
                        string(name: 'Environment', value: 'qa'),
                        string(name: 'Browser', value: 'chrome')
                    ]
                }
            }
        }

    } catch (e) {
        currentBuild.result = "FAILED"
        throw e
    } finally {
        notifyBuild(currentBuild.result)
    }
}

def getAgentForBranch() {
    .......
}

def notifyBuild(String buildStatus = 'STARTED') {
    .......
}

Знает ли кто-нибудь, что происходит на? Почему сборка завершается с ошибкой? Спасибо!

PS Jenkins v.2.204.1 Конвейер: плагин Build Step v.2.7

1 Ответ

0 голосов
/ 25 апреля 2020

Глядя на ошибку, кажется, что в задании CloudVPN_Monitors/Monitor_QA упомянутых параметров нет. Попробуйте следующие решения. 1. Проверьте, представлены ли указанные параметры в файле jenkins задания, которое вы вызываете. 2. Попробуйте удалить wait и проверьте, происходит ли ошибка. 3. Попробуйте команду ниже. Меня устраивает. build(job: "<relative path>/<job>/<branchname>", parameters: [booleanParam(name: 'userFlag', value: true), booleanParam(name: 'prodFlag', value: false)], propagate: false, quietPeriod: 1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...