Как заставить Дженкинса копировать артефакты в динамический каталог? - PullRequest
4 голосов
/ 09 марта 2011

Я пытаюсь заставить Дженкинса скопировать артефакты сборки в каталог архива на другом сервере с помощью плагина scp.

В идеале, я бы хотел, чтобы назначение было динамическим в зависимости от версии сборки, поэтому результат должен выглядеть примерно так: /builds/<build version>/

Для версии сборки, такой как 1.2.3.4.это выглядело бы так:

/builds/1.2.3.4/

После прочтения страницы плагина scp это не выглядит возможным, но я подумал, что кто-то здесь, возможно, понял это.

Есть лиспособ сделать это?

Лучше просто поместить артефакты с номером версии, встроенным в имя файла, в один каталог?

1 Ответ

4 голосов
/ 11 марта 2011

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

В вашей сборке у вас есть доступ к номеру сборки, используя $ BUILD_NUMBER (или% BUILD_NUMBER%, в зависимости от обстоятельств -> Linux против Windows).

В любом случае, как часть вашего скрипта, вы можете создать каталог с именем $ BUILD_NUMBER, поэтому:

mkdir -p $ BUILD_NUMBER

-или-

md% BUILD_NUMBER%

Так, например, новый каталог будет /path/to/workspace/1.2.3.4

Как только ваша сборка будет завершена, в конце вашего скрипта создайте вышеуказанный каталог, переместите в него свой артефакт и выполните tar / zip каталог вверх.

Используйте этот файл tar / zip как артефакт вашей работы.

Используйте плагин scp для передачи этого артефакта на конечный компьютер и разархивируйте / распакуйте его там (скажем, в / path / to / artifact / directory )

Тогда у вас будет / path / to / artifact / directory / 1.2.3.4 .

Для следующей сборки, скажем, 1.2.3.5, вы создадите новый каталог (с именем 1.2.3.5), переместите свой артефакт в него в конце сборки, заархивируйте его и перенесите. Когда вы распакуете его по месту назначения, у вас будет новый каталог / path / to / artifact / directory / 1.2.3.5 с новым артефактом сборки.

Я знаю, это звучит странно, но на самом деле это довольно легко реализовать.

...