#artifactory
#artifactory
Вопрос:
Мы хотим запретить загрузку артефактов без информации о сборке с помощью пользовательского плагина в нашей предварительной установке Artifactory. Мы изо всех сил пытаемся найти связь между запросом и соответствующей информацией о сборке.
import org.artifactory.request.Request
import org.artifactory.repo.RepoPath
download {
beforeDownloadRequest { Request request, RepoPath repoPath ->
if (isRelease(repoPath.repoKey)) {
log.warn "Is a release artifact"
// How to verify build info here??
}
}
}
def isRelease(String repoKey) {
return repoKey in ["libs-release-local"]
}
Ответ №1:
Используя язык запросов Artifactory, вы можете найти сборки на основе артефакта, и если результат пустой, то такой сборки нет:https://www.jfrog.com/confluence/display/JFROG/Artifactory Query Language
Например: builds.find({«module.artifact.item.name «: «artifactory.war»})
Также артефакты, связанные со сборкой, будут иметь свойство «build.number» и «build.name «, так что это один из способов подойти к этому
Правильным решением было бы использовать JFrog Xray. Затем вы можете настроить сканирование для своих сборок, чтобы сканировались все артефакты, входящие в сборку (плюс вы также получаете проверки безопасности и соответствия лицензии), а затем заблокировать загрузку не проверенных артефактов
Наконец, когда вы создаете сборку, вы также можете продвинуть ее, например, с «промежуточной» на «выпуск» и в этой операции скопировать или переместить артефакты в репозиторий, предназначенный только для сборки и выпуска.
Свойства «build.name » и «build.number», вероятно, являются лучшим способом для того, что вы пытаетесь сделать.