Инструменты пользователя

Инструменты сайта


service:nexus

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
service:nexus [12.04.2025 06:57] – [Ansible] viacheslavservice:nexus [17.06.2025 20:24] (текущий) – [Удаление] viacheslav
Строка 419: Строка 419:
 На клиентах прописать в ''/etc/apt/sources.list'' На клиентах прописать в ''/etc/apt/sources.list''
 <code bash> <code bash>
-deb http://k3:8081/repository/apt-central/ jammy main+deb http://k3:8081/repository/apt-ubuntu-jammy/ jammy main
 </code> </code>
  
Строка 527: Строка 527:
 ubuntu2204-sec  apt    proxy  http://k3:8081/repository/ubuntu2204-sec  ubuntu2204-sec  apt    proxy  http://k3:8081/repository/ubuntu2204-sec 
 </code> </code>
 +
 +==== Список всех версий артефакта ====
 +Если артефактов много, то нужно учитывать pagination, т. к. все за один запрос не выведутся.
 +
 +Powershell
 +<code powershell>
 +$cred = 'admin:admin'
 +$artifact = 'lunar-flashback-mixins'
 +$ext = 'jar'
 +$report = @()
 +$token = 0
 +$query = "http://k3.workgroup:8081/service/rest/v1/search/assets?maven.artifactId=${artifact}&maven.classifier&maven.extension=${ext}"
 +do {
 +    if ($token -eq 0) {$url = $query}
 +    else {$url = $query + "&continuationToken=${token}"}
 +    $search = curl.exe -X GET -sLu $cred $url |ConvertFrom-Json
 +    $report += $search.items
 +    $token = $search.continuationToken
 +} while ($token)
 +# Вывести список: версия, время загрузки, ссылка
 +$report |select @{n='version';e={$_.maven2.version}},@{n='uploaded';e={$_.lastModified -as [datetime]}},downloadurl |sort uploaded
 +</code>
 +
 +Bash
 +<code bash>
 +#!/bin/bash
 +
 +cred='admin:admin'
 +artifact='lunar-flashback-mixins'
 +ext='jar'
 +token=1
 +query="http://k3.workgroup:8081/service/rest/v1/search/assets?maven.artifactId=${artifact}&maven.classifier&maven.extension=${ext}"
 +# Если токен не обрезать, то будет ошибка "Value too great for base", т. к. число слишком большое
 +while [[ ${token:0:5} -ne "null" ]]; do
 +  case ${token:0:5} in
 +    1) url=$query ;;
 +    *) url=$(echo -n "${query}&continuationToken=${token}") ;;
 +  esac
 +  search=$(curl -X GET -sLu $cred $url)
 +  report+="$(jq -r .items[] <<< $search)"
 +  token=$(jq -r .continuationToken <<< $search)
 +done
 +
 +echo "$report"
 +
 +# Вывести список: версия, время загрузки, ссылка
 +jq -r '. | "\(.maven2.version) \(.lastModified) \(.downloadUrl)"' <<< $report
 +</code>
 +https://stackoverflow.com/questions/28164849/using-jq-to-parse-and-display-multiple-fields-in-a-json-serially
 ===== Удаление ===== ===== Удаление =====
 <code powershell> <code powershell>
Строка 533: Строка 582:
 (curl.exe -ksu $cred "$apiUrl/search/assets?repository=maven-public&version=1.0.?" |ConvertFrom-Json).items |% { (curl.exe -ksu $cred "$apiUrl/search/assets?repository=maven-public&version=1.0.?" |ConvertFrom-Json).items |% {
     curl.exe -ksu $cred -X DELETE "$apiUrl/assets/$($_.id)"     curl.exe -ksu $cred -X DELETE "$apiUrl/assets/$($_.id)"
 +}
 +</code>
 +
 +Удаление старых артефактов (''$report'' из [[nexus#список_всех_версий_артефакта|списка всех версий артефакта]])
 +<code powershell>
 +$selection = $report |select @{n='version';e={$_.maven2.version}},downloadurl |sort uploaded
 +# Здесь из версий 0.0.123 выборка по первой цифре версии патча.
 +# Если последняя версия 0.0.888, будут удалены все версии <= 0.0.699.
 +($selection |group {$_.version -replace '.*\.(\d).*','$1'} |select -SkipLast 2).group |% {
 +    curl.exe -X DELETE -Lu $cred $_.downloadurl
 +    if ($?) {"$($_.version) удалена"}
 +    else {write-host -fore red "Ошибка при удалении $($_.version)"}
 } }
 </code> </code>
service/nexus.1744441026.txt.gz · Последнее изменение: viacheslav

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki