Skip to content

Jenkins shared library для 1С:Предприятие 8

License

Notifications You must be signed in to change notification settings

AlexPCRus/jenkins-lib

 
 

Repository files navigation

Jenkins shared library for 1C:Enterprise 8

Цель

Создание библиотеки (или плагина) для Jenkins, позволяющей:

  • максимально упростить написание Jenkinsfile для процесса CI в условиях платформы 1С:Предприятие 8
  • иметь схожий и контролируемый пайплайн для всех проектов
  • дать пользователю в руки простой декларативный конфигурационный файл, вместо требования описывать всю сложную логику по работе с 1С

Общие положения

  • в активной разработке и поиске "своего пути" по разработке библиотеки;
  • формат конфигурационного файла не стабилизирован;
  • обратная совместимость пока не гарантируется, внимательно читайте changelog;
  • количество stage будет со временем увеличиваться;
  • использовать на свой страх и риск;
  • любая помощь приветствуется.

Ограничения

  1. Для шага подготовки требуется любой агент с меткой agent.
  2. Для запуска шага анализа SonarQube требуется агент с меткой sonar.
  3. Для запуска шага валидации EDT требуется агент с меткой edt (для собственно валидации) и агент с меткой oscript (для трансформации результатов с помощью библиотеки stebi).
  4. Для запуска шагов, работающих с 1С (подготовка, синтаксический контроль и т.д.) требуется агент с меткой, совпадающей со значением в поле v8version файла конфигурации.
  5. В качестве ИБ используется файловая база, создаваемая в ./build/ib, без данных авторизации. Переопределение "в следующих сериях".
  6. Stage "Дымовые тесты" пока пустой.
  7. Запуск vrunner на текущий момент происходит из локального каталога oscript_modules. Предполагается наличие в корне репозитория файла packagedef, в котором бы была указана зависимость от vanessa-runner

Возможности

  1. Все шаги можно запустить на базе docker-образов из форка репозитория onec-docker. См. памятку по слоям и последовательности сборки
  2. Трансформация кода из формата конфигуратора в формат EDT (только если включен шаг edtValidate).
  3. Подготовка информационной базы по версии из хранилища конфигурации.
  4. Запуск синтаксического контроля средствами конфигуратора и сохранение результатов в виде отчета jUnit.
  5. Запуск валидации проекта средствами EDT и конвертация отчета в формате generic issues.
  6. Запуск статического анализа для SonarQube

Подключение

Инструкция по подключению библиотеки: https://jenkins.io/doc/book/pipeline/shared-libraries/#using-libraries

Примеры Jenkinsfile

Если в настройках подключения shared-library включен флаг "Load implicitly":

pipeline1C()

В обратном случае:

@Library('jenkins-lib') _

pipeline1C()

Да, вот и весь пайплайн. Конфигурирование через json.

Внешний вид пайплайна в интерфейсе Blue Ocean

image

Конфигурирование

По умолчанию применяется файл конфигурации из ресурсов библиотеки

Поверх него накладывается конфигурация из файла jobConfiguration.json в корне проекта, если он присутствует.

Пример переопределения:

  • указывается точная версия платформы (и соответственно метка агента, см. ограничения)
  • идентификаторы credentials для пути к хранилищу и к паре логин/пароль для авторизации в хранилище (необходимы, если применяются шаги, работающие с информационной базой)
  • включаются шаги запуска статического анализа SonarQube, валидации средствами EDT и синтаксического контроля
{
    "$schema": "https://raw.githubusercontent.com/firstBitSemenovskaya/jenkins-lib/master/resources/schema.json",
    "v8version": "8.3.14.1976",
    "secrets": {
        "storagePath": "f7b21c02-711a-4883-81c5-d429454e3f8b",
        "storage" : "c1fc5f33-67d4-493f-a2a4-97d3040e4b8c"
    },
    "stages": {
        "sonarqube": true,
        "edtValidation": true,
        "syntaxCheck": true
    }
}

About

Jenkins shared library для 1С:Предприятие 8

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Groovy 73.7%
  • Java 20.4%
  • Kotlin 5.9%