2013-08-07 6 views
11

Я архивируюсь артефакт в качестве последнего шага сборки и он доступен как что-то вроде этого: https://xxx.ci.cloudbees.com/job/xxx/52/artifact/target/xxx-1.2.1-SNAPSHOT-r8304-20130807-1507-app.zipДженкинс: Использование архивация Артефакт в продвигаемой Построить

Как я могу легко получить доступ к артефакту в моем процессе продвижения? Обратите внимание, что мне нужно получить доступ к конкретной сборке, а не к последней успешной.

Целью процесса продвижения является копирование артефакта на S3, с которого наше задание на развертывание будет продолжать его обрабатывать. Поэтому я мог бы продвинуть сборку № 52 к разработке (скопируйте ее в конкретный ведро S3), а затем продвиньте сборку №50 до производства и так далее.

В идеале, я могу получить доступ к артефакту в сценарии оболочки, чтобы переименовать файл и т. Д. Есть ли переменная среды для доступа к архивированным артефактам сборки, которую я не могу найти и как это сделать? $BUILD_URL и $JOB_URL уже относятся к процессу продвижения и не указывают на сам сборку в сценариях оболочки в рекламной работе.

С плагином copy artifact я могу копировать только артефакты из других сборок в процессе продвижения, что мне не нужно делать.

ответ

15

Я считаю, что нашел решение.

Резюме

  • Не используйте Указан на Постоянной ссылку
  • Использования Конкретных сборки и установить номер сборки в ${PROMOTED_NUMBER}

Решением

Предпосылки

  • Должен быть установлен Copy Artifact Plugin.
  • Архив артефакты вы хотите получить доступ к акции
    • В после построения действия добавить Действие Архивировать артефакты и установить файлов в архив на то, что вы хотите, чтобы ваше продвижение к доступу.
  • Не выбрасывайте старые артефакты
    • В конфигурации работы, снимите Утилизировать старые билды или убедитесь, что его параметры будут держать артефакты, пока вы хотите продвигать сборки. Установка

Promotion:

Настройка вверх ваша способствовала сборка с именем и критериями, как обычно.

В разделе Действия добавьте действие Скопируйте артефакты из другого проекта и установите эти значения.

  • Название проекта: ${PROMOTED_JOB_NAME}
  • строящих: Конкретная Сложение
  • Сложение Номер: ${PROMOTED_NUMBER}
  • Артефакты Копирование: path/to/your/artifacts/**
  • Цель: ${BUILD_TAG}

Затем добавить действия, которые вы действительно хочу сделать. Например, добавьте действие Архив артефактов, чтобы сохранить артефакты. Не забудьте указать префикс ваших путей: ${BUILD_TAG}, например. ${BUILD_TAG}/path/to/your/artifacts/**

Заметка о том, почему

Копирование артефактов

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

Это также является причиной того, что значение Target установлено. Рабочее пространство может быть опробовано с помощью других сборок или рекламных акций. Установка цели на ${BUILD_TAG} Предотвращает конфликты с файлами, уже находящимися в рабочей области, путем создания папки, уникальной для процесса продвижения.

$ {PROMOTED_ *} переменные

Как вы утверждаете обычные переменные сборки относятся к самому процессу продвижения, но продвигаемое Сложение Плагин определяет некоторую environment variables со ссылкой на фактическую сборку вместо этого.

Permalinks

В контексте Дженкинс permalinks относится только к специальным ссылкам, что указует на последнюю сборку определенного типа или последнюю акцию. Вот почему вы всегда получите последнюю версию

В моей версии Jenkins выпадающее меню заменено текстовым полем.Написание URL-адреса для конкретной сборки, например http://jenkins/job/myjob/59/, является not recognized как одно из специальных постоянных ссылок и копирование will thus fail.

+0

Это действительно выбор правильной сборки. Довольно неясное, но отличное решение! – xeraa

+0

Это должно быть включено в документацию «Продвигаемые сборки» –

5

Вы можете использовать плагин Copy Artifact. Установите его для копирования артефактов из основного проекта и выберите . Постоянная ссылка где постоянная ссылка Последнее продвижение: этот способ продвижения.

(Обратите внимание, что поскольку конфигурация продвижение относится к себе здесь, вы не можете добавить такое продвижение в один шаг:. Вы должны добавить продвижение без шага сборки, сохранить, а затем вернуться назад и добавить этапы сборки)

+0

Я считаю, что называние немного запутывает, но это определенно шаг в правильном направлении. Проведя небольшое испытание, я испытал следующее поведение: первый процесс продвижения принимает текущий артефакт. Любое дополнительное развертывание может использовать только текущий или более поздний артефакт. Если я уже продвинул сборку №60 для определенной рекламы, попытка продвинуть № 59 снова развернет № 60. Мне нужно обсудить это, но это, вероятно, полезно избегать старых развертываний. – xeraa

+0

В плагине копий артефакта есть новое (я думаю) средство, которое вы можете указать номер сборки и артефакт, который вы хотите, из этого номера сборки –

+0

@xeraa: Получили ли вы решение этой проблемы? Я столкнулся с той же проблемой. продвинул сборку № 60, а затем попытался продвигать меньшую версию, продвигая последнюю рекламируемую версию артефакта. – Sabya

0

Как можно в стороне, вы можете обнаружить, что Workflow system упрощает настройку такого типа логики конвейера, без необходимости использовать плагины Promoted Build или Copy Artifact вообще.

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