Обновление тестируемого приложения с помощью Jenkins

Коллеги, добрый день. Возникла необходимость, создать job в Jenkins, которая бы обновляла приложение. Сам процесс на данный момент не затейлив и в принципе алгоритм мне ясен, но возникли сомнения в самой концепции. Итак, есть 3-и jobs, которые собирают 2-а war файла и jar файл. С помощью наверное PowerShell, я смогу остановить TomCat, скопировать туда эти файлы и запустить снова. Но вот здесь у меня и возник вопрос - как можно передать в job, артефакты других билдов и при этом гарантировать, что мы действительно используем последние версии файлов.
Можно было бы наверное использовать какой нибудь ревизионер, но увы под Windows с ними все не очень весело.

Т.е. deployment процессы у вас вообще не построены в компании? Не совсем понял, почему автоматизаторы занимаются вопросами редеплоя апликейшена?

Anyway, все зависит от ваших гитовых процессов, наличия какого-нибудь Nexus’а и т.п. Лично у нас процесс выглядит следующим образом. Когда Dev билд зеленый (включая passed unit / integration / smoke automation tests), dev бранч мерджится с qa. Далее запускается джоба, которая деплоит апликейшен артефакты в Nexus из qa бранча. Таким образом проходит подготовка к редеплою самого QA окружения. Если все ок, то запускается параметризованная QA джоба, которая принимает на вход версии артефактов, и передает их мейвен сборщику, который собственно в момент редеплоя вытянет нужные артефакты заданных версий из Nexus.

Используем отдельную джобу для развертывания, в ней задействован Copy Artifacts Plugin:

Т.е., артефакты других билдов копируются в workspace этой джобы, ну и далее путь можно передать в любой скрипт.

А можете, чуть поподробнее объяснить? Те джобы которые собирают артефакты - в них надо выбрать архивирование этих артефактов? Или они должны как то по другому подготовиться?

Да, делаешь архив артифактов:

Затем в другой джобе:

Единственное НО, в моем примере у меня не конкуретные билды, поэтому я смопойно могу брать latest stable. В зависимости от вашего флоу в дженкинсе надо будет или поступать так же, либо прямо назначать номера апстрим билдов.

Так и сделал, но что то у меня бастует - чувство прекрасного. Наверное более верно использовать какой нибудь Salt или городить какую нибудь связку Ansible + Cygwin или как вариант PowerShell