gitignore для резервного копирования jenkins, включая артефакты сборки, кроме каталога сборки - PullRequest
0 голосов
/ 05 сентября 2018

Поэтому я пытаюсь настроить автоматическое резервное копирование jenkins, используя git в фоновом режиме. Теперь мне бы очень хотелось сделать резервную копию заархивированных результатов. Однако мне не нужна / не нужна остальная информация о сборке (а это много).

Я настроил .gitignore как:

/*snip*/
jobs/**/builds/*
/*snip*/

Но то, что мне нужно добавить (или я так прочитал), выглядит примерно так:

/*snip*/
jobs/**/builds/*
!jobs/**/builds/**/archive/*
/*snip*/

Но это не работает. Он сохраняет все игнорируемым в / builds / *. Как я могу отменить игнорирование архивных папок в папке builds / buildnumber /?

1 Ответ

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

Примечание из документации gitignore :

Невозможно повторно включить файл, если исключен родительский каталог этого файла.

Проблема с вашим шаблоном заключается в том, что jobs/**/builds/* исключает все числовые каталоги компоновки и все каталоги под ними , поэтому ваше последующее отрицание не имеет никакого эффекта, поскольку шаблон исключения является родителем archive каталог.

Что вам нужно сделать, это настроить шаблон так, чтобы исключить файлы / каталоги из отдельного числового каталога сборки, что по-прежнему позволяет повторно включать каталог archive

jobs/**/builds/*/*
!jobs/**/builds/*/archive

Пояснение:

  1. Исключить все файлы / каталоги внутри jobs/<job-name>/builds/<build-no>/
    • Обратите внимание на использование * вместо **; одиночная звездочка соответствует только одному каталогу вместо расширения, чтобы исключить все вложенные подкаталоги
  2. Повторно включить jobs/<job-name>/builds/<build-no>/archive (и любые файлы / каталоги в нем)

Я убедился, что эти шаблоны должны работать как для фристайла, так и для многоотраслевого стиля конвейерного задания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...