WedX - журнал о программировании и компьютерных науках

Разработка плагина Jenkins — как проверить, выполняется ли плагин на Jenkins Master

Я реализовал собственный подключаемый модуль Jenkins, совместимый с Pipeline, который расширяет класс SynchronousNonBlockingStepExecution. Я хотел бы реализовать особую логику выполнения Jenkins Master vs Jenkins Slave. Как я могу проверить из кода плагина, выполняется ли шаг на Мастере?


Ответы:


1

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

  1. Найдите переменную среды, специфичную для вашего подчиненного устройства. Я использую NODE_NAME env var для этой цели. Вы можете узнать все доступные переменные среды в вашем экземпляре Jenkins через https://localhost:8080/env-vars.html (замените имя хоста, чтобы оно соответствовало вашему экземпляру). Там вы найдете NODE_NAME:

ИМЯ_УЗЛА

Имя агента, если сборка выполняется на агенте, или «мастер», если выполняется на мастере.

  1. Зарегистрируйте/распечатайте переменную среды. Ниже приведен фрагмент кода, показывающий, как его можно распечатать. Там я показываю пример, используя метод setUp hudson BuildWrapper для справки.

    @Override
    public Environment setUp(final AbstractBuild build, final Launcher launcher,
                    final BuildListener listener) throws IOException, InterruptedException {
    
       String node = System.getenv("NODE_NAME");
       String msg = "I'm executing on node: " + node;
       listener.getLogger().println(msg); //prints to build log
       logger.info(msg);           // slf4j logger - prints to catalina log/jenkins log
    }
    

Кроме того, вы также можете записать значение в файл и прочитать значение оттуда.

30.12.2018
  • Несмотря на то, что в руководстве сказано по URL-адресу, на который вы мне указали, System.getenv("NODE_NAME") возвращает null, а не master или имя агента. 30.12.2018
  • Это немного странно. В любом случае, вы можете вернуться к альтернативному методу. Если ваш главный и подчиненные устройства находятся на разных виртуальных машинах, вы можете увидеть, в какую файловую систему виртуальной машины они записываются. 30.12.2018
  • Это, к сожалению, не кажется надежным способом определить, происходит ли выполнение на мастере или нет. 30.12.2018
  • Да, конечно. У меня сложилось впечатление, что вам нужно знать это для целей разработки/отладки. Нам определенно нужен лучший способ для производственного кода. Было бы интересно узнать, к какому варианту использования высокого уровня вы хотите обратиться, чтобы углубиться в это. 31.12.2018
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]