Задачи (Tasks)#

Настройка и выполнение задач#

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

Чтобы получить доступ к этому пункту меню, необходимо обладать привилегиями nx-admin или nx-tasks.

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

, - * ? / L W

Месяц

1-12 или янв-дек

, - * /

День недели

1-7 или сб - вс

, - * ? / L #

Год (необязательно)

1970-2099

, - * /

Поля выражения CRON#

Символ

Значение

*

Используется для указания любого значения. Например, * в поле «Минуты» означает каждую минуту

?

Доступен для полей «День месяца» и «День недели». Используется для указания отсутствия конкретного значения

-

Необходим для указания диапазонов. Например, 10-12 в поле «Часы» означает 10, 11 и 12 часов

,

Используется для указания дополнительных значений

/

Используется для указания начального значения и приращения. Например, 0/15 в поле «Секунды» означает 0, 15, 30 и 45 секунд. Указание * перед / эквивалентно указанию 0 в качестве значения, с которого нужно начинать

L

Доступен только для полей «День месяца» и «День недели». Символ является сокращением от слова last, но в каждом из двух полей имеет разное значение. Например, символ L в поле «День месяца» означает последний день месяца. Если данный символ используется в поле «День недели», оно означает 7 или SAT(воскресенье). Однако если оно используется в поле «День недели» после другого символа, оно означает «последний __ день месяца» - например, 6L означает «последнюю пятницу месяца»

W

Доступен только для поля «День месяца». Используется для указания ближайшего дня к данному дню недели. Например, если укажете 15W в качестве значения для поля «День месяца», это будет означать: «ближайший будний день к 15-му числу месяца». Символ W может быть указан только в случае, если день месяца - это один конкретный день, а не диапазон или список дней

#

Доступен только для поля «День недели». Используется для указания n-го дня месяца. Например, значение 6#3 в поле «День недели» означает третью пятницу месяца (день 6 - пятница, а #3 - третий день в месяце)

Примечание

Символы L и W также можно объединить для выражения дня месяца, чтобы получить LW, что переводится как «последний будний день месяца».

В таблице ниже представлены более подробные примеры выражений CRON.

Выражение

Описание

0 0 12 * * ?

Выполняется в 12 часов (полдень) дня каждый день

0 15 10 ? * *

Выполняется в 10:15 утра каждый день

0 15 10 * * ?

Выполняется в 10:15 утра каждый день

0 15 10 * * ? *

Выполняется в 10:15 утра каждый день

0 15 10 * * ? 2015

Выполняется в 10:15 утра каждый день в течение 2015 года

0 * 14 * * ?

Выполняется каждую минуту, начиная с 14:00 и заканчивая в 14:59, ежедневно

0 0/5 14 \* \* ?

Выполняется каждые 5 минут, начиная с 14:00 и заканчивая в 14:55, ежедневно

0 0/5 14,18 \* \* ?

Выполняется каждые 5 минут, начиная с 14:00 и заканчивая в 14:55, и каждые 5 минут, начиная с 18:00 и заканчивая в 18:55, ежедневно

0 0-5 14 \* \* ?

Выполняется каждую минуту, начиная с 14:00 и заканчивая в 14:05, ежедневно

0 10,44 14 ? 3 WED

Выполняется в 14:10 и в 14:44 каждую среду в марте месяце

0 15 10 ? \* MON-FRI

Выполняется в 10:15 утра каждый понедельник, вторник, среду, четверг и пятницу

0 15 10 15 \* ?

Выполняется в 10:15 утра 15 числа каждого месяца

0 15 10 L \* ?

Выполняется в 10:15 утра в последний день каждого месяца

0 15 10 ? \* 6L

Выполняется в 10:15 утра в последнюю пятницу каждого месяца

0 15 10 ? \* 6L 2002-2005

Выполняется в 10:15 утра в последнюю пятницу каждого месяца в 2002, 2003, 2004 и 2005 годах

0 15 10 ? \* 6#3

Выполняется в 10:15 утра в третью пятницу каждого месяца

Внимание

Задачи с префиксом «Repair» предназначены для выполнения только в случае, если возникли конкретные проблемы с системой. Такие задачи должны выполняться только вручную.

Типы задач и время их использования#

Доступны следующие задачи:

Название задачи

Идентификатор задачи

Описание

Наличие в расписании

Admin - Backup H2 Database

h2.backup.task

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

Да

Admin - Cleanup Tags

tags.cleanup

Используется для удаления устаревших или ненужных тегов. Можно удалять теги по возрасту, изменению за определенный период или по регулярному выражению в названии. Также можно выбрать удаление связанных компонентов вместе с тегами и ограничить удаление определенным форматом или репозиторием

Да

Admin - Compact blob store

blobstore.compact

Используется для оптимизации blobstore. Задача позволяет уменьшить занимаемое пространство и улучшить производительность системы за счет сжатия данных. Если ассеты удаляются или обновляются через API или с помощью таких задач, как Admin - Cleanup repositories, Artifactory помечает связанные файлы как удаленные с возможностью восстановления. Данная задача удаляет помеченные файлы, освобождая используемое пространство

Да

Admin - Delete blobstore temporary files

blobstore.delete-temp-files

Удаляет все временные файлы (.bytes и .properties), хранящиеся в каталоге /content/tmp выбранного blobstore

Опционально

Admin - Delete orphaned API keys

security.purge-api-keys

Удаляет старые, неиспользуемые API ключи. Данные ключи генерируются, например, при использовании функции User Token и становятся бесполезными при удалении связанной учетной записи пользователя

Да

Admin - Execute script

script

Поддерживаются скрипты на языке Groovy, они могут использовать API-интерфейсы менеджера репозитория для запуска задач. Дополнительная информация по скриптам содержится в документации Groovy, а также в инструкции на Javadoc

Опционально

Admin - Cleanup repositories using their associated policies

repository.cleanup

Автоматически создающаяся при запуске сервера задача. Она отвечает за очистку репозиториев в соответствии с заданными политиками очистки. Автоматически удаляет устаревшие, неиспользуемые или ненужные компоненты, такие как старые версии пакетов и временные файлы.
По умолчанию задача очистки запланирована на ежедневное выполнение в 1 час ночи по серверному времени. Задача будет выполняться для всех репозиториев с настроенной политикой очистки. Если удалить задачу, Artifactory автоматически воссоздаст ее при перезапуске сервера

Да (автоматически по расписанию)

Admin - Cleanup unused asset blobs

assetBlob.cleanup

Предназначена для очистки неиспользуемых blobs из blobstore. Процесс основан на проверке актуальности объектов в blobstore и их связи с существующими ассетами. Если объект больше не связан ни с одним ассетом, он удаляется из системы.
По умолчанию Artifactory автоматически создает одну задачу Admin - Cleanup unused asset blobs для каждого формата. Выполняется каждые 30 минут с момента запуска сервера. Никаких действий со стороны пользователя не требуется

Да

Admin - Recalculate blob store storage

blobstore.metrics.reconcile

Используется для перерасчета занимаемого объема blobstore. Она проверяет целостность данных и устраняет расхождения между фактическим размером хранилища и тем, что отображается в интерфейсе

Нет

Apt - Rebuild Apt metadata

repository.apt.rebuild.metadata

Необходима для пересборки метаданных репозитория Apt. Это позволяет обновить информацию о пакетах и их версиях, что может быть полезно при изменении содержимого репозитория или возникновении проблем с метаданными

Нет

Docker - Delete incomplete uploads

repository.docker.upload-purge

Удаляет незавершенные загрузки Docker-образов. Незавершенные загрузки могут возникать из-за потери соединения или ошибок на стороне клиента

Да

Docker - Delete unused manifests and images

repository.docker.gc

Предназначена для очистки неиспользуемых манифестов и Docker-образов. Неиспользуемыми считаются манифесты и образы, которые больше не связаны с активными контейнерами или репозиториями

Да

Helm - Rebuild Helm metadata

repository.helm.rebuild.metadata

Используется для восстановления и обновления метаданных Helm hosted репозитория. В процессе выполнения задачи происходит пересоздание индексов и обновление данных о версиях чарта

Нет

Maven - Delete SNAPSHOT

repository.maven.remove-snapshots

Позволяет удалять версии артефактов Maven с пометкой SNAPSHOT, которые больше не используются или являются устаревшими. Подробная информация в разделе Задачи Maven SNAPSHOT

Да

Maven - Delete unused SNAPSHOT

repository.maven.purge-unused-snapshots

Задача была заменена на функцию Политики очистки, в качестве наилучшей практики cледует использовать именно функцию очистки.
Задача позволяет удалять неиспользуемые версии артефактов Maven с пометкой SNAPSHOT в зависимости от количества дней, прошедших с момента последнего запроса компонента. Подробная информация в разделе Задачи Maven SNAPSHOT

Да

Maven - Publish Maven Indexer files

repository.maven.publish-dotindex

Используется для публикации файлов индексатора Maven для быстрого доступа к метаданным проекта

Опционально

Maven - Unpublish Maven Indexer files

repository.maven.unpublish-dotindex

Аналог задачи Maven - Publish Maven Indexer files, только с возможностью удаления файлов индексатора

Опционально

PyPI - Delete index Asset MD5 Metadata

repository.pypi.rebuild-metadata

Необходима для удаления метаданных MD5 файлов в индексе PyPi. Обратите внимание, что удаляется только индекс, а не контрольная сумма

Нет

PyPI - Generate Missing SHA256 Checksums

repository.pypi.generate-missing-sha256-checksums

Необходима для генерации отсутствующих контрольных сумм SHA-256 для файлов в индексе PyPI

Нет

Repair - Rebuild Maven repository metadata (maven-metadata.xml)

repository.maven.rebuild-metadata

Необходима для пересоздания файла maven-metadata.xml с корректной информацией, а также (опционально) для проверки и исправления неверных контрольных сумм (.md5/.sha1) для всех файлов в указанном репозитории

Нет

Repair - Rebuild repository browse

create.browse.nodes

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

Нет

Repair - Rebuild repository search

repository.rebuild-index

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

Нет

Repair - Reconcile component database from blob store

blobstore.rebuildComponentDB

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

Нет

Repair - Reconcile npm /-/v1/searchmetadata

repository.npm.reindex

Сравнивает метаданные поиска с данными в npm hosted репозитории и выявляет несоответствия. Задача может включать в себя следующие действия: удаление устаревших записей, исправление неправильных ссылок, обновление метаданных

Нет

Repository - Delete unused components

repository.purge-unused

Используется для удаления компонентов в прокси репозиториях. Любой компонент, который не использовался в течение заданного количества дней, будет «мягко удален»

Нет

Repository - Import external files

repository.import

Предназначена для импорта внешних файлов в экземпляр Artifactory. Внешние файлы должны быть организованны в корректной структуре каталогов для требуемого формата репозитория. Подробная информация в разделе задача Repository Export

Нет

Repository - Export assets

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.jar

  • artifact-1.3-20210226.172432-2.jar

  • artifact-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/ внутри исходного каталога. Данный каталог содержит метаданные, которые будут использоваться для будущего импорта, если задача выполняется более одного раза.