Итак, я ударил проблемы с запуском из дискового пространства, как наши релизы/сборок были укладки, так что я было немного покопаться в создании сценария для удаления старых сборок, и получил на это:
import org.sonatype.nexus.repository.storage.StorageFacet;
import org.sonatype.nexus.repository.storage.Query;
def repositoryName = 'Integration';
def maxArtifactCount = 20;
// Get a repository
def repo = repository.repositoryManager.get(repositoryName);
// Get a database transaction
def tx = repo.facet(StorageFacet).txSupplier().get();
try {
// Begin the transaction
tx.begin();
def previousComponent = null;
def uniqueComponents = [];
tx.findComponents(Query.builder().suffix(' ORDER BY group, name').build(), [repo]).each{component ->
if (previousComponent == null || (!component.group().equals(previousComponent.group()) || !component.name().equals(previousComponent.name()))) {
uniqueComponents.add(component);
}
previousComponent = component;
}
uniqueComponents.each {uniqueComponent ->
def componentVersions = tx.findComponents(Query.builder().where('group = ').param(uniqueComponent.group()).and('name = ').param(uniqueComponent.name()).suffix(' ORDER BY last_updated DESC').build(), [repo]);
log.info(uniqueComponent.group() + ", " + uniqueComponent.name() + " size " + componentVersions.size());
if (componentVersions.size() > maxArtifactCount) {
componentVersions.eachWithIndex { component, index ->
if (index > maxArtifactCount) {
log.info("Deleting Component ${component.group()} ${component.name()} ${component.version()}")
tx.deleteComponent(component);
}
}
}
}
} finally {
// End the transaction
tx.commit();
}
Это работает через репозиторий, глядя на все го e компонентов. Затем он работает через все версии (упорядоченные по последнему обновленному - я не мог определить порядок по номеру версии, но я думаю, что это должно быть хорошо), а затем удаляет любой из них по максимальному номеру maxArtifactCount.
Надеюсь, это может быть полезно - и если вы видите какие-либо вопросы, дайте мне знать.
Звучит как https://issues.sonatype.org/browse/NEXUS-10821, если вы хотите следовать. – joedragons