t.me/atinfo_chat Telegram группа по автоматизации тестирования

Подключаемая библиотека в pipeline, чтобы он налету определял branch а не явно указывать

Теги: #<Tag:0x00007f748b0129d8> #<Tag:0x00007f748b0128e8> #<Tag:0x00007f748b012820> #<Tag:0x00007f748b012730> #<Tag:0x00007f748b012668>

Начал изучать jenkins и хочу разбить код на подключаемые библиотеки, @Library(‘name@master)’_ так работает и он качает из ветки мастер, а я хочу чтобы он определял название ветки из того репозитория с которого был скачан pipeline. Как это можно реализовать? У меня и pipeline качается из одгого репозитория и в настройках откуда качать библиотеку тоже указываю этот же репозиторий.

Для чего это надо? Если хранить общие методы в подключаемой либе, то нет смысла делать разные версии.
А вообще никак, только если в каждой ветке хранить свой дженкинс файл с указанием верной ветки.
Но это бессмысленно

А можно ли как то вынести методы из параметров, много описаний параметров и они достаточно повторяющиеся, можно ли их в отдельный файл как нить вынести. Properties([parameters([
[$class:‘choiceparameter’…]
Потом все это повторяется с изменениями и все закрывается и вот такие классы вынести в другой файл как

Повторяющиеся шаги можно обернуть в свои шаги, как раз с помощью общей либы лежащей где-то в гите.

То есть и те объявления параметров перед основным блоком pipeline?

Всё зависит от структуры папок в репозитории, на который ссылается @Library.
Это описано тут: https://jenkins.io/doc/book/pipeline/shared-libraries/

Чаще всего используется папка vars, ради глобальных переменных.

Например есть файл win.groovy, который лежит в репозитории в папке vars.

В нём есть такой метод:

def rollback(Map cfg) {
    if (!cfg.vDir) cfg.vDir = cfg.appPool
    echo "\nНачинается откат со следующими настройками:\nAPPPOOL=${cfg.appPool}\nFINALDIR=${cfg.finalDir}\nVDIR=${cfg.vDir}\n"
    withEnv(["APPPOOL=${cfg.appPool}", "FINALDIR=${cfg.finalDir}", "VDIR=${cfg.vDir}"])
            {
                bat script: '''
                    @echo off
                    chcp 65001
                    %SYSTEMROOT%\\System32\\inetsrv\\appcmd set vdir \"%VDIR%/\" -physicalPath:%FINALDIR% || exit /b 1
                    %SYSTEMROOT%\\System32\\inetsrv\\appcmd recycle apppool \"%APPPOOL%\" || exit /b 1
                '''
            }
}

В пайплайне его можно юзать так:
Если декларативный, не забываем обернуть в шаг script:

script {
  win.rollback(finalDir: "C:\\inetpub\\project\\${ROLLBACK_BUILD_NUMBER}", appPool: "ProjectAppPool", vDir: "procjet.api/api")
}