2
votes

Pipeline Jenkins, comment puis-je copier un artefact de la version précédente vers la version actuelle?

Dans Jenkins Pipeline, comment puis-je copier les artefacts d'une construction précédente vers la construction actuelle? Je veux faire cela même si la version précédente a échoué.


0 commentaires

3 Réponses :


0
votes

2 commentaires

Oui, le plugin Copy Artifact peut être utilisé, mais comment? Tous les exemples pointent vers la copie d'artefacts à partir d'autres travaux Jenkins, et non à partir de versions précédentes du même travail Jenkins. Aussi, comment cela peut-il être fait dans un script Pipeline? Pas via une configuration de menu dans un job Freestyle?


stage ('Copy') {copyArtifacts filter: '** / *. json', projectName: 'pipeline-test', selector: lastSuccessful (), target: 'dest'} le nom du projet peut être n'importe quel travail. Même la même chose pour obtenir l'artefact de la construction précédente



7
votes

Stuart Rowe m'a également recommandé sur le Pipeline Authoring Sig Gitter channel que je regarde le plugin Copy Artifact, mais m'a également donné un échantillon Syntaxe du pipeline Jenkins à utiliser .

Sur la base des conseils qu'il a donnés, j'ai conçu ce pipeline plus complet exemple qui copie les artefacts de la construction précédente dans la construction actuelle, si la construction précédente a réussi ou échoué.

pipeline {
    agent any;

    stages {
        stage("Zeroth stage") {
            steps {
                script {
                    if (currentBuild.previousBuild) {
                        try {
                            copyArtifacts(projectName: currentBuild.projectName,
                                          selector: specific("${currentBuild.previousBuild.number}"))
                            def previousFile = readFile(file: "usefulfile.txt")
                            echo("The current build is ${currentBuild.number}")
                            echo("The previous build artifact was: ${previousFile}")
                        } catch(err) {
                            // ignore error
                        }
                    }
                }
            }
        }

        stage("First stage") {
            steps {
                echo("Hello")
                writeFile(file: "usefulfile.txt", text: "This file ${env.BUILD_NUMBER} is useful, need to archive it.")
                archiveArtifacts(artifacts: 'usefulfile.txt')
            }
        }

        stage("Error") {
            steps {
                error("Failed")
            }
        }
    }
}


0 commentaires

0
votes

Supposons que vous souhaitiez utiliser un seul fichier de la version précédente, vous pouvez même utiliser curl pour placer le fichier dans l'espace de travail avant l'invocation mvn.

stage('Copy csv') {
            steps {
                   sh "mkdir -p ${env.WORKSPACE}/dump"
                    sh "curl http://<jenkins-url>:<port>/job/<job-folder>/job/<job-name>/job/<release>/lastSuccessfulBuild/artifact/dump/sample.csv/*view*/ -o ${env.WORKSPACE}/dump/sample.csv"
            }
        }    

Merci, Ashish


0 commentaires