Как перечислить проекты / задания Jenkins в системе Groovy только на главном узле?

Как перечислить имена проектов / заданий в системе Groovy только на главном узле? Чтобы быть более конкретным:

Мне нужен только список работ, выполняемых на мастере! Я не хочу выводить какие-либо задания, которые выполняются на подчиненных узлах!


person sero    schedule 24.11.2016    source источник
comment
Я не понимаю вопроса, вы хотите перечислить задания, которые будут выполняться на главном сервере или как? Поскольку все задания будут на главном, но вы решаете, где они должны выполняться, с помощью Restrict, где этот проект может быть запущен.   -  person MaTePe    schedule 24.11.2016
comment
Привет, Матепе! Извините за неконкретность. Как я уже сказал ... мне нужен только список заданий, которые выполняются на мастере! Я не хочу выводить какие-либо задания, которые выполняются на подчиненных узлах!   -  person sero    schedule 24.11.2016
comment
Возможно, ваш вопрос: как мне перечислить все сборки, которые работают на главном сервере? Или как мне составить список всех заданий, которые МОГУТ запускаться на главном сервере? или Как мне перечислить все сборки, которые ЗАПУСКАЮТСЯ на главном сервере. Нашел ваш вопрос, потому что ищу ответ на последний вопрос.   -  person Steven the Easily Amused    schedule 08.07.2017


Ответы (1)


Как перечислить все задания, которые выполнялись на главном сервере, а не те, которые будут выполняться на главном сервере ... Этот сценарий проверяет только те задания, которые действительно были запущены, и не были удалены / очищены.

http://javadoc.jenkins-ci.org/hudson/model/AbstractBuild.html#getBuiltOnStr()

import hudson.model.*

jenkins = Hudson.instance

items = jenkins.items

for (item in items){
  def job = item.getLastBuild()
  if(job != null){
        if(job.getBuiltOnStr() == null || job.getBuiltOnStr() == "")
          println "Built on master: " + job.toString()
  }
} 
person MaTePe    schedule 24.11.2016
comment
counter ++ не входит в скрипт :) или? :) - person sero; 24.11.2016
comment
Благодарность! Я настроил это так, чтобы отображалось только имя заданий, которые выполняются на главном сервере, заменив job.toString () на item.name - person sero; 24.11.2016
comment
Извините, нет, удаляю, я использую счетчик, чтобы определить, сколько я хочу отредактировать / проверить перед возвратом. Были работы, которые не заканчиваются, потому что они отнимают слишком много времени. - person MaTePe; 24.11.2016
comment
Привет, к сожалению, это не сработает, если у вас есть работа с конвейером. Сбой с ошибкой: ОШИБКА: сбой на этапе сборки с исключением groovy.lang.MissingMethodException: Нет сигнатуры метода: org.jenkinsci.plugins.workflow.job.WorkflowRun.getBuiltOnStr () применимо для типов аргументов: () значения: [ ] в org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap (ScriptBytecodeAdapter.java:58) Если я удаляю сценарий задания конвейера, он запускается успешно. Любые идеи? Бргдс, С. - person sero; 30.11.2016
comment
Хм, методы getBuiltOnStr существуют только для: javadoc.jenkins-ci.org/hudson /model/AbstractBuild.html Значит, в других случаях вам, возможно, придется предположить, что это выполняется на главном сервере? Не уверен. Я бы проверил, является ли задание AbstractBuild (if (obj instanceof C)), а если нет, то пропустите и предположите, что оно выполняется на мастере. - person MaTePe; 30.11.2016
comment
Задания Worflow (конвейера) могут выполняться везде, где это указано в синтаксисе конвейера узла, хотя по умолчанию все они изначально выполняются на главном сервере. Единственный способ узнать, где МОЖНО ЗАПУСТИТЬ задание, - это проверить файл конвейера. Однако вы можете перечислить все сборки, которые ЗАПУСКАЮТСЯ на главном сервере, но единственный способ, который я нашел для этого, стоит дорого. - person Steven the Easily Amused; 08.07.2017
comment
Сценарий также не работает для меня: groovy.lang.MissingMethodException: No signature of method: org.jenkinsci.plugins.workflow.job.WorkflowRun.getBuiltOnStr() is applicable for argument types: () values: [] есть ли другой сценарий, который мы можем использовать? - person arielma; 10.06.2020