web-dev-qa-db-fra.com

Dans Jenkins, comment passer un paramètre d'un travail Pipeline à un travail Freestyle

J'exécute un travail de pipeline et avec cela, nous devons passer un paramètre à un travail en aval, mais cela ne fonctionne pas. Nous avons essayé comme suit:

EMPLOI Pipeline:

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 est un travail de style libre et en ce sens que nous avons essayé d'accéder au paramètre dans le script comme suit, mais cela ne fonctionne pas.

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

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

J'ai essayé d'accéder aux variables mais ça ne fonctionne pas. Quelqu'un peut-il m'aider à ce sujet? Nous avons essayé de créer un travail freestyle QA-Test-Windows en tant que Pipelinejob mais dans ce freestyle il y a beaucoup d'étapes de construction.

3
Geo

SUR LE TRAVAIL APPELANT:

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))]
            }
        }
    }
}

SUR LE DEUXIÈME TRAVAIL:

pipeline {
    agent any

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

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

Je ne sais pas exactement ce qui ne va pas dans votre code, il semble qu'il y ait une erreur. Vous devez peut-être envelopper votre "$paramAValue" en {} aussi. lorsque vous essayez d'exécuter un travail en aval?

Mais, selon ce que vous voulez, je viens de tester cette solution de travail:

J'ai deux emplois de pipeline (en amont et en aval):

  • Le travail en aval a un paramètre avec le nom OS

  • Le travail en amont a le paramètre de choix PickAnOS

et il existe un script de pipeline de travail pour le travail en amont, qui exécute le travail en aval avec le paramètre sélectionné

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}')]
            }
        }
    }
}

J'espère que ça aide

1
Sysanin