В Jenkins, как передать параметр из конвейерной работы в фристайл

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

РАБОТА Трубопровода:

node {
    parameters {
            choice(
                name: 'OS',
                choices:"Windows\nLinux\nMAC",
                description: "Choose Environment to build!")
                }
    stage('Build') {
        if("${params.Environment}" == 'Windows')
        {
       paramAValue = "${params.Environment}"
       build job: 'QA-Test-Windows',parameters: [[$class: 'StringParameterValue', name: 'ParamA', value: "$paramAValue"]]
        }
    }
    }

QA-Test-Windows - это работа в стиле фристайл, и мы попытались получить доступ к параметру в скрипте следующим образом, но он не работает.

Write-output "OS selected for testing is ${params.ParamA}"

Write-output "OS selected for testing is ${ParamA}"

Попытка доступа к переменным, но это не работает. Может кто-нибудь, пожалуйста, помогите мне в этом. Мы пытались создать фристайл QA-Test-Windows как Pipelinejob, но в этом фристайле много шагов для сборки.

3 ответа

НА ВЫЗОВЕ РАБОТЫ:

pipeline {
    agent any

    parameters {
        string(defaultValue: "123", description: 'This is a parameter', name: 'PARAMETER01')
    }

    stages {
        stage('Start'){
            steps{
                    build job: 'ANOTHER_JOB_NAME', wait: false, parameters: [string(name: 'HELLO', value: String.valueOf(PARAMETER01))]
            }
        }
    }
}

О ВТОРОЙ РАБОТЕ:

pipeline {
    agent any

    parameters {
        string(defaultValue: "", description: 'K', name: 'HELLO')
    }

    stages {
        stage('PrintParameter'){
            steps{
                sh 'echo ${HELLO}'
            }
        }
    }
}

Я не уверен, что именно неправильно в вашем коде, похоже, что есть ошибка. Может быть, вам нужно обернуть "$paramAValue" в {} тоже. когда вы пытаетесь запустить работу вниз по течению?

Но, в зависимости от того, что вы хотите, я только что проверил это рабочее решение:

У меня есть два конвейерных задания (вверх и вниз по течению):

  • Нижестоящее задание имеет параметр с именем OS

  • Задание вверх по течению имеет параметр выбора PickAnOS

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

pipeline {
    agent any
    parameters {
        choice(choices: ['Windows', 'Linux'], description: 'What OS?', name: 'PickAnOS')
    }
    stages {
        stage("run downstream job") {
            steps {
                echo "You choose: ${params.PickAnOS}"
                build job: 'downstream_job', parameters: [string(name: 'OS', value: '${params.PickAnOS}')]
            }
        }
    }
}

надеюсь, это поможет

Мое решение, т. е. (передача имени ветки нижестоящему заданию, которое клонирует репо с этой веткой)

Код нефтепровода вверх по течению: -

      // Git Checkout 
build job: 'FrontEnd_Checkout', wait: false, parameters: [string(name: 'BRANCH_NAME', value: "${env.frontend_branch}")]

Нижестоящее задание: - Выберите -> Этот проект параметризован -> имя: ${variable}

Другие вопросы по тегам