05 05 jenkins new project - kropachev/1c-devops-jr GitHub Wiki

Подключаем новый проект к пайплайну

Все настроено и мы готовы подключить наш проект к пайплайну.

В этом разделе мы выгрузим исходники в файлы, загрузим их в гитлаб и подключим к пайплайну.

Создаем проект в GitLab

Идем в GitLab.

Projects - New Project - Create blank project.

Project name - demodb (любое название, лучше по имени основной конфигурации).

Visibility level - Internal

Убрать галку Initialize repository with a README.

Жмем Create project.

Клонирование проекта в локальный каталог

В GitLab мы уже пустой проект, сейчас создадим у себя папку для этого проекта, клонируем туда проект из GitLab, потом выгрузим из хранилища файлы конфигурации и отправим обратно в GitLab.

К этому времени уже должно существовать хранилище 1С, которое будет клонироваться, а так же должен быть установлен OneScript.

Приведу вариант работы из Windows.

Клонирование проекта в локальный каталог Windows

Создаем папку на машине с установленной платформой. Например C:\GitRepo

В этот каталог gitsync будет сохранять файлы из хранилища.

Внутри этой папки, запускаем командную строку и клонируем проект git, в данном случае проект называется demodb.

git clone https://gitlab.onecci.lan/one-c/demodb.git

Потребуется ввести логин и пароль.

Будет создана папка проекта git, внутри которой нам нужно будет согда несколько подпапок и файлов с настройками. Создавать папки и файлы можно запустив Visual Studio Code из папки репозитория.

Готовим папку проекта к выгрузке файлов исходников 1С

Внутри папки нашего проекта создаем каталог src/cf, сюда будут выгружаться файлы исходников конфигурации.

Внутри этого каталога создаем файл AUTHORS, это файл сопоставления имен пользователей хранилища и GitLab. Всех пользователей хранилища необходимо сопоставить с пользователями GitLab.

Примерное содержание файла.

Администратор=root <[email protected]>
User=user <[email protected]>

Здесь же создается файл VERSION. Указываем версию 0, это значит gisync будет синхронизировать все версии из хранилища.

<?xml version="1.0" encoding="UTF-8"?>
<VERSION>0</VERSION>

Добавляем файлы настроек пайплайна

В каталоге с репозиторием проекта (C:\GitRepo) необходимо создать 3 файла с настройками для пайплайна.

  1. jobConfiguration.json, конфигурационный файл:
{
    "$schema": "https://raw.githubusercontent.com/firstBitMarksistskaya/jenkins-lib/master/resources/schema.json",
    "v8version": "8.3.27.1606",
    "stages": {
        "sonarqube": true
    }
}
  • v8version, это версия платформы.
  • sonarqube, настройка шага проверки sonarqube.
  1. Jenkinsfile, описание пайплайна для 1С.
pipeline1C()
  1. sonar-project.properties - настройки для sonarqube.
sonar.projectKey=demodb
sonar.projectName=demodb

sonar.sources=src/cf

sonar.sourceEncoding=UTF-8

sonar.inclusions=**/*.bsl
sonar.cpd.exclusions=**/\u0420\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u041e\u0442\u0447\u0435\u0442*/**/*.*

sonar.bsl.languageserver.skipSupport=with support locked
  • sonar.projectKey - ключ проекта
  • sonar.projectName - название проекта
  • sonar.sources - путь к исходникам
  • sonar.sourceEncoding - кодировка исходников
  • sonar.inclusions - маска анализируемых файлов
  • sonar.cpd.exclusions - маска исключаемых файлов (в данном случае РегламентированныйОтчет, в них слишком много дублей кода)
  • sonar.bsl.languageserver.skipSupport - with support locked отключает проверку файлов на поддержке без редактирования.

Отправляем изменения в GitLab

Коммитим изменения, удобно это делать прямо из VSCode.

Ошибка unsafe repository

Если появляется ошибка

fatal: unsafe repository ('/home/mc/demodb' is owned by someone else)
To add an exception for this directory, call:

        git config --global --add safe.directory /home/mc/demodb

Выполняем предложенную команду

git config --global --add safe.directory /home/mc/demodb

И повторяем

git add .
Ошибка Author identity unknown

Здесь тоже возможно появление ошибки

Author identity unknown

*** Please tell me who you are.

Run

  git config --global user.email "[email protected]"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

Последовательно выполняем предложенные команды

git config --global user.name root

Где root, это имя пользователя

git config --global user.email [email protected]

Где [email protected], это имейл пользователя

Повторяем

git commit -m "init"

Получаем примерно такой ответ

[main (root-commit) a750612] init
 2 files changed, 4 insertions(+)
 create mode 100755 src/cf/AUTHORS
 create mode 100755 src/cf/VERSION

Теперь отправляем

git push

Вводим логин и пароль от GitLab.

Готово. В Gitlab у нас базовые настройки, а в локальном каталоге папка готова к экспорту версий исходников из хранилища.

Gitsync, синхронизация Хранилища 1С и Git

Пока мы работаем с хранилищем, будет необходимо переносить изменения из хранилища 1С в проект git. Синхронизация будет выполняться с использованием утилиты Gitsync (входит в пакет OneScript). Эта утилита использует платформу 1С для работы, поэтому на машине с Gitsync должна быть установлена платформа и доступны лицензии (подойдет лиценщия разработчика).

Рассматривать будем вариант работы из Windows.

Устанавливаем Gitsync

На момент установки Gitsync уже должен быть установлен OneScript.

Устанавливаем Gitsync

opm install gitsync

Инициализация плагинов.

gitsync plugins init

Смотрим список плагинов.

gitsync plugins ls -a

Включаем необходимый минимум плагинов.

gitsync p e increment limit check-authors sync-remote

Проверяем.

gitsync plugins ls

Должен быть примерно такой список, плагины отображаются как [on].

Каталог плагинов: </home/administrator/.local/share/gitsync/plugins>
Список плагинов:
 [on] [1.3.0] - increment - Плагин добавляет возможность инкрементальной выгрузки в конфигурации
 [on] [1.3.0] - limit - Плагин добавляет возможность ограничения на минимальный, максимальный номер версии хранилища, а так же на лимит на количество выгружаемых версий за один запуск
 [on] [1.3.0] - check-authors - Плагин добавляет функциональность проверки автора версии в хранилище и файла AUTHORS
 [on] [1.3.0] - sync-remote - Плагин добавляет функциональность синхронизации с удаленным репозиторием git

Выполняем синхронизацию

Варианты запуска из windows, папка хранилища сетевая, папка гита локальная.

gitsync sync -u gitsync \\ubuntuserver1\onecrep C:\gitrep\erp\src\cf
gitsync --v8version "8.3.27.1606" --ibconnection /S"SERVER1C\serverbase" sync -u gitsync \\ubuntuserver1\onecrep C:\GitRepo\demodb\src\cf
  • --v8version - явно указываем версию платформы.
  • gitsync- имя пользователя хранилища;
  • \\ubuntuserver1\onecrep - путь к хранилищу 1с.
  • C:\gitrep\erp\src\cf- путь к git репозиторию.
  • --ibconnection - флаг необходимости использования конкретной базы для конвертации конфигурации
  • /S"SERVER1C\serverbase" - путь к сетевой базе, SERVER1C имя сервера, serverbase имя базы.

Вариант запуска из windows для конвертации расширения

gitsync --verbose --v8version "8.3.27.1606" --ibconnection /S"SRUMOWWAA001\gitsync" sync -u gitsync --ext Коннект \\ubuntuserver1\connect C:\gitrep\erp\src\cfe\connect
  • --ext - флаг, указывающий что это расширение.
  • Коннект - Имя расширения, с которым оно будет подключено в базе.
  • \\ubuntuserver1\connect - путь к хранилищу 1с.

Дополнительные ключи

  • --verbose - признак отладки, для вывода дополнительной информации о процессе.
  • --v8version "8.3.27.1606" - версия платформы.
  • --ibconnection /S"myserver\gitsync" - использование существующей серверной базы. Путь к базе указан в формате “ИМЯСЕРВЕРА\ИМЯБАЗЫ”.
Результат выполнения В итоге получаем примерно такое сообщение об успехе
C:\Windows\System32>gitsync sync -u user H:\ C:\GitRepo\demodb\src\cf
ИНФОРМАЦИЯ - Начало выполнение команды <sync>
ИНФОРМАЦИЯ - Начата синхронизация с git
ИНФОРМАЦИЯ - Номер синхронизированной версии: 0
ИНФОРМАЦИЯ - Номер последней версии в хранилище: 3
ИНФОРМАЦИЯ - Получаем исходники для версии 1, 28.05.2022 8:42:14
WARNING: Constructor of Console is obsolete. Use global property Консоль/Console
ИНФОРМАЦИЯ - Определяю тип возможной выгрузки конфигурации в файлы
ИНФОРМАЦИЯ - Тип выгрузки конфигурации в файлы: ПОЛНАЯ ВЫГРУЗКА
ИНФОРМАЦИЯ - Получаем исходники для версии 2, 28.05.2022 8:42:35
WARNING: Constructor of Console is obsolete. Use global property Консоль/Console
ИНФОРМАЦИЯ - Определяю тип возможной выгрузки конфигурации в файлы
ИНФОРМАЦИЯ - Тип выгрузки конфигурации в файлы: ИНКРЕМЕНТАЛЬНАЯ ВЫГРУЗКА
ИНФОРМАЦИЯ - Получаем исходники для версии 3, 28.05.2022 8:42:47
WARNING: Constructor of Console is obsolete. Use global property Консоль/Console
ИНФОРМАЦИЯ - Определяю тип возможной выгрузки конфигурации в файлы
ИНФОРМАЦИЯ - Тип выгрузки конфигурации в файлы: ИНКРЕМЕНТАЛЬНАЯ ВЫГРУЗКА
ИНФОРМАЦИЯ - Завершена синхронизации с git
ИНФОРМАЦИЯ - Завершено выполнение команды <sync>

Теперь пушим изменения на сервер gitlab.

git push

Добавляе пайплайн в Jenkins

Переходим в интерфейс Jenkins.

Dashboard - New Item

Заполняем Enter an item name, например demodb.

Выбираем Multibranch Pipeline.

Жмем OK.

Открывается окно нашего пайплайна. Заполняем поля.

Display Name

Branch Sources - Add Source в выпадающем списке выбираем Git.

Project Repository - https://gitlab.onecci.lan/one-c/demodb.git, Путь к репозиторию в GitLab.

Credentials, выбираем Jenkins.

В открывшемся окне добавляем имя и пароль от git (root). Description - root gitlab password.

Жмем Add, выбираем в списке только что созданные параметры.

Проверяем Build configuration. Mode должно быть by Jenkinsfile, а Script Path - Jenkinsfile, как файл в репозитории.

Можно включить периодичность запуска - Scan Multibranch Pipeline Triggers - Ставим галку в пункте Periodically if not otherwise run. Интервал 60 минут, например.

Жмем Save.

Теперь можем выполнить первый запуск, а после завершения в sonarqube увидеть результат проверки.

🎆

⚠️ **GitHub.com Fallback** ⚠️