Параметр выбора Jenkins и Nexus Repository Manager - PullRequest
0 голосов
/ 13 июля 2020

Я знаю, что в Jenkins есть плагин Nexus Platform https://plugins.jenkins.io/nexus-jenkins-plugin/, но я не уверен, возможно ли следующее, какие-либо советы или предложения будут оценены.

В Jenkins у вас есть Git параметр выбора, который позволяет вам создавать определенные c теги / ветки в вашей работе. Есть ли что-то подобное для Sonatype Nexus? У нас есть внутренняя связка, куда мы загружаем и помечаем docker изображений.

В настоящее время у меня есть работа Jenkins, и мне нужно вручную ввести версию изображения. Есть ли в Jenkins способ получить параметр выбора, где я могу запросить все теги в нексусе.

Так, например, я могу запустить команду -> docker pull internal / application / service: 0.0.1 Поэтому разработчики загрузили бы новую версию, например, 0.0.2

. Из Jenkins я хотел бы вывести список 0.0.1 или 0.0.2 для создания группой поддержки. Не уверены, возможно ли это в настоящее время?

Обновление 2020/07/15

Я прочитал об активном плагине параметров выбора. Это позволяет вам выполнить сценарий groovy.

Итак, я создал ниже </p> <pre><code>import groovy.json.JsonSlurper // GET try { def get = new URL("http://internalserver:8081/service/rest/v1/search?repository=docker-internal&name=application/service/moo").openConnection(); def getRC = get.getResponseCode(); //println(getRC); if (getRC.equals(200)) { //println(get.getInputStream().getText()); JsonSlurper slurper = new JsonSlurper() Map parsedJson = slurper.parseText(get.getInputStream().getText()) tags = parsedJson.items.version //println(tags) def sorted_tags = [] sorted_tags.push(tags) println(sorted_tags) } }catch(Exception e){ println(e) }

Этот код распечатывает теги, если я запустил его из своей среды IDE, но если Я добавляю его в плагин активного выбора, мое раскрывающееся меню пусто?

Ответы [ 2 ]

0 голосов
/ 16 июля 2020

Хорошо, я заработал. Поле со списком Jenkins требует возвращаемого типа. Так что, если кто-нибудь когда-нибудь захочет сделать что-то подобное, у меня сработало следующее:

<code>
import groovy.json.JsonSlurper
try {
    def get = new URL("http://yourinternalnexusurl:8018/applicacation/v1...etc").openConnection();
    def getRC = get.getResponseCode();
    if (getRC.equals(200)) {
        def nexus_response = [:]
        nexus_response = new JsonSlurper().parseText(get.getInputStream().getText())
        def image_tag_list = []
        for (tag in nexus_response.items.version){
            image_tag_list.add(tag)
        }
       return image_tag_list.sort()
    }
}catch(Exception e){
    println(e)
}
</code>
0 голосов
/ 13 июля 2020

The Maven Artifact ChoiceListProvider (Nexus) может удовлетворить ваши требования.

С этим расширением можно использовать Service API из репозиториев Maven, таких как Nexus, Maven-Central или Artifactory для поиска артефактов с использованием groupId, artifactId и упаковки.

Этот плагин позволит пользователю выбрать версию из доступных артефактов в репозитории и опубликует sh URL как переменная окружения. Плагин вернет полный URL-адрес выбранного артефакта, чтобы он был доступен во время сборки, т.е. вы можете получить артефакт с помощью "wget". Пример

Затем вам, возможно, придется проанализировать ( groovy?) Результирующую переменную env для передачи в качестве параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...