Предоставьте доступ к файлам рабочей области в журнале во время работы Jenkins Build.

Мы хотим иметь конвейер, который строит наше приложение, затем приостанавливает работу и после того, как построенное приложение было протестировано вручную, возобновляет работу и доставляет протестированное приложение.

Поэтому мне пришла в голову идея использовать Input для приостановки конвейера следующим образом:

...
stage ("Build"){
    // build application here and archive it as artefact
}
timeout(time:5, unit:'DAYS') {
    input message:'Approve deployment?'
}
stage ("Deliver"){
   // deliver the built application
}

У тестировщика есть 5 дней, чтобы протестировать приложение, затем он возобновляет конвейер, и оно доставляется.

Моя проблема в том, что пока сборка еще выполняется, тестер еще не может получить доступ к артефакту на странице состояния.

Итак, есть ли способ предоставить какую-либо ссылку для загрузки в выводе журнала, которая указывает на файл приложения, который я заархивировал на этапе сборки? Или есть какой-либо другой хороший способ добиться этого рабочего процесса сборки-> паузы-> теста-> возобновления-> доставки в одном задании конвейера?

Автоматизация тестирования в пайплайне невозможна, так как приложение нужно прошивать вручную на каком-то оборудовании.


person Igle    schedule 08.05.2018    source источник
comment
почему бы вам не разделить конвейер на 2? до ручной работы и после ручной работы? (или 2 работы - смотря чем ты там занимаешься)   -  person Edwin    schedule 08.05.2018
comment
Это требование заказчика. Я знаю, что 2 конвейера было бы проще, но нам говорят, по крайней мере, попытаться найти решение, чтобы сделать это в рамках одного.   -  person Igle    schedule 08.05.2018
comment
тогда, возможно, вы можете создать поддельный тест задания и оставить его работать, пока тестер не закончит свой тест, а затем в доставке вы можете использовать этот плагин wiki.jenkins.io/display/JENKINS/Build+Blocker+Plugin, чтобы проверить, выполняется ли поддельное тестовое задание. Когда тестер закончит свой тест, он может вручную завершить поддельное задание. Но это неприятный способ решить эту проблему, и это может вызвать проблемы в будущем (в основном из-за человеческой ошибки: p).   -  person Edwin    schedule 08.05.2018
comment
Возобновить работу вручную не проблема, так как я могу сделать это с паузой. Мне нужно легко получить доступ к артефактам задания, пока оно все еще выполняется (приостановлено).   -  person Igle    schedule 08.05.2018
comment
да, именно поэтому я сказал, что вам нужно создать еще одну поддельную работу. Таким образом, у вас будет 3 задания: 1. сборка и создание артефактов -> 2. фейк-тест и ожидание 3. деплой. Когда вы выполняете задание 3 и ждете 2. у вас уже есть все артефакты (если вы используете maven для их хранения в артефакте или что-то в этом роде, они будут доступны)   -  person Edwin    schedule 08.05.2018
comment
Это будет дополнительная работа поверх второй, которую я уже хотел бы избежать. Итак, мой вопрос остается прежним: могу ли я легко предоставлять артефакты, пока задание еще выполняется? Я обновляю вопрос, чтобы учесть только одно задание конвейера.   -  person Igle    schedule 08.05.2018
comment
как выглядит ваш конвейер в jenkins? вы можете перейти на страницу сборки и увидеть артефакты (например, здесь: stackoverflow.com/questions/41974070/)?   -  person Edwin    schedule 08.05.2018
comment
Нет, артефакты на странице сборки недоступны на странице состояния, пока сборка не будет завершена.   -  person Igle    schedule 08.05.2018


Ответы (1)


Это приведет вас к списку артефактов (вы можете добавить больше после artifact, если хотите, чтобы ссылка указывала на конкретный файл):

...
timeout(time:5, unit:'DAYS') {
    echo "Archive available for download: ${env.BUILD_URL}artifact"
    input message:'Approve deployment?'
}

Для этого в конфигурации системы должно быть установлено значение JENKINS_URL: на домашней странице Jenkins нажмите Управление Jenkins --> Настроить систему и найдите Jenkins URL в разделе Расположение Jenkins

Если у вас нет доступа администратора к Jenkins и JENKINS_URL не установлен, вы можете подделать это чем-то вроде

https://known-jenkins-url/job/${JOB_NAME}/${BUILD_NUMBER}/artifact
person bto    schedule 08.05.2018