Nexus Repository Manager - удаление старых бинарных ресурсов

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

https://stack ru.com/images/d260299ee5a5f20708c310d04d2d011ad79e0238.png

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

https://stack ru.com/images/203c164391c98f3004f85de4b2e82bc51f3d3f59.png

но я не вижу вариант массового удаления.

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

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

https://stack ru.com/images/4432469a92e1d5761222f82a72b536451d6333e9.png

Nexus Repository ManagerOSS 3.3.2-02

2 ответа

Решение

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

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

Исходя из этого вопроса: очистить старый релиз от Nexus 3

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

Моя задача по очистке очень проста, но любой, кому нужно что-то более сложное, может написать собственный скрипт 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))

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

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

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

  • Опубликованы до X дней
  • Последнее скачивание за X дней

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

Так как очищенные репозитории только мягко удаляют артефакты (отметьте их для удаления), вам необходимо:

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

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

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

Другие вопросы по тегам