Как подсчитать количество артефактов в диспетчере хранилища nexus OSS 3.2.1 в терминале

После обновления с Nexus Repository Manager OSS 2.14.3 до 3.2.1 я не могу понять, как подсчитать количество артефактов в каждом репозитории, хранящихся в определенном хранилище больших двоичных объектов, как часть проверки обновления данных. Считать его вручную из интерфейса нецелесообразно, так как у нас в производстве более 10 тысяч артефактов.

Подсчет артефактов в 2.x (всего содержит 3 артефакта)

[root@977d4b9b2a70 local]# ll sonatype-work/nexus/storage/releases/sample/1/1/1-1*zip        
-rw-r--r-- 1 root root 152818 May  2 06:38 sonatype-work/nexus/storage/releases/sample/1/1/1-1-1.zip
-rw-r--r-- 1 root root 145119 May  2 06:38 sonatype-work/nexus/storage/releases/sample/1/1/1-1-2.zip
-rw-r--r-- 1 root root   1152 May  2 06:38 sonatype-work/nexus/storage/releases/sample/1/1/1-1.zip
[root@977d4b9b2a70 local]# ll sonatype-work/nexus/storage/releases/sample/1/1/1-1*zip | wc -l
3
[root@977d4b9b2a70 local]#

Подсчет артефактов в 3.x (после обновления того же содержимого репозитория из 2.x)

[root@977d4b9b2a70 local]# ll sonatype-work/nexus3/blobs/releases/content/ | wc -l
14
[root@977d4b9b2a70 local]# ll sonatype-work/nexus3/blobs/releases/content/        
total 52
drwxr-xr-x 2 root root 4096 May  2 06:42 tmp
drwxr-xr-x 3 root root 4096 May  2 06:42 vol-12
drwxr-xr-x 3 root root 4096 May  2 06:42 vol-13
drwxr-xr-x 4 root root 4096 May  2 06:42 vol-16
drwxr-xr-x 4 root root 4096 May  2 06:42 vol-22
drwxr-xr-x 3 root root 4096 May  2 06:42 vol-24
drwxr-xr-x 3 root root 4096 May  2 06:42 vol-31
drwxr-xr-x 4 root root 4096 May  2 06:42 vol-34
drwxr-xr-x 3 root root 4096 May  2 06:42 vol-36
drwxr-xr-x 3 root root 4096 May  2 06:42 vol-37
drwxr-xr-x 3 root root 4096 May  2 06:42 vol-41
drwxr-xr-x 4 root root 4096 May  2 06:42 vol-42
drwxr-xr-x 3 root root 4096 May  2 06:42 vol-43
[root@977d4b9b2a70 local]#

Почему последний показывает количество как 14. Я понимаю, что начиная с 3.x артефакты хранятся в виде BLOBS вместо файлов.

Есть ли другой способ выяснить количество артефактов, хранящихся в каждом хранилище BLOB-объектов в 3.x, используя терминал.

1 ответ

Я нашел Groovy скрипт, который подсчитывает количество активов и компонентов в хранилище, вы можете запустить этот скрипт с помощью Execute Script task в Nexus 3.x UI.

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

import groovy.json.JsonOutput

def result = [:]

def totalComponents = 0
def totalAssets = 0

repository.repositoryManager.browse().each { Repository repo ->
  def tx = repo.facet(StorageFacet).txSupplier().get()
  tx.begin()
  def components = 
  tx.countComponents(Query.builder().where('1').eq(1).build(), [repo])
  def assets = tx.countAssets(Query.builder().where('1').eq(1).build(), 
                             [repo])
  tx.commit()
  totalComponents += components
  totalAssets += assets
  result[repo.name] = [components: components, assets: assets]
}

result["_totals"] = [components : totalComponents, assets : totalAssets]

def json = JsonOutput.toJson(result)
log.info json
return json
Другие вопросы по тегам