Задачи (Tasks)#
Настройка и выполнение задач#
Менеджер репозиториев позволяет планировать выполнение задач. Задачи могут выполнять регулярные действия по техническому обслуживанию, которые будут применяться ко всем или к конкретным репозиториям по настраиваемому расписанию. Чтобы открыть раздел задач, перейдите в меню Администрирование -> System -> Tasks.
Чтобы получить доступ к этому пункту меню, необходимо обладать привилегиями nx-admin или nx-tasks.

В разделе Tasks представлен список ранее созданных задач в виде таблицы. Для создания новой задачи воспользуйтесь кнопкой Create task.
В таблице содержатся следующие столбцы:
Столбец |
Краткое пояснение |
|---|---|
Name (Имя) |
Определенное пользователем имя задачи для ее идентификации в пользовательском интерфейсе и файлах журнала |
Type (Тип) |
Тип действия, которое выполняет запланированная задача |
Status (Статус) |
Текущий статус задачи: отключена, ожидает следующего запуска или запущена |
Schedule (Расписание) |
Периодичность выполнения задания |
Next run (Следующий запуск) |
Дата и время следующего выполнения задачи по настроенному расписанию |
Last run (Последний запуск) |
Дата и время, а также результат и продолжительность последнего выполнения задачи |
Last result (последний результат) |
Результат и продолжительность последнего выполнения задачи |
Частота выполнения задач#
Выбор частоты выполнения задачи позволяет настроить расписание ее выполнения. Доступны следующие варианты: Manual, Once, Hourly, Daily, Weekly, Monthly, и Advanced(CRON).
Manual - задачу можно выполнить только вручную;
Once - задача выполнится только один раз в указанную дату/время;
Daily - задача будет выполняться каждый день в указанное время;
Weekly - задача будет выполняться каждую неделю в указанный день и время;
Monthly - задача будет выполняться каждый месяц в указанные дни и время;
Advanced - задача, для запуска которой требуется указать выражение CRON для настройки более сложных расписаний.
Синтаксис, используемый для задачи Advanced, соответствует синтаксису CRON в стиле UNIX. Выражения CRON состоят из 6 обязательных и одного необязательного полей, разделенных пробелами, как описано в таблице ниже. Пример простого выражения - 0 0 9 * * ?. Данная конфигурация запускает выполнение задачи каждый день в 9:00 утра.
Имя поля |
Разрешенные значения |
Разрешенные специальные символы |
|---|---|---|
Секунды |
0-59 |
|
Минуты |
0-59 |
|
Часы |
0-23 |
|
День месяца |
1-31 |
|
Месяц |
1-12 или янв-дек |
|
День недели |
1-7 или сб - вс |
|
Год (необязательно) |
1970-2099 |
|
Поля выражения CRON#
Символ |
Значение |
|---|---|
|
Используется для указания любого значения. Например, |
|
Доступен для полей «День месяца» и «День недели». Используется для указания отсутствия конкретного значения |
|
Необходим для указания диапазонов. Например, 10-12 в поле «Часы» означает 10, 11 и 12 часов |
|
Используется для указания дополнительных значений |
|
Используется для указания начального значения и приращения. Например, 0/15 в поле «Секунды» означает 0, 15, 30 и 45 секунд. Указание |
|
Доступен только для полей «День месяца» и «День недели». Символ является сокращением от слова last, но в каждом из двух полей имеет разное значение. Например, символ |
|
Доступен только для поля «День месяца». Используется для указания ближайшего дня к данному дню недели. Например, если укажете |
|
Доступен только для поля «День недели». Используется для указания n-го дня месяца. Например, значение |
Примечание
Символы L и W также можно объединить для выражения дня месяца, чтобы получить LW, что переводится как «последний будний день месяца».
В таблице ниже представлены более подробные примеры выражений CRON.
Выражение |
Описание |
|---|---|
|
Выполняется в 12 часов (полдень) дня каждый день |
|
Выполняется в 10:15 утра каждый день |
|
Выполняется в 10:15 утра каждый день |
|
Выполняется в 10:15 утра каждый день |
|
Выполняется в 10:15 утра каждый день в течение 2015 года |
|
Выполняется каждую минуту, начиная с 14:00 и заканчивая в 14:59, ежедневно |
|
Выполняется каждые 5 минут, начиная с 14:00 и заканчивая в 14:55, ежедневно |
|
Выполняется каждые 5 минут, начиная с 14:00 и заканчивая в 14:55, и каждые 5 минут, начиная с 18:00 и заканчивая в 18:55, ежедневно |
|
Выполняется каждую минуту, начиная с 14:00 и заканчивая в 14:05, ежедневно |
|
Выполняется в 14:10 и в 14:44 каждую среду в марте месяце |
|
Выполняется в 10:15 утра каждый понедельник, вторник, среду, четверг и пятницу |
|
Выполняется в 10:15 утра 15 числа каждого месяца |
|
Выполняется в 10:15 утра в последний день каждого месяца |
|
Выполняется в 10:15 утра в последнюю пятницу каждого месяца |
|
Выполняется в 10:15 утра в последнюю пятницу каждого месяца в 2002, 2003, 2004 и 2005 годах |
|
Выполняется в 10:15 утра в третью пятницу каждого месяца |
Внимание
Задачи с префиксом «Repair» предназначены для выполнения только в случае, если возникли конкретные проблемы с системой. Такие задачи должны выполняться только вручную.
Типы задач и время их использования#
Доступны следующие задачи:
Название задачи |
Идентификатор задачи |
Описание |
Наличие в расписании |
|---|---|---|---|
|
|
Выполняется полное резервное копирование баз данных конфигурации, безопасности и компонентов, содержимое blobstore не затрагивается. Для корректного выполнения задачи необходимо выбрать место для резервного копирования данных, при запуске резервного копирования задача добавляет временную метку к файлам резервной копии |
Да |
|
|
Используется для удаления устаревших или ненужных тегов. Можно удалять теги по возрасту, изменению за определенный период или по регулярному выражению в названии. Также можно выбрать удаление связанных компонентов вместе с тегами и ограничить удаление определенным форматом или репозиторием |
Да |
|
|
Используется для оптимизации blobstore. Задача позволяет уменьшить занимаемое пространство и улучшить производительность системы за счет сжатия данных. Если ассеты удаляются или обновляются через API или с помощью таких задач, как |
Да |
|
|
Удаляет все временные файлы (.bytes и .properties), хранящиеся в каталоге |
Опционально |
|
|
Удаляет старые, неиспользуемые API ключи. Данные ключи генерируются, например, при использовании функции User Token и становятся бесполезными при удалении связанной учетной записи пользователя |
Да |
|
|
Поддерживаются скрипты на языке Groovy, они могут использовать API-интерфейсы менеджера репозитория для запуска задач. Дополнительная информация по скриптам содержится в документации Groovy, а также в инструкции на Javadoc |
Опционально |
|
|
Автоматически создающаяся при запуске сервера задача. Она отвечает за очистку репозиториев в соответствии с заданными политиками очистки. Автоматически удаляет устаревшие, неиспользуемые или ненужные компоненты, такие как старые версии пакетов и временные файлы. |
Да (автоматически по расписанию) |
|
|
Предназначена для очистки неиспользуемых blobs из blobstore. Процесс основан на проверке актуальности объектов в blobstore и их связи с существующими ассетами. Если объект больше не связан ни с одним ассетом, он удаляется из системы. |
Да |
|
|
Используется для перерасчета занимаемого объема blobstore. Она проверяет целостность данных и устраняет расхождения между фактическим размером хранилища и тем, что отображается в интерфейсе |
Нет |
|
|
Необходима для пересборки метаданных репозитория Apt. Это позволяет обновить информацию о пакетах и их версиях, что может быть полезно при изменении содержимого репозитория или возникновении проблем с метаданными |
Нет |
|
|
Удаляет незавершенные загрузки Docker-образов. Незавершенные загрузки могут возникать из-за потери соединения или ошибок на стороне клиента |
Да |
|
|
Предназначена для очистки неиспользуемых манифестов и Docker-образов. Неиспользуемыми считаются манифесты и образы, которые больше не связаны с активными контейнерами или репозиториями |
Да |
|
|
Используется для восстановления и обновления метаданных Helm hosted репозитория. В процессе выполнения задачи происходит пересоздание индексов и обновление данных о версиях чарта |
Нет |
|
|
Позволяет удалять версии артефактов Maven с пометкой |
Да |
|
|
Задача была заменена на функцию Политики очистки, в качестве наилучшей практики cледует использовать именно функцию очистки. |
Да |
|
|
Используется для публикации файлов индексатора Maven для быстрого доступа к метаданным проекта |
Опционально |
|
|
Аналог задачи |
Опционально |
|
|
Необходима для удаления метаданных MD5 файлов в индексе PyPi. Обратите внимание, что удаляется только индекс, а не контрольная сумма |
Нет |
|
|
Необходима для генерации отсутствующих контрольных сумм SHA-256 для файлов в индексе PyPI |
Нет |
|
|
Необходима для пересоздания файла |
Нет |
|
|
Восстанавливает и перенастраивает интерфейс просмотра репозитория. Задача помогает устранить проблемы с отображением содержимого репозитория и обеспечить корректную работу функции просмотра |
Нет |
|
|
Восстанавливает и перенастраивает систему поиска в репозитории. Задача помогает устранить проблемы с поиском нужных файлов и обеспечить корректную работу функции поиска. |
Нет |
|
|
Выполняет синхронизацию базы данных компонентов с blobstore для устранения несоответствий. Задача не предназначена для регулярного использования, а применяется в случаях, когда возникают подозрения на подобные несоответствия |
Нет |
|
|
Сравнивает метаданные поиска с данными в npm hosted репозитории и выявляет несоответствия. Задача может включать в себя следующие действия: удаление устаревших записей, исправление неправильных ссылок, обновление метаданных |
Нет |
|
|
Используется для удаления компонентов в прокси репозиториях. Любой компонент, который не использовался в течение заданного количества дней, будет «мягко удален» |
Нет |
|
|
Предназначена для импорта внешних файлов в экземпляр Artifactory. Внешние файлы должны быть организованны в корректной структуре каталогов для требуемого формата репозитория. Подробная информация в разделе задача Repository Export |
Нет |
|
|
Предназначена для экспорта ассетов из репозиториев. Подробная информация в разделе задача Repository Import |
Нет |
Ведение журнала задач#
Результаты выполнения каждой задачи попадают в отдельный файл журнала. По умолчанию журналы хранятся в папке $data-dir/log/tasks. Имя файла журнала каждой задачи соответствует типу, за которым следуют полная дата и время запуска задачи. Например: repository-maven.purge-unused-snapshots-20170618153235.log.
Для длительно выполняющихся задач прогресс будет записываться в журнал Artifactory.log каждые 10 минут по мере продолжения работы. Чаще всего это будет отображаться как контекстуальное обновление, относящееся к конкретной задаче.
Файлы журнала задач удаляются через 30 дней.
Задачи Maven SNAPSHOT#
Задача Maven - Delete SNAPSHOT#
Задача Maven - Delete SNAPSHOT используется для удаления компонентов из репозитория Maven с пометкой SNAPSHOT. Запуск задачи поможет сохранить место в хранилище, удалив старые версии файлов с пометками SNAPSHOT, к которым больше нет доступа после развертывания новых.
Чтобы создать задачу, заполните следующие поля:
Task name - название задачи;
Repository - название репозитория, из которого будут удаляться снепшоты;
Minimum snapshot count - минимальное количество снепшотов в репозитории, которое должно остаться после удаления;
Snapshot retention (days) - количество дней, в течение которых снепшоты должны храниться перед их удалением;
Remove if released - чекбокс, при включении которого задача удаляет версии снепшотов с теми же
groupId,artifactIdиbaseVersionчто и у релизной версии;Grace period after release (days) - количество дней после релиза новой версии артефакта, в течение которых снепшоты не будут удалены.
Лежащие в основе «мягко удаленные» Blobs удаляются навсегда, используя стратегию, поддерживаемую реализацией blobstore.
Пример задачи Maven - Delete SNAPSHOT#
Для примера, допустим, у вас есть папка с именем 1.3-SNAPSHOT, в которой содержатся три файла с разными временными метками:
artifact-1.3-20210226.143327-1.jarartifact-1.3-20210226.172432-2.jarartifact-1.3-20210227.102015-3.jar
Настроим задачу Maven - Delete SNAPSHOT со следующими параметрами:
Minimum snapshot count: 1;
Snapshot retention (days): 0;
Grace period after release: 0.
После выполнения задачи с такой конфигурацией останется только один файл с последней временной меткой в названии файла - artifact-1.3-20210227.102015-3.jar.
Задача Maven - Delete Unused SNAPSHOT#
Задача Maven - Delete Unused SNAPSHOT автоматически удаляет снепшоты, которые не использовались в течение определенного периода времени, основываясь на количестве дней, прошедших с момента последнего запроса артефакта. При запуске этой задачи будет удалена любая версия снепшота, которая не использовалась в течение заданного количества дней.
Задача Repository Export#
Задача Repository - Export Assets позволяет пользователям экспортировать файлы и папки из выбранного репозитория в локальную систему.
Информация о каждом экспортированном файле содержится в Журнале задач, вместе с информацией об ошибках, которые могли возникнуть.
Задача создает скрытый каталог .artifactory внутри целевого каталога, который содержит метаданные, используемые для последующих экспортов.
Чтобы создать задачу, заполните следующие поля:
Task Name - название задачи;
Source repository - репозиторий, из которого будет производиться экспорт. В этом списке представлены только репозитории поддерживаемых форматов;
Target directory - каталог, в который будут экспортироваться файлы;
Task frequency - частота, с которой будет выполняться задача, подробнее в разделе Частота выполнения задач.
Задача Repository Import#
Задача Repository - Import external files предназначена для импорта внешних файлов в репозиторий. Принцип работы заключается в сканировании локальной системы на наличие файлов и папок, которые соответствуют заданным критериям, после чего происходит ипорт найденных файлов в репозиторий, создавая новые записи и сохраняя их метаданные.
Пользователю, который работает с Artifactory, необходимо иметь возможность записи в исходный каталог. Для обеспечения возможности выполнения поэтапного импорта, история сохраняется в исходном каталоге.
Чтобы создать задачу, заполните следующие поля:
Task Name - название задачи;
Target repository - репозиторий, в который будут импортироваться файлы;
Source directory - каталог, из которого будут импортироваться файлы. Файлы должны находиться в каталоге, поддерживающем нужный формат;
Task frequency - частота, с которой будет выполняться задача, подробнее в разделе Частота выполнения задач.
После запуска задачи, она создает каталог .artifactory/nxp-import-export-task/ внутри исходного каталога. Данный каталог содержит метаданные, которые будут использоваться для будущего импорта, если задача выполняется более одного раза.