Je suis en train de créer un travail de pipeline Jenkins qui prendra un paramètre de fichier. Je peux déclencher le travail et le diriger vers un fichier, mais je ne trouve pas où le fichier a abouti (dans un travail de style libre ordinaire, ce serait dans l'espace de travail).
Où est passé le fichier téléchargé? Ou les paramètres de fichier ne fonctionnent-ils pas actuellement avec les pipelines?
Il existe actuellement un problème avec les paramètres pipeline et file ( https://issues.jenkins-ci.org/browse/JENKINS-27413 ).
Résolu de la manière suivante:
node {
deleteDir()
stage("upload") {
def inputFile = input message: 'Upload file', parameters: [file(name: 'data.Zip')]
new hudson.FilePath(new File("$workspace/data.Zip")).copyFrom(inputFile)
inputFile.delete()
}
stage("checkout") {
echo fileExists('data.Zip').toString()
}
}
Je sais que la solution n’est pas très belle, car le pipeline est interrompu pour le téléchargement, mais cela fonctionne.
De plus, le "copyFrom" est nécessaire, car l'entrée stocke le "data.Zip" dans le répertoire des travaux et non dans l'espace de travail (je ne sais pas pourquoi).
Trouvé un WA (Strictly pour l'entrée de fichier texte) Nous pouvons utiliser le paramètre de chaîne multi-lignes de Jenkins et demander à l'utilisateur de coller le contenu du fichier à celui-ci . Et dans notre pipeline, écrivez le contenu de ce paramètre en utilisant l'étape de pipeline writeFile comme:
stage('File Param WA') {
writeFile file: 'demo.yaml', text: params.DEMO_YAML
}
J'ai essayé d'utiliser la solution fournie par @Christoph Forster, mais le fichier d'entrée n'a été copié nulle part dans l'espace de travail . J'ai donc utilisé la solution de contournement décrite dans https://bitbucket.org/janvrany/ jenkins-27413-workaround-library/src/6b7dada8ea37? at = default
La bibliothèque fournit une nouvelle bibliothèque - unstashParam - qui enregistre le paramètre de construction du fichier dans un espace de travail. Fonctionne bien avec le texte et le fichier yaml.