5 votes

Pipeline déclaratif Jenkins - Paramètres d'entrée utilisateur

J'ai cherché des exemples de paramètres d'entrée utilisateur en utilisant le pipeline déclaratif de Jenkins, mais tous les exemples utilisent les pipelines scriptés. Voici un exemple de code que j'essaie de faire fonctionner :

pipeline {
    agent any

    stages {
        stage('Stage 1') {
            steps {
                 input id: 'test', message: 'Hello', parameters: [string(defaultValue: '', description: '', name: 'myparam')]
                 sh "echo ${env}"
            }
        }
    }
}

Je ne parviens pas à trouver comment accéder à la base de données des myparam variable, ce serait formidable si quelqu'un pouvait m'aider. Merci de votre compréhension.

11voto

Rob Hales Points 2249

Lors de l'utilisation de entrée il est très important d'utiliser agent aucun au niveau global du pipeline, et affecter des agents aux différentes étapes. Placer le entrée dans une étape distincte qui utilise également des agent aucun . Si vous allouez un nœud d'agent pour l'étape d'entrée, cet exécuteur d'agent restera réservé par cette construction jusqu'à ce qu'un utilisateur poursuive ou interrompe le processus de construction.

Cet exemple devrait vous aider à utiliser l'entrée :

def approvalMap             // collect data from approval step

pipeline {
    agent none

    stages {
        stage('Stage 1') {
            agent none
            steps {

                timeout(60) {                // timeout waiting for input after 60 minutes
                    script {
                        // capture the approval details in approvalMap.
                        approvalMap = input id: 'test', message: 'Hello', ok: 'Proceed?', parameters: [choice(choices: 'apple\npear\norange', description: 'Select a fruit for this build', name: 'FRUIT'), string(defaultValue: '', description: '', name: 'myparam')], submitter: 'user1,user2,group1', submitterParameter: 'APPROVER'
                    }
                }
            }
        }
        stage('Stage 2') {
            agent any

            steps {
                // print the details gathered from the approval
                echo "This build was approved by: ${approvalMap['APPROVER']}"
                echo "This build is brought to you today by the fruit: ${approvalMap['FRUIT']}"
                echo "This is myparam: ${approvalMap['myparam']}"
            }
        }
    }
}

Lorsque la fonction d'entrée revient, si elle n'a qu'un seul paramètre à renvoyer, elle renvoie directement cette valeur. Si l'entrée contient plusieurs paramètres, elle renvoie une carte (hachage, dictionnaire) des valeurs. Pour capturer cette valeur, nous devons passer au scriptage groovy.

Une bonne pratique consiste à envelopper votre code d'entrée dans une étape de temporisation afin que la construction ne reste pas dans un état non résolu pendant une période prolongée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X