Создание библиотеки (или плагина) для Jenkins, позволяющей:
agent
.sonar
.edt
(если используется несколько версий EDT необходимо к метке добавить версию, например edt@2021.3.4:x86_64
) и агент с меткой oscript
, на котором глобально установлена библиотека stebi версии 1.9.1 или новее.v8version
файла конфигурации../build/ib
. При необходимости вы можете создать пользователей на фазе инициализации ИБ.Инструкция по подключению библиотеки: https://jenkins.io/doc/book/pipeline/shared-libraries/#using-libraries
Если в настройках подключения shared-library включен флаг "Load implicitly":
pipeline1C()
В обратном случае:
@Library('jenkins-lib') _
pipeline1C()
Да, вот и весь пайплайн. Конфигурирование через json.
По умолчанию применяется файл конфигурации из ресурсов библиотеки
Поверх него накладывается конфигурация из файла jobConfiguration.json
в корне проекта, если он присутствует.
Пример переопределения:
{
"$schema": "https://raw.githubusercontent.com/firstBitMarksistskaya/jenkins-lib/master/resources/schema.json",
"v8version": "8.3.14.1976",
"edtVersion": "2021.3.4:x86_64",
"secrets": {
"storagePath": "f7b21c02-711a-4883-81c5-d429454e3f8b",
"storage" : "c1fc5f33-67d4-493f-a2a4-97d3040e4b8c"
},
"stages": {
"sonarqube": true,
"edtValidate": true,
"syntaxCheck": true
}
}
В библиотеке применяется принцип "соглашения по конфигурации" (convention over configuration): конфигурационный файл содержит ряд настроек "по умолчанию". При соблюдении определенных правил структуры репозитория можно сократить количество переопределений конфигурационного файла до минимума. Ниже представлены имеющиеся соглашения и способы их переопределения.
v8version
).edtVersion
). src/cf
(srcDir
).sourceFormat
).defaultBranch
).secrets
) по умолчанию высчитываются из пути к git-репозиторию (без учета домена, с заменой /
на _
) с прибавлением ключа секрета. Например, для репозитория https://github.com/firstBitSemenovskaya/jenkins-lib секрет с адресом хранилища будет выглядеть как firstBitSemenovskaya_jenkins-lib_STORAGE_PATH
. Ключи секретов:STORAGE_PATH
- путь к хранилищу конфигурации (для secrets
-> storagePath
);STORAGE_USER
- параметры авторизации в хранилище вида "username with password" (для secrets
-> storage
).TELEGRAM_CHAT_ID
- идентификатор чата Telegram для рассылки уведомлений и результате сборки вида "secret text" (для secrets
-> telegramChatId
).TELEGRAM_BOT_TOKEN
задается глобально на весь сервер Jenkins, либо может быть переопределен (secrets
-> telegramBotToken
)stages
).packagedef
, то в шагах, работающих с информационной базой, будет выполнена попытка установки локальных зависимостей средствами opm
.oscript_modules/bin
существует файл vrunner
, то для выполнения команд работы с информационной базой будет использоваться он, а не глобально установленный vrunner
из PATH
.allure
ожидаются в каталоге build/out/allure
или его подкаталогах.timeout
. bdd
или syntaxCheck
).initInfobase
-> initMethod
).VERSION
(артефакт от работы утилиты gitsync
), то из хранилища будет загружена версия конфигурации с номером из файла VERSION
.bdd
или smoke
), то будет запущен шаг "Миграция ИБ".initInfobase
-> runMigration
).initInfobase
-> additionalInitializationSteps
), но в каталоге tools
присутствуют файлы с именами, удовлетворяющими шаблону vrunner.init*.json
, то автоматически выполняется запуск vrunner vanessa
с передачей найденных файлов в качестве значения настроек (параметр --settings
) в порядке лексикографической сортировки имен файлов.bdd
-> vrunnerSteps
, то автоматически выполняется запуск vrunner vanessa --settings tools/vrunner.json
.tools/yaxunit.json
, то он будет передан в качестве параметра для YAXUnit при запуске тестов. Если файла с таким именем нет, то в YAXUnit будет передан файл из текущей библиотеки resources/yaxunit.json
. Он содержит минимально необходимые параметры и настроен на поиск сценариев в расширении с именем YAXUnit
.tools/vrunner.json
, то запуск дымовых тестов будет выполняться с передачей файла в параметры запуска vrunner xunit --settings tools/vrunner.json
(smoke
-> vrunnerSettings
).opm
установит пакет add
, то будет использоваться обработка xddTestRunner.epf
из локальных зависимостей.tools/xUnitParams.json
, то этот путь к файлу будет передан в параметр запуска vrunner xunit --xddConfig ./tools/xUnitParams.json
(smoke -> xUnitParams
).vrunner.json
) не содержит настройку testsPath
, то запускается полный комплект дымовых тестов, расположенных в $addRoot/tests/smoke
.jUnit
(smoke
-> publishToJUnitReport
) и выключено формирование отчета в формате Allure (smoke
-> publishToAllureReport
).tools/vrunner.json
, то синтаксический контроль конфигурации с помощью конфигуратора будет выполняться с передачей файла в параметры запуска vrunner syntax-check --settings tools/vrunner.json
(syntaxCheck
-> vrunnerSettings
).syntaxCheck
-> groupErrorsByMetadata
).jUnit
осуществляется в файл ./build/out/jUnit/syntax.xml
(syntaxCheck
-> pathToJUnitReport
)../tools/syntax-check-exception-file.txt
, то команде запуска синтаксического контроля конфигурации данный файл будет передаваться как файл с исключениями сообщений об ошибках (параметр --exception-file
) (syntaxCheck
-> exceptionFile
).syntaxCheck
-> checkModes
).resultsTransform
-> removeSupport
и resultsTransform
-> supportLevel
).SonarQube installation
(sonarqube
-> sonarQubeInstallation
).sonar-scanner
из переменной окружения PATH
(sonarqube
-> useSonarScannerFromPath
).sonar-scanner
из переменной окружения PATH
выключено, предполагается наличие настроенного глобального инструмента SonarQube Scanner
с идентификатором инструмента sonar-scanner
(sonarqube
-> sonarScannerToolName
).branch plugin
или коммерческих версий SonarQube (sonarqube
-> branchAnalysisConfiguration
).sonar.projectVersion=$configurationVersion
утилиты sonar-scanner
можно передавать версию из созданного общего модуля. Для этого необходимо заполнить параметр (sonarqube
-> infoBaseUpdateModuleName
). Если параметр не заполнен, версия передается из корня конфигурации.sonarqube
-> waitForQualityGate
).generic issues
передаются утилите sonar-scanner
как значение параметра sonar.externalIssuesReportPaths
.email-ext
. Шаблоны сообщений конфигурируются в настройках плагина. notifications
-> email
-> onAlways
, onFailure
, onUnstable
, onSuccess
).notifications
-> email
-> *options
-> attachLog
).notifications
-> email
-> *options
-> recipientProviders
) в различных режимах отправки используются:
notifications
-> email
-> *options
-> directRecipients
).notifications
-> telegram
-> onAlways
, onFailure
, onUnstable
, onSuccess
).Если у вас есть расширения которые необходимо загрузить в базу для проведения тестов и проверок, это можно сделать на этапе подготовки базы.
initInfobase
-> extensions
).Для загрузки расширений в информационную базу необходимо выполнить следующие шаги:
extensions
-> name
).extensions
-> initMethod
). Поддерживаются два метода загрузки:
fromSource
- загрузка из исходников;fromFile
- загрузка cfe-файла.extensions
-> path
).
initInfobase
-> extensions
-> stages
). Если оставить это поле пустым, то расширение будет загружено на этапе initInfobase
и будет активно на всех последующих этапах. В противном случае расширение будет использоваться только на перечисленных этапах.Пример конфигурации для загрузки расширений:
"initInfobase": {
"extensions": [
{
"name": "ИмяРасширения1",
"initMethod": "fromSource",
"path": "путь/до/исходников/расширения",
"stages": ["bdd", "yaxunit"]
},
{
"name": "ИмяРасширения2",
"initMethod": "fromFile",
"path": "https://example.com/path/to/extension.cfe"
}
]
}
Реализована возможность загрузки эталонной базы на этапе инициализации информационной базы. Для этого необходимо указать в конфигурационном файле параметр initInfobase
-> templateDBPath
:
"initInfobase": {
"templateDBPath": "путь/до/файла/базы.dt"
}
.dt
и .1CD
.vanessa-runner
(включая логин и пароль от ИБ), указанный в параметре initInfobase
-> vrunnerSettings
. По умолчанию используется файл tools/vrunner.json
."initInfobase": {
"templateDBPath": "путь/до/файла/базы.dt",
"vrunnerSettings": "tools/vrunner.json"
}
YAXUnit
и дополнительные расширения с тестами можно в jobConfiguration.json
-> initInfobase
-> extensions
. Они будут загружены при инициализации ИБ../resources/yaxunit.json
из текущей библиотеки в свой репозиторий (./tools/yaxunit.json
) и перечислите в нем имена ваших расширений.tools/yaxunit.json
, то значение параметра reportPath в нем должно быть равно ./build/out/yaxunit/junit.xml