Które artefakty do archiwum Jenkins za pomocą Archiveartifacts Jeśli zadanie działa równolegle pracy na różnych węzłach?

matrix {
    axes {
        axis {
            name 'PLATFORM'
            values 'linux', 'mac', 'windows'
        }
    }
    agent {label 'PLATFORM'}
    stages {
        stage('build-and-test') {
            // create artifacts in env.WORKSPACE/delivery/
            archiveArtifacts artifacts: env.WORKSPACE + 'delivery/**'
        }
    }
}

W takim przypadku mogą być identyczne lub różne artefakty o tych samych nazw. Czy Jenkins przechowuj wszystkie? Które artefakty zobaczymy na stronie pracy w ramach "Ostatnie udane artefakty" ?

2
Viktor Be 12 marzec 2020, 12:58

1 odpowiedź

Najlepsza odpowiedź

Nie dostaniesz wszystkiego, a o ile pamiętam, Jenkins zastąpi artefakty, więc etapy, które prosi o archiwimy e.g. "Tests.xml" będzie w wyścigu, zwycięzca jest ostatnim do linii mety.

Przesuwamy artefakty do unikalnego folderu przed archiwizowaniem, np.

...
script {
    sh label: "Moving artifacts to ${testName}",
        script: """rm -rf ${env.WORKSPACE}/${testName} || true
            mkdir ${env.WORKSPACE}/${testName}
            mv ${env.WORKSPACE}/tests.xml ${env.WORKSPACE}/${testName}/"""

    archiveArtifacts artifacts: "${testName}/**" 
}
3
MaratC 12 marzec 2020, 10:24