05 05 jenkins new project - kropachev/1c-devops-jr GitHub Wiki
Все настроено и мы готовы подключить наш проект к пайплайну.
В этом разделе мы выгрузим исходники в файлы, загрузим их в гитлаб и подключим к пайплайну.
Идем в 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.
Создаем папку на машине с установленной платформой. Например C:\GitRepo
В этот каталог gitsync будет сохранять файлы из хранилища.
Внутри этой папки, запускаем командную строку и клонируем проект git, в данном случае проект называется demodb.
git clone https://gitlab.onecci.lan/one-c/demodb.git
Потребуется ввести логин и пароль.
Будет создана папка проекта git, внутри которой нам нужно будет согда несколько подпапок и файлов с настройками. Создавать папки и файлы можно запустив Visual Studio Code из папки репозитория.
Внутри папки нашего проекта создаем каталог 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 файла с настройками для пайплайна.
-
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.
-
Jenkinsfile, описание пайплайна для 1С.
pipeline1C()
-
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отключает проверку файлов на поддержке без редактирования.
Коммитим изменения, удобно это делать прямо из 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 у нас базовые настройки, а в локальном каталоге папка готова к экспорту версий исходников из хранилища.
Пока мы работаем с хранилищем, будет необходимо переносить изменения из хранилища 1С в проект git. Синхронизация будет выполняться с использованием утилиты Gitsync (входит в пакет OneScript). Эта утилита использует платформу 1С для работы, поэтому на машине с Gitsync должна быть установлена платформа и доступны лицензии (подойдет лиценщия разработчика).
Рассматривать будем вариант работы из Windows.
На момент установки 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\cfgitsync --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.
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 увидеть результат проверки.
🎆