Nexus Repository Manager - удаление старых бинарных ресурсов - PullRequest
0 голосов
/ 14 февраля 2019

Интересно, есть ли способ удалить много элементов из хранилища Nexus?У меня есть несколько репозиториев типа RAW с некоторыми выпусками веб-приложений (простые двоичные файлы tar.bz2):

enter image description here

В некоторых репозиториях многоих.Я хочу освободить место на диске.Я могу удалить отдельные файлы:

enter image description here

, но не вижу опции массового удаления.

Лучшим решением для меня будет автоматическая или ручная очистка старых файлов.Это возможно в бесплатной версии?Если да - как?

Я не вижу Cleanup Policies в главном меню:

enter image description here

Nexus Repository ManagerOSS 3.3.2-02

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Я нашел решение для своей проблемы.

У меня нет раздела Cleanup Policy в консоли администратора ( Я думаю, что эта опция доступна только для профессиональной или следующей версии ) -Спасибо @Sebastian за советы, вы направили меня к решению.

Основываясь на этом вопросе: Очистить старый релиз от Nexus 3

Я создал несколько ручных задачочистить мои двоичные репозитории:

enter image description here

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

import org.sonatype.nexus.repository.storage.Component
import org.sonatype.nexus.repository.storage.Query
import org.sonatype.nexus.repository.storage.StorageFacet

def removeFromDate = '2019-02-01'

log.info("delete components for repository: HereYourRepoName")
def compInfo = { Component c -> "${c.group()}:${c.name()}:${c.version()}[${c.lastUpdated()}]}" }
def repo = repository.repositoryManager.get("HereYourRepoName")
StorageFacet storageFacet = repo.facet(StorageFacet)

def tx = storageFacet.txSupplier().get()
tx.begin()
Iterable<Component> components = tx.findComponents(Query.builder().where('last_updated < ').param(removeFromDate).build(), [repo])
tx.commit()
tx.close()

log.info("about to delete " + components.flatten(compInfo))
for(Component c : components) {
    log.info("deleting " + compInfo(c))
    tx2 = storageFacet.txSupplier().get()
    tx2.begin()
    tx2.deleteComponent(c)
    tx2.commit()
    tx2.close()
}

log.info("finished deleting " + components.flatten(compInfo))

Просмотр журналов очень полезен для отладки сценариев:)

0 голосов
/ 15 февраля 2019

Это вполне возможно с Nexus3 OSS:

1.Создайте политику очистки
В разделе «Репозиторий -> Политики очистки» вы можете добавить политику, которая удаляет артефакты из репозитория, которые:

  • Публикуются до X дней
  • Последнее скачивание до X дней

2.Добавьте эту политику в свой репозиторий
Отредактируйте свой репозиторий.В разделе «Политика очистки» выберите свою новую политику.

Поскольку очищены только репозитории soft-delete артефакты (пометить их для удаления), вам необходимо:

3.Сократите хранилище больших двоичных объектов
Перейдите в «Система -> Задачи -> Создать задачу», выберите задачу «Администратор - Компактное хранилище больших двоичных объектов», выберите хранилище больших двоичных объектов в своем хранилище и настройте эту задачу для запуска после очистки.задача.

Все это более подробно описано в документации nexus .

Я протестировал шаги с Nexus 3.15.2-01 OSS edition.

...