|
|
|
Содержание:
|
|
|
|
|
|
|
|
[[_TOC_]]
|
|
|
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
## Установка необходимого софта
|
|
|
|
|
|
|
|
1. Скачиваем Java с [официального сайта](https://www.java.com/download/ie_manual.jsp)
|
|
|
|
|
|
|
|
2. Скачиваем Jenkins с [официального сайта](https://www.jenkins.io/download/)
|
|
|
|
|
|
|
|
3. Скачиваем Git с [официального сайта](https://git-scm.com/download/win)
|
|
|
|
|
|
|
|
4. Устанавливаем Java:
|
|
|
|
При установке Java никаких специфических настроек не требуется (рекомендую обратить внимание на место установки)
|
|
|
|
|
|
|
|
5. Устанавливаем софт для Jenkins
|
|
|
|
|
|
|
|
- При выборе типа входа в систему выбираем "Run service as LocalSystem"
|
|
|
|
- Выбираем и тестируем порт (предпочтительно 8080)
|
|
|
|
- Указываем место где стоит Java
|
|
|
|
- Выбираем дополнительные модули для Jenkins (Можно ничего не выбирать)
|
|
|
|
- Завершаем установку
|
|
|
|
|
|
|
|
> После установки откроется браузер по умолчанию, в котором откроется страница Jenkins. В связи с дальнейшими настройками, Jenkins будет переустановлен, потому не имеет смысла продолжать работать в этой странице!
|
|
|
|
|
|
|
|
- В файле **jenkins.xml** по адресу **C:\Program Files\Jenkins** изменяем несколько строк:
|
|
|
|
|
|
|
|
```xml
|
|
|
|
<env name="JENKINS_HOME" value="D:\Jenkins\.jenkins"/>
|
|
|
|
<arguments> -Dfile.encoding=UTF-8 -Dpermissive-script-security.enabled=true -Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "C:\Program Files\Jenkins\jenkins.war" --httpPort=-1 --httpsPort=8080 --webroot="D:\Jenkins\war" </arguments>
|
|
|
|
<pidfile> D:\Jenkins\jenkins.pid </pidfile>
|
|
|
|
```
|
|
|
|
|
|
|
|
> После сохранения **jenkins.xml** изменится локальная директива Jenkins, сменит протокол с `http://` на `https://` и примет исходную кодировку **UTF-8**
|
|
|
|
|
|
|
|
- Сохраняем файл
|
|
|
|
- Настраиваем и перезагружаем службу Jenkins
|
|
|
|
- Чтобы открыть Службы, нажмите сочетание клавиш "Win" + R, в открывшемся окне "Выполнить" введите **services.msc** и нажмите клавишу Enter
|
|
|
|
- Находим службу "Jenkins", нажимаем на ней правой кнопкой мыши и выбираем "Свойства"
|
|
|
|
- Во вкладке "Вход в систему" выбираем "С учетной записью" и нажимаем кнопку "Обзор"
|
|
|
|
- В "Размещение" выбираем "Весь каталог", нажимаем "Ок" \
|
|
|
|
![Скриншот_02-11-2021_121528](uploads/be56624a61c419c8ceb3fd100b7d4cc9/Скриншот_02-11-2021_121528.jpg "Весь каталог")
|
|
|
|
- В поле для текста вводим часть имени пользователя и нажимаем на кнопку "Проверить имена", после чего выбираем нужное нам имя и нажимаем "Ок" \
|
|
|
|
![Скриншот_02-11-2021_120711](uploads/dcd05bef406e5114c6cec285dd9c68b4/Скриншот_02-11-2021_120711.jpg "вводим часть имени пользователя")
|
|
|
|
- Заполняем поля паролей, нажимаем "Применить", "Ок"
|
|
|
|
- Находим службу "Jenkins", нажимаем на ней правой кнопкой мыши и выбираем "Перезагрузить"
|
|
|
|
|
|
|
|
7. Переходим в браузере на адрес **<https://localhost:8080/>**
|
|
|
|
- Требуется ввести пароль, который лежит в файле **initialAdminPassword** по адресу указанному на странице браузера. **D:\Jenkins\\.jenkins\secrets**
|
|
|
|
- Выбираем установку с предварительным выбором плагинов
|
|
|
|
- В поиске плагинов ищем Git, и выбираем GitLab, Git Parameter, SSH Agent и устанавливаем это всё
|
|
|
|
8. Создаем пользователя Jenkins
|
|
|
|
9. Выбираем адрес для Jenkins (Советую оставить как есть)
|
|
|
|
|
|
|
|
|
|
|
|
## Открытие Jenkins
|
|
|
|
|
|
|
|
Для того что бы открыть Jenkins можно использовать разные варианты адреса
|
|
|
|
|
|
|
|
- Перейдя по [**ссылке**](https://localhost:8080 "https://localhost:8080")
|
|
|
|
- `https://localhost:8080/`
|
|
|
|
- `https://jenkins:8080/` Имя хоста ![Скриншот_02-11-2021_123316](uploads/a50b3569ae4d831807a724c4f3e93661/Скриншот_02-11-2021_123316.jpg "команда: 'hostname' ") Такой вариант использования, чаще всего, применяется при обращении со стороны *в одной локальной сети* (В нашем случае от GitLab, но его можно использовать и напрямую)
|
|
|
|
- `https://jenkins.mega-pol.ru:8080/` Или же такой вариант, по аналогии с пердыдущим
|
|
|
|
|
|
|
|
Настройки Jenkins и важные особенности ищите в другой [главе](Настройки-TestComplete "Глава «Настройки TestComplete»")
|
|
|
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
## Настройка GitLab
|
|
|
|
|
|
|
|
1. Создание WebHook
|
|
|
|
- Открываем страницу репозитория
|
|
|
|
- Слева в колонке в выпадающем списке "Settings" ищем "Webhooks"
|
|
|
|
- В поле "URL" нужно вставить адрес к настроенному pipeline в Jenkins
|
|
|
|
> Обратите внимание, что адрес должен быть не локальный (должен быть адрес сервера Jenkins), и вместо части **job** должно быть **project** по аналогии с примером:
|
|
|
|
>> `https://jenkins:8080/project/JobForRepo/`
|
|
|
|
- Выбираем триггеры для хука
|
|
|
|
- Ставим галочку в поле "Enable SSL verification" и нажимаем "Add webhook"
|
|
|
|
|
|
|
|
> Советую после создания WebHook протестировать его. Внизу, под настройками нового хука, есть список созданных "Project Hooks", где у каждого хука есть кнопка "Тест". В выпадающем списке ~~например~~ выбираем `Push events`
|
|
|
|
|
|
|
|
2. Визуализация коммит статуса и разрешения MR
|
|
|
|
- В нужном нам репозитории, слева в колонке в выпадающем списке "Settings" ищем "General"
|
|
|
|
- В разделе "Merge requests" ищем поле "Merge checks", где ставим галочку на `Pipelines must succeed`
|
|
|
|
- Внизу в этом разделе сохраняем изменения "Save changes"
|
|
|
|
- Так же в нужном нам репозитории, слева в колонке в выпадающем списке "Settings" ищем `CI/CD`
|
|
|
|
- В разделе "Auto DevOps" отключаем `Default to Auto DevOps pipeline`
|
|
|
|
- Внизу в этом разделе сохраняем изменения "Save changes"
|
|
|
|
|
|
|
|
> Теперь на главном экране репозитория, а так же в окне "Merge requests" будет отображаться "Commit status" (Зеленая галочка напротив **Pipeline** и кнопки **Merge**) ![Скриншот_01-11-2021_120543](uploads/670476d558a81c3ae0101374c396d478/Скриншот_01-11-2021_120543.jpg)\
|
|
|
|
А так же не получится сделать "Merge" без успешной сборки от Jenkins
|
|
|
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
## Настройка платформы для сборки (msbuild)
|
|
|
|
|
|
|
|
### Необходимые для сборки файлы и настройки
|
|
|
|
|
|
|
|
Для того что бы не устанавливать на платформу Delphi, но сборка проектов Delphi всё же происходила на Jenkins, делаем следующее
|
|
|
|
|
|
|
|
1. Создаем на сервере соответствующий путь `C:\Program Files (x86)\Embarcadero\Studio\22.0` ~~версия может быть другой~~
|
|
|
|
|
|
|
|
2. Копируем в эту локацию с рабочей платформы следующие папки:
|
|
|
|
- [x] bin
|
|
|
|
- [x] bin64
|
|
|
|
- [x] lib\
|
|
|
|
_Здесь находится необходимый файл **rsvars.bat**_
|
|
|
|
|
|
|
|
> Рабочая платформа подразумевает, что необходимо убедиться в том, что проект собирается в Delphi.
|
|
|
|
|
|
|
|
3. Создаем на сервере соответствующий путь `C:\Users\Jenkins\AppData\Roaming\Embarcadero` (В нашем случае пользователь Jenkins)
|
|
|
|
|
|
|
|
4. Необходимо копировать в эту локацию с рабочей платформы папку `BDS` (В которой лежит файл **EnvOptions.proj**) \
|
|
|
|
_Здесь находятся пути к файлам необходимым для сборки_
|
|
|
|
|
|
|
|
> Когда папки скопируются, то для предварительной проверки сборки можно сделать клонирование репозитория к себе на платформу, а затем ввести эти команды в **cmd** и убедиться, что сборка происходит без ошибок
|
|
|
|
>
|
|
|
|
> - `"C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\rsvars.bat"` - Здесь находятся команды для правильной сборки проекта *Возможна другая версия Delphi*
|
|
|
|
> - `msbuild D:\RootRepo\RTL.groupproj` - Это пример запуска **msbuild**. В вашем случае надо указать Ваш адрес проекта для сборки.
|
|
|
|
|
|
|
|
### Для понимания работы процесса msbuild
|
|
|
|
|
|
|
|
MSBuild всегда идет с .NET Framework и лежит он в определенном месте, для того что бы он заработал существует в файлах Delphi файсткрипт, определяющий все переменные окружения нужные для сборки проектов `rsvars.bat`. В свою очередь, во время сборки msbuild обращается к файлу `CodeGear.Common.Targets`, в котором есть `EnvOptions`
|
|
|
|
|
|
|
|
1. **rsvars.bat**\
|
|
|
|
Файл содержит в себе переменные окружения. Он требуется для определения конкретного msbuild (Их может несколько, в зависимости от Framework)
|
|
|
|
2. **msbuild**\
|
|
|
|
Если установлена Delphi, то MSBuild уже тоже есть, и Delphi его использует. Скорее всего, это каталог `%WINDIR%\Microsoft.Net\Framework\v3.5`, либо найти в каталоге .Net 4.0/4.5/4.6. Но можно и скачать отдельным приложением с сайта [Microsoft](https://www.microsoft.com/ru-ru/download/details.aspx?id=48159).
|
|
|
|
3. **CodeGear.Common.Targets**\
|
|
|
|
И если мы откроем файл в каталоге Delphi `С:\Program Files\Embarcadero\Studio\20.0\Bin\CodeGear.Delphi.Targets`, то мы увидим там ещё один MSBuild-скрипт, в котором объявлена задача Build:` <Target Name="Build"...`
|
|
|
|
|
|
|
|
4. **EnvOptions**\
|
|
|
|
Если вы войдете в систему Hudson или Jenkins как служба Windows, используя учетную запись, которая никогда не использовалась для входа в систему Windows, никогда не запускала BDS.exe, вы получите эту проблему. Утилита MSBUILD от Microsoft должна вызывать DCC32, которая является лицензированным коммерческим программным обеспечением, а для лицензирования компиляции командной строки Delphi и настройки среды требуется, чтобы вы запустили IDE в качестве учетной записи и чтобы ваша учетная запись сборки jenkins и компьютер были лицензированы должным образом.
|
|
|
|
> Решение этой проблемы описано в [подразделе "Необходимые для сборки файлы и настройки"](Страница-с-руководством-по-установке-Jenkins#необходимые-для-сборки-файлы-и-настройки)
|
|
|
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
## Возможные ошибки и их решения
|
|
|
|
|
|
|
|
1. При выполнении msbuild встречаются ошибки сборки. Часто они связанны с ненайденными файлами сборщиком. В данном руководстве, должно быть всё учтено, однако я обращу внимание на некоторые файлы и их параметры, что бы было понимание как происходит сборка и что критически важно для успешной работы сборщика.
|
|
|
|
|
|
|
|
> Все ошибки этого раздела связанны с тем, что на сервер не ставится Delphi, и соответственно, средства для сборки Delphi проектов. Потому **ВАЖНО** брать файлы с **рабочей** платформы.
|
|
|
|
|
|
|
|
- Если не скопировать папки, указанные во 2 пункте раздела [настройка платформы для сборки (msbuild)](Страница-с-руководством-по-установке-Jenkins#настройка-платформы-для-сборки-msbuild), выйдет, что сборщик не найдет файла `rsvars.bat` В котором прописаны переменные окружения, в частности: **%FrameworkDir%; %FrameworkSDKDir%;**. По сути консоль должна обратить внимание на то, что файла нет **""C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\rsvars.bat"msbuild" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.**
|
|
|
|
- При дальнейшей сборке (Когда файл **rsvars.bat** будет скопирован на сервер), у сборщика возможны следующие ошибки:
|
|
|
|
- C:\Program Files (x86)\Embarcadero\Studio\22.0\Bin\CodeGear.Delphi.Targets(407,5): error E1026: File not found: 'Controls.res'
|
|
|
|
- C:\Program Files (x86)\Embarcadero\Studio\22.0\Bin\CodeGear.Delphi.Targets(407,5): error E1026: File not found: 'Dialogs.res'
|
|
|
|
Эти ошибки связанны с тем, что в файлах пользователя нет файлов **Controls.res**, **Dialogs.res**.
|
|
|
|
- Так же возможны *Предупреждения* связанные с фалом **CodeGear.Delphi.Targets**, в котором сборщик может обратить внимание на то, что бы явно указали скобки `"(", ")"` в некоторых строках.
|
|
|
|
|
|
|
|
> Если есть какие-либо ошибки связанные с ненайденными фалами - рекомендую использовать в **cmd** команду `set`, которая отобразит текущие параметры переменной среды.
|
|
|
|
|
|
|
|
2. Не работает служба Jenkins
|
|
|
|
- Если **служба Jenkins** перестала запускаться, то в этом случае необходимо принудительно запустить его из окна служб:
|
|
|
|
- Это можно сделать из **Диспейчера Задач** → **Службы** → **Jenkins**. Нажав правой кнопкой мыши по службе, выбираем **Запустить**
|
|
|
|
|
|
|
|
- Если служба запускается и сразу отлючается
|
|
|
|
- Проверьте Диспейчер задач. Если там есть процессы, связанные с *Java*, их стоит отключить.
|
|
|
|
- Периодически сама платформа *Java* обновляется, не внося изменения в Jenkins.
|
|
|
|
|
|
|
|
> Проверьте файл `Jenkins.xml`, сравните актуальную директорию вашей *Java* с содержимым строки **executable**. Они должны быть идентичны
|
|
|
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
## Ссылки на документацию
|
|
|
|
|
|
|
|
- [Jenkins](https://www.jenkins.io/doc/book/)
|
|
|
|
|
|
|
|
- [GitLab](https://docs.gitlab.com/ee/topics/)
|
|
|
|
|
|
|
|
- [Git](https://git-scm.com/book/ru/v2/)
|
|
|
|
|
|
|
|
- [Markdown в GitLab](https://docs.gitlab.com/ee/user/markdown.html "Очень много полезного")
|
|
|
|
|
|
|
|
-----
|
|
|
|
[В начало](Страница-с-руководством-по-установке-Jenkins#установка-необходимого-софта) | [Открыть страницу заново](Страница-с-руководством-по-установке-Jenkins) | [Страница Home](home#пока-все-лежит-на-одной-странице)
|
|
|
|
|
|
|
|
[Редактировать текущую страницу](https://gitlab.mega-pol.ru/Documentation/Guides/-/wikis/%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0-%D1%81-%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE%D0%BC-%D0%BF%D0%BE-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B5-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B5-Jenkins/edit)
|
|
|
|
|
|
|
|
----- |
|
|
|
\ No newline at end of file |