Дженкинс: используйте архивный артефакт в продвигаемой сборке

Я архивировал артефакт как последний шаг сборки, и он был доступен как-то вроде этого: https://xxx.ci.cloudbees.com/job/xxx/52/artifact/target/xxx-1.2.1-SNAPSHOT-r8304-20130807-1507-app.zip

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

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

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

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

Ответ 1

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

Резюме

  • Не использовать Указание по permalink
  • Использовать специальную сборку и установить номер сборки ${PROMOTED_NUMBER}

Решение

Предпосылки

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

Настройка продвижения:

Создайте свою рекламируемую сборку с именем и критериями, как обычно.

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

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

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

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

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

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

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

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

Как вы утверждаете, обычные переменные сборки относятся к самому процессу продвижения, но плагин Promoted Build определяет некоторые переменные среды ссылаясь на фактическую сборку.

Permalinks

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

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

Ответ 2

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

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

Ответ 3

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