Я пытаюсь сделать poc конвейера jenkins в виде кода. Я использую плагин папки организации Github для сканирования организаций Github и создания заданий для каждой ветки. Есть ли способ явно определить имена для заданий конвейера, получаемых из Jenkinsfile? Я также хочу добавить некоторые описания для рабочих мест.
Установите имя и описание конвейера из Jenkinsfile.
Ответы (3)
Вам нужно использовать currentBuild
, как показано ниже. Часть node
важна
node {
currentBuild.displayName = "$yournamevariable-$another"
currentBuild.description = "$yourdescriptionvariable-$another"
}
Редактировать: Над одним переименовывается сборка, где в качестве исходного вопроса речь идет о переименовании заданий. Это сделает следующий сценарий в конвейере (для этого требуются соответствующие разрешения)
item = Jenkins.instance.getItemByFullName("originalJobName")
item.setDescription("This description was changed by script")
item.save()
item.renameTo("newJobName")
WorkflowScript: 8: Expected to find ‘someKey "someValue"’ @ line 8, column 9. script { ^ WorkflowScript: 11: No argument for map key "save" @ line 11, column 8. item.save() ^ WorkflowScript: 8: Invalid config option "script" for agent type "node". Valid config options are [label, customWorkspace] @ line 8, column 2. script { ^
, когда пытаюсь это сделать.
- person Magick; 19.09.2018
Я опаздываю на вечеринку по этому поводу, но этот вопрос заставил меня зайти в чат #jenkins, где я провел сегодня большую часть дня. Я хотел бы поблагодарить @tang^ из этого чата за помощь в изящном решении моей ситуации.
Чтобы задать описание ЗАДАНИЯ и отображаемое имя ЗАДАНИЯ для дочернего элемента в конвейере DECLARATIVE с несколькими ветвями, используйте следующий блок шагов на этапе:
steps {
script {
if(currentBuild.rawBuild.project.displayName != 'jobName') {
currentBuild.rawBuild.project.description = 'NEW JOB DESCRIPTION'
currentBuild.rawBuild.project.setDisplayName('NEW JOB DISPLAY NAME')
}
else {
echo 'Name change not required'
}
}
}
Это потребует, чтобы вы утвердили вызовы отдельных скриптов с помощью метода одобрения песочницы Jenkins, но это было намного проще, чем что-либо еще, что я нашел в Интернете о переименовании фактических дочерних элементов родительского конвейера. Последнее, что нужно отметить, это то, что это должно работать в Jenkinsfile, где вы можете использовать переменные среды для управления устанавливаемыми элементами задания.
Я попытался использовать фрагмент кода из принятого ответа, чтобы описать мой конвейер Jenkins в Jenkinsfile. Мне пришлось обернуть фрагмент кода в функцию с аннотацией @NonCPS
и использовать def для переменной элемента. Я поместил фрагмент кода в корень Jenkinsfile, а не в раздел node.
@NonCPS
def setDescription() {
def item = Jenkins.instance.getItemByFullName(env.JOB_NAME)
item.setDescription("Some description.")
item.save()
}
setDescription()