Начал изучать jenkins и хочу разбить код на подключаемые библиотеки, @Library(‘name@master)’_ так работает и он качает из ветки мастер, а я хочу чтобы он определял название ветки из того репозитория с которого был скачан pipeline. Как это можно реализовать? У меня и pipeline качается из одгого репозитория и в настройках откуда качать библиотеку тоже указываю этот же репозиторий.
Для чего это надо? Если хранить общие методы в подключаемой либе, то нет смысла делать разные версии.
А вообще никак, только если в каждой ветке хранить свой дженкинс файл с указанием верной ветки.
Но это бессмысленно
А можно ли как то вынести методы из параметров, много описаний параметров и они достаточно повторяющиеся, можно ли их в отдельный файл как нить вынести. Properties([parameters([
[$class:‘choiceparameter’…]
Потом все это повторяется с изменениями и все закрывается и вот такие классы вынести в другой файл как
Повторяющиеся шаги можно обернуть в свои шаги, как раз с помощью общей либы лежащей где-то в гите.
То есть и те объявления параметров перед основным блоком pipeline?
Всё зависит от структуры папок в репозитории, на который ссылается @Library.
Это описано тут: Extending with 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")
}