Dans un pipeline Jenkins, je veux fournir une option à l'utilisateur pour donner une entrée interactive au moment de l'exécution. Je veux comprendre comment pouvons-nous lire l'entrée utilisateur dans le script groovy. Demande de nous aider avec un exemple de code:
Je fais référence à la documentation suivante: https://jenkins.io/doc/pipeline/steps/pipeline-input-step/
EDIT-1:
Après quelques essais, j'ai réussi à travailler:
pipeline {
agent any
stages {
stage("Interactive_Input") {
steps {
script {
def userInput = input(
id: 'userInput', message: 'Enter path of test reports:?',
parameters: [
[$class: 'TextParameterDefinition', defaultValue: 'None', description: 'Path of config file', name: 'Config'],
[$class: 'TextParameterDefinition', defaultValue: 'None', description: 'Test Info file', name: 'Test']
])
echo ("IQA Sheet Path: "+userInput['Config'])
echo ("Test Info file path: "+userInput['Test'])
}
}
}
}
}
Dans cet exemple, je peux faire écho (imprimer) les paramètres d'entrée utilisateur:
echo ("IQA Sheet Path: "+userInput['Config'])
echo ("Test Info file path: "+userInput['Test'])
mais je ne suis pas en mesure d'écrire ces paramètres dans un fichier ou de les affecter à une variable. Comment pouvons-nous y parvenir?
Pour enregistrer dans des variables et un fichier, essayez quelque chose comme ça en fonction de ce que vous aviez:
pipeline {
agent any
stages {
stage("Interactive_Input") {
steps {
script {
// Variables for input
def inputConfig
def inputTest
// Get the input
def userInput = input(
id: 'userInput', message: 'Enter path of test reports:?',
parameters: [
string(defaultValue: 'None',
description: 'Path of config file',
name: 'Config'),
string(defaultValue: 'None',
description: 'Test Info file',
name: 'Test'),
])
// Save to variables. Default to empty string if not found.
inputConfig = userInput.Config?:''
inputTest = userInput.Test?:''
// Echo to console
echo("IQA Sheet Path: ${inputConfig}")
echo("Test Info file path: ${inputTest}")
// Write to file
writeFile file: "inputData.txt", text: "Config=${inputConfig}\r\nTest=${inputTest}"
// Archive the file (or whatever you want to do with it)
archiveArtifacts 'inputData.txt'
}
}
}
}
}
Il s'agit de l'exemple le plus simple d'utilisation de input ().
Jusqu'à ce que vous cliquiez sur Continuer ou sur Annuler, le travail attend l'entrée utilisateur en état de pause.
pipeline {
agent any
stages {
stage('Input') {
steps {
input('Do you want to proceed?')
}
}
stage('If Proceed is clicked') {
steps {
print('hello')
}
}
}
}
Il existe des utilisations plus avancées pour afficher la liste des paramètres et permettre à l'utilisateur de sélectionner un paramètre. En fonction de la sélection, vous pouvez écrire une logique groovy pour continuer et déployer en QA ou en production.
Le script suivant affiche une liste déroulante dans laquelle un utilisateur peut choisir
stage('Wait for user to input text?') {
steps {
script {
def userInput = input(id: 'userInput', message: 'Merge to?',
parameters: [[$class: 'ChoiceParameterDefinition', defaultValue: 'strDef',
description:'describing choices', name:'nameChoice', choices: "QA\nUAT\nProduction\nDevelop\nMaster"]
])
println(userInput); //Use this value to branch to different logic if needed
}
}
}
Vous pouvez également utiliser StringParameterDefinition
, TextParameterDefinition
ou BooleanParameterDefinition
et bien d'autres comme mentionné dans votre lien
Solution: Pour définir, obtenir et accéder aux entrées utilisateur en tant que variable sur le pipeline jenkins, vous devez utiliser ChoiceParameterDefinition , en attachant un extrait de travail rapide:
script {
// Define Variable
def USER_INPUT = input(
message: 'User input required - Some Yes or No question?',
parameters: [
[$class: 'ChoiceParameterDefinition',
choices: ['no','yes'].join('\n'),
name: 'input',
description: 'Menu - select box option']
])
echo "The answer is: ${USER_INPUT}"
if( "${USER_INPUT}" == "yes"){
//do something
} else {
//do something else
}
}