Как проверить информацию о сборке из пользовательского плагина перед загрузкой артефакта?

#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», вероятно, являются лучшим способом для того, что вы пытаетесь сделать.