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

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

введите здесь описание изображения

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

введите здесь описание изображения

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

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

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

введите здесь описание изображения

Nexus Repository ManagerOSS 3.3.2-02


person Krzysztof Raciniewski    schedule 14.02.2019    source источник
comment
Вы читали об политике очистки?   -  person Sebastian    schedule 14.02.2019
comment
Хороший совет. Я читал этот материал, к сожалению Admin - Cleanup Tags доступны только для профессиональных версий. Я использую версию с открытым исходным кодом.   -  person Krzysztof Raciniewski    schedule 14.02.2019
comment
Вам нужна задача Admin - Cleanup Tags?   -  person Sebastian    schedule 15.02.2019
comment
Мне нужно что-то для удаления старых неиспользуемых релизов из репозиториев типа raw - автоматически или вручную :)   -  person Krzysztof Raciniewski    schedule 15.02.2019
comment
Нет ли неиспользуемых тегов =/= неиспользуемых релизов?   -  person Sebastian    schedule 15.02.2019


Ответы (2)


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

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

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

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

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

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

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

Я проверил эти шаги с выпуском Nexus 3.15.2-01 OSS.

person Sebastian    schedule 15.02.2019
comment
Можете ли вы добавить несколько скриншотов? Я не вижу раздел cleanup policy: photos.app.goo.gl/jSsaDWbven6sEmxg8 - person Krzysztof Raciniewski; 15.02.2019
comment
Изображение. У вас есть права администратора? - person Sebastian; 15.02.2019
comment
Я могу удалять и изменять все репозитории, истории больших двоичных объектов и так далее... поэтому я думаю, что у меня есть права администратора — я не вижу Cleanup Policies в своем меню. - person Krzysztof Raciniewski; 15.02.2019
comment
Да, у меня есть права администратора: photos.app.goo.gl/t2t3aNuXEkkcp5uFA - person Krzysztof Raciniewski; 15.02.2019
comment
@KrzysztofRaciniewski Политики очистки были добавлены в NXRM 3.14.0 — какую версию вы используете? - person Dawid Sawa; 18.02.2019
comment
Nexus Repository ManagerOSS 3.3.2-02 - person Krzysztof Raciniewski; 18.02.2019
comment
Спасибо, @Sebastian, я пропустил. Добавьте эту политику в свою часть репозитория. - person Rukshan Dangalla; 20.01.2020

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

У меня нет раздела 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))

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

person Krzysztof Raciniewski    schedule 15.02.2019
comment
Нужно обновиться, версия 3.3.2 довольно старая. Политик очистки нет в этой версии. - person rseddon; 15.02.2019
comment
К сожалению, пока это невозможно, но спасибо за совет :) - person Krzysztof Raciniewski; 15.02.2019
comment
FTR, политики очистки доступны начиная с NXRM 3.14.0. - person Dawid Sawa; 18.02.2019