Когда я использую плагин Copy Artifact для Jenkins, как я могу получить нужный артефакт из другого задания, которое выполняется (в нисходящем направлении) по тому же конвейеру?Прямо сейчас я использую артефакт из «Последней успешной сборки», но он также может быть неправильным, потому что задание, из которого я получаю артефакт, уже может быть запущено снова и создаст другой артефакт.
Немного подробного объяснения полной настройки:
Для своего проекта я использую Jenkins для сборки и автоматического развертывания на Nexus, HockeyApp и Play Store.Я создал многоотраслевой конвейер, который использует следующий JenkinsFile (упрощенная версия):
#!groovy
node('android') {
def branchName = env.BRANCH_NAME
def params = [string(name: 'BRANCH_NAME', value: branchName)]
echo "Using branch: ${branchName}"
stage('Build & Unittests') {
build job: 'Android - Unittests', parameters: params
}
if (branchName == 'master') {
stage('Nexus publish') {
build job: 'Android - Nexus publish', parameters: params
}
stage('HockeyApp') {
build job: 'Android - HockeyApp', parameters: params
}
stage('Google Play Store') {
build job: 'Android - Play Store', parameters: params
}
}
}
Все остальные задания являются проектами с несколькими конфигурациями с 2 осями: FLAVOR и TYPE
The job 'Android - Unittests 'создаст артефакт .apk, который может использоваться всеми последующими заданиями.Для этого я использовал плагин Copy Artifact .
Например, это моя конфигурация сборки для задания «Android - публикация Nexus»:
Так как я могуиспользовать правильный артефакт из задания «Android - Unittests»?
пс.это очень важно в моем случае, потому что я работаю с несколькими ветками.Довольно часто случается, что несколько ветвей запускают конвейер, поэтому «последняя успешная сборка» не всегда правильная: задание «Android - Play Store» может быть создано после того, как другая ветвь уже запущена