Comments 15
Вещь интересная, но на текущий момент не так необходима. Проще запускать сборки по событию в Гите и не озадачивать пользователя выбором вручную.
0
Я тоже так первое время думал, пока не столкнулся с развертыванием платформы, в которой более 100 микросервисов и огромное количество различных настроек.
Для CI процесса я полностью согласен, что каждая команда должна отвечать за сборку своего дистрибутива и проще делать, как вы говорите.
Для CI процесса я полностью согласен, что каждая команда должна отвечать за сборку своего дистрибутива и проще делать, как вы говорите.
0
Мы примерно так делаем, но на этапе деплоя. Разные релизные циклы по странам приводят к необходимости выбора из какой сборки выкладывать артифакты и конфигурацию.
0
Век живи, век учись. Уже сколько всего под Jenkins делал, а такой тип параметров ни разу не пробовал. Спасибо, пригодится.
0
Это точно!
А вообще, есть еще плагин, который позволяет не просто html отрисовывать, как показано в статье, а прям писать UI с помощью React.
Но, к сожалению, я пока им не пользовался, поэтому ничего не могу сказать.
Ссылка на плагин.
А вообще, есть еще плагин, который позволяет не просто html отрисовывать, как показано в статье, а прям писать UI с помощью React.
Но, к сожалению, я пока им не пользовался, поэтому ничего не могу сказать.
Ссылка на плагин.
0
Почему выбрали именно «Active Choices Reactive Reference Parameter»?
Можно не возиться с форматированием HTML, а просто выбрать «Active Choices Reactive Parameter» и в нём «Single Select». Тогда достаточно вернуть из скрипта лист вариантов.
Можно не возиться с форматированием HTML, а просто выбрать «Active Choices Reactive Parameter» и в нём «Single Select». Тогда достаточно вернуть из скрипта лист вариантов.
0
У нас используется более сложный интерфейс (таблицы, в которых чек боксы и прочее), поэтому без HTML никак.
Если говорить про данный пример, то я полностью с вами согласен, но хотелось раскрыть побольше возможностей, поэтому решил и тут такой тип параметров показать.
Если говорить про данный пример, то я полностью с вами согласен, но хотелось раскрыть побольше возможностей, поэтому решил и тут такой тип параметров показать.
0
Очень годная подсказка, некоторое время назад искал как раз что-то похожее, но кроме костылей ничего не нашел — видимо не то искал :(
Спасибо за наводку на плагин.
Спасибо за наводку на плагин.
0
Проблема того что после нажатия Build with Parameters страница блокируется до того момента как скрипт получит все данные до сих пор осталась?
Ну и в 2020 без пайплайна набивать джобы руками уже не должно быть актуально.
Ну и в 2020 без пайплайна набивать джобы руками уже не должно быть актуально.
0
Под блокируется вы имеется в виду экран ожидания?
У нас это происходит за считанные секунды, поэтому дискомфорта от этого не испытываем.
Поделитесь, пожалуйста, кейсом, когда это действительно очень долго, очень интересно :)
Ну а по поводу pipeline — я считаю у каждого типа задач есть свое применение, и не стоит, например, создавать pipeline, если вам нужно выполнить пару команд из bash.
У нас это происходит за считанные секунды, поэтому дискомфорта от этого не испытываем.
Поделитесь, пожалуйста, кейсом, когда это действительно очень долго, очень интересно :)
Ну а по поводу pipeline — я считаю у каждого типа задач есть свое применение, и не стоит, например, создавать pipeline, если вам нужно выполнить пару команд из bash.
0
Пробовал этот плагин несколько лет назад, может что-то поменялось. Смысл в том что если скрипт выполняется долго (затупила сеть, не отвечает внешний сервис и т.п.) то страница просто не отрисовывается пока не завершится скрипт. Т.е. пользователю кажется что тормозит сам дженкинс. Я думаю, лучшим поведением было отобразить всю стриницу без полей ввода, а на месте этих полей какой-то прогресс бар или крутилку. После завершения работы скрипта уже дорисовать инпуты.
0
Вдохновившись данной статьёй, начал активно использовать эти «active» параметры в трёх случаях:
1. Получаем ветки из любого репозитория, который указан в Choice Parameter «repoName» (Active Choices Reactive Parameter “projectBranchName”):
2. Получаем все версии необходимого артефакта из необходимых репозиториев (nexus2) в виде Active Choice Parameter «artifactVersion»:
3. получаем все теги необходимого образа из docker registry (nexus 3), приведу пример, когда не требуется авторизация:
1. Получаем ветки из любого репозитория, который указан в Choice Parameter «repoName» (Active Choices Reactive Parameter “projectBranchName”):
AUTH = "loginAndPassInBase64"
GIT_URL = "https://bitbucket.ru"
PROJECT = "yourProjectName"
def getBranchesFromRepoName(repoName) {
def branches = []
def endpoint = GIT_URL + "/rest/api/1.0/projects/${PROJECT}/repos/${repoName}/branches"
def conn = new URL(endpoint).openConnection()
conn.setRequestProperty("Authorization", "Basic ${AUTH}")
def response = new groovy.json.JsonSlurper().parseText(conn.content.text)
response.values.each {
branches.add(it.displayId)
}
return branches
}
return getBranchesFromRepoName(repoName)
2. Получаем все версии необходимого артефакта из необходимых репозиториев (nexus2) в виде Active Choice Parameter «artifactVersion»:
AUTH = "loginAndPassInBase64"
NEXUS_URL = "http://nexus.ru:8080"
ARTIFACT_GROUP = "your.group"
ARTIFACT_NAME = "your.artifact.name"
RELEASE_REPO = "Artifact_release"
SNAPSHOT_REPO = "Snapshot_release"
def getArtifactVersions() {
def artifactVersions = []
def endpoint = NEXUS_URL + "/nexus/service/local/data_index?g=${ARTIFACT_GROUP}&a=${ARTIFACT_NAME}"
def conn = new URL(endpoint).openConnection()
conn.setRequestProperty("Authorization", "Basic ${AUTH}")
def response = new XmlSlurper().parseText(conn.content.text)
response.data.artifact.findAll {it.repoId == "${RELEASE_REPO}" || it.repoId == "${SNAPSHOT_REPO}"}.each {
artifactVersions.add(it.version.text())
}
return artifactVersions
}
return getArtifactVersions()
3. получаем все теги необходимого образа из docker registry (nexus 3), приведу пример, когда не требуется авторизация:
REGISTRY_URL = "https://registrynexus3.ru"
PATH_TO_IMAGE = "your/path"
IMAGE_NAME = "yourImageName"
def getImageVersions() {
def imageVersions = []
def endpoint = REGISTRY_URL + "/v2/${PATH_TO_IMAGE}/${IMAGE_NAME}/tags/list"
def conn = new URL(endpoint).openConnection()
def response = new groovy.json.JsonSlurper().parseText(conn.content.text)
response.tags.each {
imageVersions.add(it)
}
return imageVersions
}
return getImageVersions()
0
Sign up to leave a comment.
Создание динамических параметров в Jenkins job, или как сделать вашу задачу user-friendly