Руководство по Jenkins
В руководстве мы расскажем, зачем нужен Jenkins, а также покажем, как установить Jenkins на Ubuntu.
Jenkins — это сервис, с помощью которого можно автоматизировать процесс непрерывной интеграции программного обеспечения. Непрерывная интеграция (Continuous Integration) — один из этапов разработки, на котором происходит сборка рабочих копий проекта в единый макет-черновик, их тестирование, доставка или развёртывание программного обеспечения. Во время интеграции можно выявить слабые места и возможные ошибки в проекте и сразу их исправить.
На этапе интеграции разработчики объединяют код вручную, что занимает много времени. Jenkins позволяет автоматизировать этот этап. Сервис подойдёт как для профессионалов, так и для начинающих специалистов.
- имеет открытый исходный код, написанный на Java;
- поддерживает свыше 1000 плагинов для интеграции с инструментами тестирования, разработки и деплоя;
- работает больше чем в двух средах одновременно без потери эффективности;
- Jenkins хорошо подойдёт для проектов, которые написаны на Python;
- оптимизирует рабочий процесс: вам не нужно нанимать штат профессиональных программистов, в Jenkins можно разобраться даже без специальной подготовки;
- выявляет и устраняет нестандартные ошибки без привлечения человека;
- минимизирует количество ошибок, возникающих в связи с человеческим фактором.
Jenkins можно установить на Windows, macOS, Debian, Ubuntu, CentOS и другие операционные системы. Также Jenkins можно установить через системные пакеты, Docker или запустить автономно на любом компьютере с настроенной Java Runtime Environment (JRE).
Jenkins можно установить с официального сайта одним из двух способов: скачать из раздела «Download» или использовать команды из раздела «Documentation». Для Jenkins документация на русском не разработана, однако именно в этом разделе можно найти рекомендации для быстрой установки. Поэтому установим Jenkins на Ubuntu версий 16.04/18.04/20.04 вторым способом.
Как установить Jenkins
Для Jenkins системные требования следующие:
- 256 Мб оперативной памяти,
- минимум 1 Гб дискового пространства при установке на ОС и 10 Гб при запуске в качестве контейнера Docker.
3) Скачать и установить Jenkins
Jenkins может быть установлен на платформе Windows или Unix, но мы сосредоточимся только на установке Windows.
Предпосылки:
Прежде чем приступить к установке Jenkins в вашей системе Windows, есть некоторые предварительные условия для установки Jenkins на ваш компьютер.
Требования к оборудованию:
- Вам нужно минимум 256 МБ оперативной памяти на вашем компьютере или ноутбуке для установки Jenkins
- Вам нужно как минимум 1 ГБ места на жестком диске для Jenkins.
Требования к программному обеспечению:
- Поскольку Jenkins работает на Java, вам нужна либо последняя версия Java Development Kit (JDK), либо Java Runtime Environment (JRE).
Типы релизов
Jenkins выпускает два типа версий в зависимости от потребностей организации.
- Долгосрочная поддержка релиза
- Еженедельный выпуск
Долгосрочная поддержка релиза (LTS):
Долгосрочные релизы поддержки доступны каждые 12 недель. Они стабильны и широко тестируются. Этот выпуск предназначен для конечных пользователей.
Еженедельный выпуск:
Еженедельные выпуски доступны каждую неделю, исправляя ошибки в более ранней версии. Эти релизы предназначены для разработчиков плагинов.
Мы будем использовать релиз LTS, хотя процесс будет таким же, как и для еженедельного выпуска.
Как скачать Дженкинс?
Для успешной установки Jenkins необходимо выполнить следующие шаги:
Шаг 1) Перейдите на https://jenkins.io/download/ и выберите платформу. В нашем случае Windows
Шаг 2) Перейдите в папку загрузки с локального компьютера и разархивируйте загруженный пакет. Дважды щелкните по разархивированному jenkins.msi . Вы также можете Jenkin, используя WAR (веб-приложение ARchive), но это не рекомендуется.
Шаг 3) На экране установки Jenkin нажмите Далее.
Шаг 4) Выберите место, где вы хотите установить экземпляр Jenkins (по умолчанию это C: \ Program Files (x86) \ Jenkins), затем нажмите кнопку Next .
Шаг 5) Нажмите на кнопку Установить.
Шаг 6) После завершения установки нажмите «Готово».
Шаг 7) Во время процесса установки может появиться информационная панель, информирующая пользователя о том, что для полной настройки система должна быть перезагружена в конце текущей установки. Нажмите кнопку ОК, когда всплывет информационная панель:
Как разблокировать Дженкинс?
После завершения этапа установки Jenkins, вы должны продолжить и начать его настройку. Следующие шаги помогут вам разблокировать приложение Jenkins:
Шаг 1) После завершения процесса установки Jenkins откроется вкладка браузера с запросом начального пароля администратора. Чтобы получить доступ к Jenkins, вам нужно перейти по следующему пути в вашем веб-браузере.
HTTP: // локальный: 8080
Если вы можете получить доступ к указанному выше URL-адресу, это подтверждает, что Jenkins успешно установлен в вашей системе.
Шаг 2) Исходный пароль администратора должен быть найден в пути установки Jenkins (задается на шаге 4 в разделе Установка Jenkins).
Для расположения по умолчанию C: \ Program Files (x86) \ Jenkins, файл с именем initialAdminPassword можно найти в C: \ Program Files (x86) \ Jenkins \ secrets.
Однако, если был выбран пользовательский путь для установки Jenkins, вам следует проверить это местоположение для файла initialAdminPassword .
Шаг 3) Откройте выделенный файл и скопируйте содержимое файла initialAdminPassword .
Шаг 4) Вставьте пароль во всплывающую вкладку браузера ( http: // localhost: 8080 / login? Form =% 2F ) и нажмите кнопку «Продолжить».
Настроить Дженкинс
Вы также можете настроить свою среду Jenkins, выполнив следующие действия:
Шаг 1) Нажмите кнопку «Установить предложенные плагины», чтобы Jenkins извлекла и установила необходимые плагины
Jenkins начнет загружать и устанавливать все необходимые плагины, необходимые для создания новых рабочих мест Jenkins.
Примечание . Вы можете выбрать опцию «Выбрать подключаемые модули для установки» и выбрать подключаемые модули, которые хотите установить.
Шаг 2) После установки всех предложенных плагинов откроется панель «Создать первого администратора». Заполните все поля нужными реквизитами и нажмите кнопку « Сохранить и завершить ».
Шаг 3) После того, как вы заполните указанные выше данные, наконец, он запросит информацию URL, где вы можете настроить путь к экземпляру по умолчанию для Jenkins. Оставьте это как есть, чтобы избежать путаницы позже. Однако, если другое приложение уже использует порт 8080, вы можете использовать другой порт для Jenkins и, наконец, сохранить настройки, и вы закончили установку Jenkins. Нажмите кнопку « Сохранить и продолжить »:
Поздравляем! Мы успешно установили новый сервер Jenkins. Нажмите кнопку «Начать использовать Дженкинс».
Ниже вы можете найти и запустить экземпляр Jenkins, готовый создать первые задания Jenkins:
Настроика Jenkins клиента на Windows (Slave node for Jenkins)
Как подключить Windows к Jenkins? Как настроить Windows slave node on Jenkins. Есть известная проблема с подключением Windows агента к Jenkins, поэтому используем Java с установкой его в автозагрузку. Работает отлично и стабильно если все сделать по инструкции ниже. Инструкция по английски, но все предельно понятно. Если что не понятно — пишите.
1. Create, activate and update a new Windows VM (если это VM)
2. Create a local user “jenkins” with password “jenkins”.
3. Disable password policy (optional): start > type Local security policy > Account Polices > password policy > Meet complexity = disable)
4. Setup user’s auto login. Run command “netplwiz”, uncheck checkbox, select user “jenkins” and apply changes, enter password “jenkins” two times
5. Setup time sync server time.domain.com (локальный сервер времени — желательно чтобы Jenkins сервер использовал тот же сервер для синхронизации времени)
6 .Отключаем котроль подтверждения операций для установки приложений. Go to startup menu, and enter UAC — “Users Account Control Settings”. Turn the slider to down — OFF in the window that pops up. This will disable UAC warnings. (windows 10/2012 — http://winaero.com/blog/how-to-turn-off-and-disable-uac-in-windows-10/)
Download and install:
2. Git https://git-scm.com/download,
3. Install Git, select “3-th” option in a first window
Create folder C:\jenkins
Create empty bat file C:\jenkins\start_agent.bat
Add shortcut (ярлык) to Startup folder:
login as jenkins, create shortcut for C:\jenkins\start_agent.bat on Desktop,
run shell:startup, paste shortcut in opened folder.
Setup Git — настройки зависят от вашего Git, здась пример с авторизацией по ключу.
Run cmd and copy/paste code below:
git config —global user.name «Jenkins»
git config —global user.email » Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript «
ssh-keygen -t rsa -C » Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript » (don’t enter password)
Copy content from file %username%/.ssh/id_rsa.pub and paste as a key in http://local-gerrit.com for user jenkins
При необходимости — Create a file in folder %username%/.ssh/config
Hostname local-gerrit.com (ваш git)
Port 29418 (порт на катором отвеяает ваш git)
Test an ability to clone repository
git clone ssh:// Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript :29418/project
On Jenkins server — create a new node on Jenkins as “Dumb Slave”.
Choose “Launch slave agents via Java Web Start”
Copy command with particular -secret key
Open C:\jenkins\start_agent.bat and paste command with particular key:
Net start w32time
start /min java -jar slave.jar -jnlpUrl http://jenkins.domain.com/computer/node-name/slave-agent.jnlp -secret qwerty12
Все. Если Нода активна, можете запускать на ней работу.
Настройка Jenkins для запуска автоматических тестов (C#, NUnit, MSBuild)
Рассмотрим настройку Jenkins для сборки и запуска автоматических тестов, которые написаны на C#. Будем использовать сервер на базе Windows. Если вы используете автотесты написанные с помощью C# + Selenium WebDriver + NUnit, то также сможете использовать данную статью для настройки запуска автоматических тестов.
Изображения с мелкими деталями в статье кикабельны, поэтому не ломаем глаза и увеличиваем их.
Перед тем как приступить к настройке Jenkins нам предварительно требуется установить/развернуть на сервере:
— Jenkins
— Git
— NET Framework 4.6.2 (для NuGet, актуально на момент написания статьи)
— NuGet
УСТАНОВКА JENKINS
Установочный пакет Jenkins можно скачать с официального сайта jenkins.io. Установку Jenkins описывать не буду, так как она элементарна и не требует отдельных объяснений. Хочу только заметить, что я установил Jenkins в каталог «C:\jenkins», поэтому в статье я буду ссылаться именно на него.
Для всех пакетов, которые мы будем использовать в связке с Jenkins, мы создадим отдельный каталог «C:\jenkins\CI_package», в который и будем помещать все необходимые нам пакеты и программы.
В Jenkins интерфейс отображает на том языке, который выбран по умолчанию в браузере. Если хотите поменять язык интерфейса, то вам придётся поменять язык в браузере (Chrome) или установить в Jenkins плагин «Locale».
УСТАНОВКА GIT
Установочный дистрибутив Git можно скачать с сайта git-scm.com. Установка не будет описываться, так как там всё интуитивно понятно. Если не знаете, что делать, то при установке везде жмите «Далее».
УСТАНОВКА И НАСТРОЙКА NUGET
Чтобы у нас корректно работал NuGet (у меня версия 4.7.1) нам необходимо предварительно установить .NET Framework 4.6.2, который доступен для скачивания с официального сайта MIcrosoft по ссылке www.microsoft.com/ru-RU/download/details.aspx?id=53344
Скачиваем консольную утилиту «nuget.exe» с официального сайта nuget.org/downloads. Файл «nuget.exe» помещаем в каталог «C:\jenkins\CI_package».
Создаём в каталоге «C:\jenkins\CI_package» файл «nuget.config» и заполняем его следующим содержимым:
У меня в секции «packageSources» указано два источника, откуда могут браться пакеты:
1. Официальный источник NuGet-пакетов.
2. Каталог на компьютере, в который я могу поместить пакеты *.nupkg.
В секции «disabledPackageSources» указываете только те источники, которые отключены. У меня отключены все кроме каталога «Custom_Folder».
Содержимое указанных секций можете менять на своё усмотрение (аккуратно). Другие секции не трогаем и оставляем как есть.
НАСТРОЙКА JENKINS
Установка плагинов
Установим в Jenkins следующие плагины:
— Git
— MSBuild
— NUnit
Для установки переходим в раздел настроек «Настроить Jenkins» — «Управление плагинами» — «Доступные»:
Ищем плагины именно называющиеся, так как я и написал выше, особенно это касается плагина «Git», иначе можете установить не то что нужно.
После установки плагинов перезагружаем Jenkins.
Настройка MSBuild
Чтобы можно было производить в дальнейшем компиляцию проекта нам необходимо произвести настройку Jenkins, чтобы он знал, где находится MSBuild. Для этого нам необходимо:
1. Определить путь до «MSBuild.exe».
2. Указать определённый путь в Jenkins.
Идём в каталог «C:\Windows\Microsoft.NET\Framework». Здесь я вижу следующее:
У меня в проекте используется .NET Framework 4.5.2, поэтому я буду использовать «MSBuild.exe», который находится в каталоге «C:\Windows\Microsoft.NET\Framework\v4.0.30319». Полный путь до «MSBuild.exe» будет следующий «C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe». Запомнили.
Идём в Jenkins в раздел «Настроить Jenkins» — «Конфигурация глобальных инструментов»:
И в разделе «MSBuild» прописываем настройки. У меня они будут выглядеть следующим образом:
Сохраняем изменения. Вы можете установить «MSBuild» отдельно и использовать его, а не тот, что устанавливается с .NET Framework. Скажу только, что оба варианта работают.
Создание проекта
На главной странице в левом меню выбираем пункт «Создать Item»:
В открывшемся окне вписываем имя проекта и выбираем тип проекта:
Нажимаем «ОК». Откроется страница настройки проекта. Если страница не открылась, то откройте её (на главной странице нажмите по названию проекта и далее в левом меню сайта «Настройки»).
Заполнение блока «Управление исходным кодом»
Выбираем «Git». В форме указываем:
— Repository URL – указывается ссылка на репозиторий Git;
— Credentials – нажимаем «Add» — «Jenkins», чтобы добавить учётную запись для авторизации в Git (я выбрал авторизацию по логину/паролю):
— Branches to build – с какой ветки брать код (у меня «master»);
— Просмотрщик репозитория – значение «Автоматически»;
— Additional Behaviours – дополнительные действия, здесь я указал, чтобы перед сборкой очищался рабочий каталог от старых данных. Рабочий каталог, по умолчанию, находится по пути <каталог установки Jenkins>\workspace\<имя проекта>.
Теперь Jenkins знает, откуда требуется качать исходники.
Заполнение блока «Триггеры сборки»
Данный блок заполняйте на своё усмотрение. Если хотите, чтобы Jenkins опрашивал репозиторий каждые 30 минут и при наличии изменений запускал сборку, то указываем следующее:
Заполнение блока «Сборка»
Теперь нам надо указать, что Jenkins должен делать, после того как скачает исходный код:
1. Скачать NuGet пакеты, которые подключены к проекту.
2. Скомпилировать проект.
3. Запустить выполнение (запуск автотестов).
Добавляем первый шаг «Выполнить команду Windows» в блоке «Сборка»:
В появившемся поле указываем, что нам надо запустить «nuget.exe» для восстановления NuGet-пакетов, ведь мы их в репозиторий не загружаем. Команда:
«C:\jenkins\CI_package\nuget.exe» restore «%WORKSPACE%\test.sln» -ConfigFile «C:\jenkins\CI_package\nuget.config»
Можно использовать различные команды (примеры):
«C:\jenkins\CI_package\nuget.exe» restore «%WORKSPACE%\test.sln» -ConfigFile «C:\jenkins\CI_package\nuget.config»
«C:\jenkins\CI_package\nuget.exe» restore «%WORKSPACE%\test.sln» -source «C:\nuget_package»
«C:\jenkins\CI_package\nuget.exe» restore «%WORKSPACE%\test.sln» -source «https://nuget.victorz.ru/v3/index.json»
Выбирайте, что вам больше нравится. Скажу только, что использование файла конфигурации, по моему мнению, оптимальный вариант.
Добавим второй шаг «Build a Visual Studio project or solution using MSBuild» в блоке «Сборка»:
Заполняем необходимые поля. В моём случае получим:
После этих настроек, в общем-то, проект уже рабочий и может выкачивать код из Git и компилироваться. Нам же необходимо ещё запускать тесты.
Добавляем третий шаг «Выполнить команду Windows» в блоке «Сборка»:
В открывшемся окне прописываем команду запуска NUnit с параметрами, в которых передаём путь к нашей библиотеке с тестами:
«%WORKSPACE%\packages\NUnit.ConsoleRunner.3.8.0\tools\nunit3-console.exe» «%WORKSPACE%\test\bin\Release\test.dll» —result=nunit-result.xml
Внимательно прописывайте путь к NUnit и путь к библиотеке. «nunit-result.xml» — это отчёт, который сгенерирует NUnit, он будет всегда размещаться в корне рабочего каталога.
У меня получилось следующее:
Если вам необходимо запускать тесты определённой категории, то дописываем это следующим образом (обратите внимание на окончание команды):
«%WORKSPACE%\packages\NUnit.ConsoleRunner.3.8.0\tools\nunit3-console.exe» «%WORKSPACE%\test\bin\Release\test.dll» —result=nunit-result.xml —where «cat == REST»
«REST» — это название моей категории тестов. Вы указываете свою категорию запускаемых тестов.
Заполнение блока «Послесборочные операции»
Чтобы Jenkins у себя в интерфейсе выводил результаты тестов надо в блоке «Послесборочные операции» добавить шаг «Publish NUnit test result report»:
В появившейся строке указать имя отчёта, который у нас будет генерировать NUnit:
Теперь нажимаем «Сохранить». Проект, который собирает наши тесты и запускает их, настроен.
Запуск тестов
Для запуска тестов достаточно на главной странице нажать на соответствующий значок сборки проекта:
Просмотр результатов
Для просмотра результатов достаточно перейти в проект и выбрать последний номер сборки в блоке «История сборок»:
Вот и завершена настройка Jenkins для запуска автоматических тестов, написанных на C#.
ВСТРЕЧАЮЩИЕСЯ ОШИБКИ
Ошибка 1
Данная ошибка появляется при запуске «nuget.exe». На момент написания статьи у меня «nuget.exe» версии 4.7.1 и когда я установил «.NET Framework 4.6.2» у меня ошибка пропала.
Ошибка 2
Проект создан с использованием «.NET Framework 4.5.2», а его нет на компьютере. Если стоит старшая версия .NET Framework, то предыдущую, скорее всего, не удастся установить. Я установил «пакет разработчика Microsoft .NET Framework 4.5.2», который доступен по ссылке https://www.microsoft.com/ru-RU/download/details.aspx?id=42637
Если у вас программа создана с использованием другой версии .NET Framework и появляется аналогичная ошибка, с указанием вашей версии, то ищите пакет разработчика для вашей версии.