Как подсчитать количество артефактов в диспетчере хранилища 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