2012-01-13 3 views
5

Я использую Jenkins и нажимаю «Архивировать артефакты» в конце моих сборников, чтобы архивировать их в zip-файл.Может ли Дженкинс построить доступ к архивированным артефактам от себя?

Вместо использования этого шага я хотел бы использовать скрипт для перемещения артефактов на удаленный сервер в конце сборки. Сервер, на который я нажимаю, использует запрос REST API/HTTP PUT в скрипте для загрузки файлов.

Обратите внимание, что я ищу доступ к артефакту, созданному в той же сборке. Поэтому, если я на сборке № 5, мне нужны артефакты из сборки №5, а не сборка № 4.

Есть ли способ получить доступ к этому zip-файлу со сценарием в том же сборке, в котором он был создан?

Мне нужно загрузить этот zip удаленно и не хотите создавать другую работу для этого.

ответ

1

Невозможно найти доступ к пакету «Архивировать артефакты» сборки, которая его генерирует. Этот шаг всегда происходит последним в сборке. Доступ к URL до окончания сборки (во время сборки через скрипт, например) приводит к созданию пустого zip-файла. Чтобы обойти это ограничение, я делаю второе связанное задание сборки, чтобы захватить zip и запустить мой скрипт для его развертывания.

4

Вы можете установить один из плагинов «Publish Over...», чтобы загрузить свои артефакты в конце сборки.

Цель Публикуйте Более плагин обеспечить последовательный набор функций и поведения при отправке строить артефакты ... где-то.

См. Также full list of "upload" plugins для других способов публикации ваших артефактов.

+0

Я использую скрипт cURL для проверки в командной строке, я могу загрузить свои артефакты. Я могу в конечном итоге сделать это отдельное задание, которое начинается, чтобы просто выполнить развертывание. Есть ли способ использовать плагины Publish Over для упаковки артефактов в zip, а затем запустить мой скрипт? – DonBecker

+0

Упаковочные предметы, вероятно, не входят в объем этих плагинов.Однако вы можете создать zip-файл в качестве последнего шага сборки вашей работы. –

+0

Похоже, что я могу захватить zip-файл как последний шаг, но он заканчивается пустым. Это имеет смысл, поскольку «Архивировать артефакты» выполняется последним в сборке. Я не могу найти способ запустить скрипт в плагинах Publish Over, поэтому я думаю, что мне нужно создать отдельное задание. – DonBecker

4

Как @Christopher сказал, вы можете использовать любой из Publish Over плагинов на странице плагинов Jenkins, чтобы загрузить артефакт любой из

Если вы хотите получить доступ к архивный файл почтового индекса внутри самого, вы строите можно использовать следующую ссылку для доступа к нему:

http://<server>/job/${JOB_NAME}/lastSuccessfulBuild/artifact/<artifact name w/folder>

Например:

  • сервер = myserver.com
  • имя задания = myproject
  • артефакт = del/project.zip

Ваш URL будет:

http://myserver.com/job/myproject/lastSuccessfulBuild/artifact/del/project.zip

EDIT: Вопрос был изменен. В любом случае это будет работать для доступа к артефакту предыдущей сборки в текущей.

+0

Но этот URL-адрес будет иметь доступ к артефактам * last * build, а не к текущему. Поэтому мое предложение использовать плагин издателя в конце сборки. –

+0

Правда. Тем не менее, он указал, что использует «Архив артефактов», который обычно является последним шагом в сборке, поэтому мое предложение. Я решил, что ему нужно получить доступ к существующему артефакту при каждой сборке. – Sagar

+0

Кристофер прав, мне нужно получить доступ к артефактам из сборки, в которой они были созданы. – DonBecker

Смежные вопросы