Может ли Дженкинс хранить артефакты вне каталога заданий? - PullRequest
14 голосов
/ 28 февраля 2012

У меня в настоящее время есть Jenkins, настроенный с несколькими заданиями, но резервное копирование оказывается трудным, потому что артефакты хранятся в каталоге заданий.Я хотел бы сделать резервную копию конфигураций заданий и артефактов отдельно.Я уверен, что помню, что где-то читал, что у Дженкинса теперь есть возможность хранить их вне работы, но я не могу найти это.

Есть ли опция конфигурации, которая делает это, в то же время делая артефакты видимыми изв работе на интерфейсе Дженкинс?(то есть, а не просто надстройка, которая копирует артефакты в другом месте)

Ответы [ 6 ]

12 голосов
/ 02 января 2014

Перейдите на страницу конфигурации jenkins, например,

http://mybuildserver.acme.com/configure

В верхней части страницы конфигурации находится настройка «домашнего каталога». Нажмите кнопку «Дополнительно ...» под ней.

Теперь установите «Корневой каталог рабочей области» на e:\jenkins-workspaces\${ITEM_FULL_NAME}, а «Корневой каталог записи сборки» на e:\jenkins-builds\${ITEM_FULL_NAME} или что-то подобное.

Предупреждение: я запустил Jenkins 2.7.2 и заметил, что некоторые функции не работают должным образом после такой настройки Jenkins. Я видел проблемы с папками и проблемы с плагином многоотраслевого проекта . Проверьте состояние этих проблем, если вы полагаетесь на эти функции.

6 голосов
/ 28 февраля 2012

Как вы можете см. Здесь , есть много плагинов для развертывания артефактов в любом месте, где вы хотите / нуждаетесь, на FTP, CIFS, Confluence, Artifactory .... особенно ArtifactsDeployer , который позволит вам сделать копию артефактов в Доме Дженкинс.

1 голос
/ 25 ноября 2018

Спасибо, Сэм, за ваш пост, который направил меня в правильном направлении, чтобы решить мою проблему. Искал способ, как я могу сделать символическую ссылку на Job-архив сборки для многоотраслевых проектов. До сих пор мы вручную искали правильное базовое имя папки в файловой системе и добавляли его в файл Jenkinsfile. Теперь я могу просто использовать

jobOutputFolder = currentBuild.rawBuild.artifactsDir.path

и используйте это в моем сценарии. Если проблема касается безопасности, я мог бы реализовать ее как совместно используемую библиотеку.

1 голос
/ 07 января 2013

Попробуйте вариант сборки Use Custom Workspace. Из всплывающей подсказки Дженкинса:

Для каждой работы в Jenkins Jenkins выделяет уникальное «рабочее пространство». каталог. "Это каталог, где код извлекается и сборки случаются. Обычно вы должны позволить Дженкинс распределять и убирать каталоги рабочего пространства, но в некоторых ситуациях это проблематично, и в этом случае эта опция позволяет вам указать местоположение рабочей области вручную.

Эта опция также доступна в дополнительных свойствах проекта многоконфигурационных сборок проекта.

0 голосов
/ 25 сентября 2018

Groovy-сценарий в разделе «Подготовка среды для запуска» всегда будет запускаться на главном сервере, и этот groovy-сценарий может создать символическую ссылку, куда вы действительно хотите архивировать артефакты на archive_to, в которую СЛЕДУЕТ включать имя задания и номер сборки:

if (! Files.createSymbolicLink(Paths.get(currentBuild.artifactsDir.path),
                               Paths.get(archive_to.getCanonicalPath()))) {
  throw new RuntimeException("Can't create symlink to archive dir")
}

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

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

0 голосов
/ 24 июля 2013

Плагин копирования артефактов (https://wiki.jenkins -ci.org / display / JENKINS / Copy + Artifact + Plugin ) добавляет шаг сборки для извлечения файлов из рабочей области другого проекта в текущийи работать оттуда.

...