Как изменить плагин артефактаCleanup, чтобы в репозитории сохранялись только последние 10 артефактов? ⇐ JAVA
Как изменить плагин артефактаCleanup, чтобы в репозитории сохранялись только последние 10 артефактов?
Я нашел плагин артефактаCleanup (https://github.com/jfrog/artifactory-us ... nup.groovy)
Мне удалось реализовать это на своем сервере Jenkins, но теперь мне нужно его немного обновить. Вместо того, чтобы очищать все, что не было загружено за последние X месяцев, я хочу сохранить в репозитории только последние 10 артефактов (а также в каждой подпапке)
Например:
Main_Repo -folder1 (содержит 15 артефактов) -folder2 (содержит 20 артефактов) -art1 -art2 -... -art25 Мне нужно сохранить следующее:
Main_Repo -folder1 (содержит 10 артефактов) -folder2 (содержит 10 артефактов) -art1 -art2 -... -art10 Возможно ли это?
Основная функция такова:
private def артефактCleanup(String timeUnit, int timeInterval, String[] repos, log,pacTimeMS, DryRun = false,disablePropertiesSupport = false) { log.info «Начинается очистка артефактов для репозиториев $repos до $timeInterval ${timeUnit} с назад с интервалом синхронизации $paceTimeMS мс, Dryrun: $dryRun, DisablePropertiesSupport: $disablePropertiesSupport» cancelOnNullRepos(repos,'параметр repos должен быть указан перед началом очистки.') // Создать карту(репозиторий, пути) пропущенных путей (или других свойств, которые будут поддерживаться в будущем...) защита пропустить = [:] if ( ! DisablePropertiesSupport && репозитории){ пропустить = getSkippedPaths (репозитории) } Защиту CalendarUntil = Calendar.getInstance() CalendarUntil.add(mapTimeUnitToCalendar(timeUnit), -timeInterval) def CalendarUntilFormatted = new SimpleDateFormat("гггг/ММ/дд ЧЧ:мм").format(calendarUntil.getTime()); log.info «Удаление всех артефактов, не загруженных с момента $calendarUntilFormatted» Global.stopCleaning = ложь интервал cntFoundArtifacts = 0 интервал cntNoDeletePermissions = 0 длинные байтыНайдено = 0 длинные байтыFoundWithNoDeletePermission = 0 def артефактыCleanedUp = searches.artifactsNotDownloadedSince(calendarUntil, CalendarUntil, репозитории) артефактыCleanedUp.find { пытаться { в то время как ( Global.pauseCleaning ) { log.info "Приостановка по запросу" спать( 60000 ) } если ( Global.stopCleaning ) { log.info "Остановка по запросу, завершение цикла" вернуть истину } if ( ! DisablePropertiesSupport && Skip[ it.repoKey ] && StringUtils.startsWithAny(it.path,skip[it.repoKey ])){ если (log.isDebugEnabled()) { log.debug "Пропустить $it" } вернуть ложь } bytesFound += repositories.getItemInfo(it)?.getSize() cntFoundArtifacts++ если (!security.canDelete(it)) { bytesFoundWithNoDeletePermission += repositories.getItemInfo(it)?.getSize() cntNoDeletePermissions++ } если (dryRun) { log.info "Нашёл $it" log.info "\t==> currentUser: ${security.currentUser().getUsername()}" log.info "\t==> canDelete: ${security.canDelete(it)}" } еще { если (security.canDelete(it)) { log.info "Удаление $it" репозитории.удалить его log.info "Удален..." } еще { log.info "Невозможно удалить $it (у пользователя ${security.currentUser().getUsername()} нет прав на удаление), " } } } catch (ItemNotFoundRuntimeException ex) { log.info "Не удалось найти $it, пропуск" } def SleepTime = (Global.paceTimeMS > 0)? Global.paceTimeMS :pacTimeMS если (время сна > 0) { спать(время сна) } вернуть ложь } если (dryRun) { log.info "Пробный прогон - ничего не удалено. Обнаружены артефакты $cntFoundArtifacts, занимающие $bytesFound байт" если (cntNoDeletePermissions > 0) { log.info «Артефакты $cntNoDeletePermissions не могут быть удалены из-за отсутствия разрешений (байты $bytesFoundWithNoDeletePermission)» } } еще { log.info "Очистка завершена, удалены артефакты $cntFoundArtifacts, занимавшие $bytesFound байт" если (cntNoDeletePermissions > 0) { log.info «Не удалось удалить артефакты $cntNoDeletePermissions из-за отсутствия разрешений (байты $bytesFoundWithNoDeletePermission)» } } } Но я не уверен, где я могу найти, например, объект «поиск» или функцию, которую он вызывает в следующей строке:
def артефактыCleanedUp = searches.artifactsNotDownloadedSince(calendarUntil, CalendarUntil, repos) Надеюсь, вы сможете мне помочь. Спасибо, что уделили время
Я нашел плагин артефактаCleanup (https://github.com/jfrog/artifactory-us ... nup.groovy)
Мне удалось реализовать это на своем сервере Jenkins, но теперь мне нужно его немного обновить. Вместо того, чтобы очищать все, что не было загружено за последние X месяцев, я хочу сохранить в репозитории только последние 10 артефактов (а также в каждой подпапке)
Например:
Main_Repo -folder1 (содержит 15 артефактов) -folder2 (содержит 20 артефактов) -art1 -art2 -... -art25 Мне нужно сохранить следующее:
Main_Repo -folder1 (содержит 10 артефактов) -folder2 (содержит 10 артефактов) -art1 -art2 -... -art10 Возможно ли это?
Основная функция такова:
private def артефактCleanup(String timeUnit, int timeInterval, String[] repos, log,pacTimeMS, DryRun = false,disablePropertiesSupport = false) { log.info «Начинается очистка артефактов для репозиториев $repos до $timeInterval ${timeUnit} с назад с интервалом синхронизации $paceTimeMS мс, Dryrun: $dryRun, DisablePropertiesSupport: $disablePropertiesSupport» cancelOnNullRepos(repos,'параметр repos должен быть указан перед началом очистки.') // Создать карту(репозиторий, пути) пропущенных путей (или других свойств, которые будут поддерживаться в будущем...) защита пропустить = [:] if ( ! DisablePropertiesSupport && репозитории){ пропустить = getSkippedPaths (репозитории) } Защиту CalendarUntil = Calendar.getInstance() CalendarUntil.add(mapTimeUnitToCalendar(timeUnit), -timeInterval) def CalendarUntilFormatted = new SimpleDateFormat("гггг/ММ/дд ЧЧ:мм").format(calendarUntil.getTime()); log.info «Удаление всех артефактов, не загруженных с момента $calendarUntilFormatted» Global.stopCleaning = ложь интервал cntFoundArtifacts = 0 интервал cntNoDeletePermissions = 0 длинные байтыНайдено = 0 длинные байтыFoundWithNoDeletePermission = 0 def артефактыCleanedUp = searches.artifactsNotDownloadedSince(calendarUntil, CalendarUntil, репозитории) артефактыCleanedUp.find { пытаться { в то время как ( Global.pauseCleaning ) { log.info "Приостановка по запросу" спать( 60000 ) } если ( Global.stopCleaning ) { log.info "Остановка по запросу, завершение цикла" вернуть истину } if ( ! DisablePropertiesSupport && Skip[ it.repoKey ] && StringUtils.startsWithAny(it.path,skip[it.repoKey ])){ если (log.isDebugEnabled()) { log.debug "Пропустить $it" } вернуть ложь } bytesFound += repositories.getItemInfo(it)?.getSize() cntFoundArtifacts++ если (!security.canDelete(it)) { bytesFoundWithNoDeletePermission += repositories.getItemInfo(it)?.getSize() cntNoDeletePermissions++ } если (dryRun) { log.info "Нашёл $it" log.info "\t==> currentUser: ${security.currentUser().getUsername()}" log.info "\t==> canDelete: ${security.canDelete(it)}" } еще { если (security.canDelete(it)) { log.info "Удаление $it" репозитории.удалить его log.info "Удален..." } еще { log.info "Невозможно удалить $it (у пользователя ${security.currentUser().getUsername()} нет прав на удаление), " } } } catch (ItemNotFoundRuntimeException ex) { log.info "Не удалось найти $it, пропуск" } def SleepTime = (Global.paceTimeMS > 0)? Global.paceTimeMS :pacTimeMS если (время сна > 0) { спать(время сна) } вернуть ложь } если (dryRun) { log.info "Пробный прогон - ничего не удалено. Обнаружены артефакты $cntFoundArtifacts, занимающие $bytesFound байт" если (cntNoDeletePermissions > 0) { log.info «Артефакты $cntNoDeletePermissions не могут быть удалены из-за отсутствия разрешений (байты $bytesFoundWithNoDeletePermission)» } } еще { log.info "Очистка завершена, удалены артефакты $cntFoundArtifacts, занимавшие $bytesFound байт" если (cntNoDeletePermissions > 0) { log.info «Не удалось удалить артефакты $cntNoDeletePermissions из-за отсутствия разрешений (байты $bytesFoundWithNoDeletePermission)» } } } Но я не уверен, где я могу найти, например, объект «поиск» или функцию, которую он вызывает в следующей строке:
def артефактыCleanedUp = searches.artifactsNotDownloadedSince(calendarUntil, CalendarUntil, repos) Надеюсь, вы сможете мне помочь. Спасибо, что уделили время
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Опубликовать файл .aar с прикрепленной javadocs в репозитории артефактов.
Гость » » в форуме Android - 0 Ответы
- 45 Просмотры
-
Последнее сообщение Гость
-