Как передать через params на работу Дженкинс? - PullRequest
0 голосов
/ 08 октября 2019

Задание A запускает 2 параллельных параметризованных задания B.

Задание A:

stage('Build and Deploy') {
    branch = "${BRANCH}"

    def builds = [:]
    builds["A"] = {
        build job: 'job-A',parameters: [
            string(name: 'module', value: "A"),
            string(name: 'BRANCH', value: ${BRANCH}),
            string(name: 'AUTO_DEPLOY', value: 'true') ],  quietPeriod: 2
        }
    builds["B"] = {
        build job: 'job-B', parameters: [
            string(name: 'module', value: "A"),
            string(name: 'BRANCH', value: ${BRANCH}),
            string(name: 'AUTO_DEPLOY', value: 'true')], quietPeriod: 2
    }
    parallel builds

    build job: "deploy-job-A", parameters: [string(name: 'AUTO_DEPLOY', value: "true")], wait: false
    build job: "deploy-job-B", parameters: [string(name: 'AUTO_DEPLOY', value: "true")], wait: false

}

У него есть параметр выбора BRANCH с именами ветвей, которыенеобходимо передать в задание B. Другой параметр выбора - AUTO_DEPLOY, который передается заданию B, и задание B должно передать его по цепочке, поскольку оно необходимо для задания C.

Задание B

node {
    stage("Build job-${module} image") {
        branch = "${env.BRANCH}"
        checkout scm
        buildVersion= readFile('job.version').trim() + ".${BUILD_NUMBER}"
        // stuff
        build job: "deploy-${JOB_NAME}", parameters: [
                string(name: 'buildVersion', value: buildVersion),
                string(name: 'AUTO_DEPLOY', value: ${env.AUTO_DEPLOY})], wait: false
    }
}

Задание C:

script {
    def deployVersion = "${image}".substring("${image}".lastIndexOf(':') + 1)
    currentBuild.description = "${deployVersion}"
}

stage('Checkout') {
    node {
        checkout scm
    }
}
stage('Deploy prelive') {
    try {
        milestone 1
        if (${env.AUTO_DEPLOY} != 'true') {
            input message: "Deploy ${image} to prelive?"
        }
        milestone 2
        // stuff
}

ОБНОВЛЕНИЕ:

задание A выбрасывает

java.lang.NoSuchMethodError: No such DSL method '$' found among steps

скорее всего, он не может разрешить параметр string(name: 'BRANCH', value: ${BRANCH})

1 Ответ

0 голосов
/ 08 октября 2019

Он не может разрешить $ {BRANCH}, потому что это строковая интерполяция ... без строки. Окружите его кавычками, и оно должно работать:

string(name: 'BRANCH', value: "${BRANCH}")

Редактировать:

Я предполагаю, что BRANCH является строковой переменной. В этом случае вы можете просто опустить $

string(name: 'BRANCH', value: BRANCH)

, если это не так, вы можете использовать переменную "branch", которую вы объявили сверху.

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