Как установить jenkins на windows

Итак, в вашем репозитории накопилось количество сборок превысившее число 1. Настало время задуматься о DevOps(е). В этом тексте я напишу как развернуть локальный сервер сборки на основе Jenkins.

Пролог

Зачем все это? Дело в том, что сам по себе репозиторий с кодом это Филькина грамота, если поверх кода нет работающего сервера сборки, который даст гарантию, что «это что-то» вообще хотя бы собирается компилятором без ошибок.

Потом, сами артефакты это Филькина грамота, если отсутствуют модульные тесты, которые дадут гарантию, что *.bin(ари) вообще работают.

Классический способ дать гарантию качества исходников это запустить поверх него сервер сборки. Есть множество готовых технологий для серверов сборки. Среди тех кто в теме на слуху такие программы как CircleCI, Jenkins и GitLab.

Идея проста. Сервер сборки это просто инфраструктурный прикладной процесс\утилита, который периодически запускает скрипты построения конкретных сборок и затем сохраняет результат (артефакты) в конкретную папку или архив. Обычно сервер сборки работает автономно 24/7 и собирает артефакты из репозитория с кодом сразу после новых коммитов.

Когда кому-то понадобится артефакты (прошивка), можно зайти в Web GUI и там выбирать, то, что нужно прямо как в супермаркете.

Достоинство серверов сборки

  • Всегда есть артефакт для отгрузки. Если не вчерашний, то позавчерашний.

  • Есть сортировка сборок по различным атрибутам. Размер бинаря, время сборки.

  • Сразу видны конфликты. Какие сборки с чем конфликтуют. Можно не глядя на код уже примерно понять в каком программном компоненте ошибки.

  • Можно анализировать полный лог сборки

  • Экономия времени на разработку и ускорение разработки в общем. Вам не придется больше ждать пока локально соберется код (3….7мин по 20 раз в день). Вы локально будете только редактировать код и делать коммиты. Вам даже не обязательно локально устанавливать ToolChain. Всё будет происходить на сервере сборки. Сервер сборки сэкономит вам 2…2,5 часа в день.

  • Быстрая отгрузка артефактов. Например вас попросили собрать артефакт для какой-то конкретной платы. Вы просто дадите готовый артефакт из сервера сборки.

  • Контроль прохождения модульных тестов

  • Сервер сборки нужен для контроля качества работы программистов. Тут всё просто. У хороших программистов сборки собираются, а модульные тесты проходят. У плохих программистов сборки не собираются, а тесты не проходят.

  • Простой контроль целостности репозитория

  • Азарт при разработке софтвера. Появляется желание исправить все конфликты в кодовой базе и построить по-настоящему модульный код.

Недостатки сервера сборки

  • При неправильной сборке могут переполнить жесткий диск. Всегда в настройках Jenkins Job(а) указывайте максимальное количество сборок, которое будет храниться на PC для каждой конкретной сборки. В противном случае вы просто переполните себе жесткий диск. У меня был случай как за полтора года Jenkins сохранил 79GByte артефактов и мне пришлось сносить Jenkins и накатывать его заново.

  • Желателен отдельный PC(NetTop) для работы сервера. Так называемый «зомбик». Дело в том, что от обилия сборок на Jenkins мой локальный NetTop сильно ревёт. Это порой может отвлекать от работы.

  • Нужно вручную мышкой конфигурировать каждую сборку в Web интерфейсе

Пошаговое руководство запуска Jenkins на Win

Какой понадобится софтвер?

Программа

Назначение

*jdk-11.0.16.1_windows-x64_bin.exe

Виртуальная машина для работы сервера сборки

Notepad++.exe

Текстовый редактор для изменения конфигов

*Windows 10

Операционная система для сервера сборки

git.exe

Система контроля версий исходных кодов

gcc.exe

Компилятор С кода. Входит в состав CygWin

make.exe

Культовая утилита сборки сорцов. Входит в состав CygWin

TeamViewer.exe

Удаленный доступ к NetTop для коллективного доступа к серверу сборки

*Tor Browser

Для скачивания JDK на санкционных территориях

Chrome.exe

Браузер для просмотра таблицы сборок

*jenkins.exe

Сервер сборки

Звездочной * отмечены ключевые программные компоненты. Остальное можно и заменить альтернативами.

Фаза 1: Установка Java Runtime Environment

Дело в том, что Jenkins работает поверх виртуальной машины Java. Так сделано специально, чтобы программа была переносима между различными операционными системами. Поэтому перед установкой Jenkins надо установить Java Runtime Environment(JRE). JRE это виртуальная машина для исполнения байт-кода, который генерирует компилятор Java. JRE входит в состав Java Development Kit(JDK). Это компилятор языка Java и Java Runtime Environment.

Если у вас нет java, то консоль Windows напишет это

C:\Users\xxx>java -version
'java' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\xxx>

Всю JDK можно скачать по этой ссылке

https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html

Сразу хочу отметить, что скачивать что-либо с сайта www.oracle.com следкет через Tor браузер так как РФ у них числится санкционной территорией. Плюс нужна регистрация сайте oracle. Надо скачать файл jdk-11.0.16.1_windows-x64_bin.exe

Скачивается jdk-11.0.16.1_windows-x64_bin.exe очень долго. Порядка часа. Получив дистрибутив запускаем установку

Запоминает адрес установки C:\Program Files\Java\jdk-11.0.16.1\ Он нам пригодится при установке Jenkins.

Признаком того, что Java установилась служит сообщение версии Java

C:\Users\xxxx>java -version
java version "11.0.16.1" 2022-08-18 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.16.1+1-LTS-1)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.16.1+1-LTS-1, mixed mode)

C:\Users\xxxx>

Фаза 2: Установка Jenkins

Прежде всего Jenkins надо установить на NetTop. Допустим у вас Windows. Скачать дистрибутив можно с официального сайта https://www.jenkins.io/download/

Указываем путь установки

Надо указать, что сервер будет работало локально

Указывает порт на котором будет работать Jenkins. По умолчанию 8080

Вот тут как раз следует прописать путь к JDK. C:\Program Files\Java\jdk-11.0.16.1

Признаком работы Jenkins служит его появление в диспетчере задач

Как же открыть Jenkins? Надо в браузере и набрать этот URL

 http://localhost:8080

придется настроить Jenkins. Jenkins попросит admin password из файла C:\Program Files\Jenkins\jenkins.err.log

Также придется еще подождать пока произойдет настройка плагинов. Это примерно 30 мин.

осталось только придумать логин и пароль

Открыть браузер и указать снова URL http://localhost:8080

и вот долгожданное сообщение. Jenkins установился.

Теперь остается только наполнить сервер задачами. Тут их называют Job(ами)

Фаза 4: Создание задачи Job(а)

Как же создать Jenkins Job, первую сборку?

Открывает URL http://localhost:8080/. Нажимаем New Item,

Надо придумать название сборки.

Пишем название сборки nrf5340_dk_headset_app_cmake, выбираем Freestyle project

А вот тут очень важно. Надо активировать опцию удаления устаревших сборок (Discard old builds). Иначе Jenkins увеличит папку C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins\.jenkins\jobs до запредельных размеров. У меня как-то за полтора года набралось 79 GByte артефактов.

Надо указать адрес Workspace в котором данный Job будет искать скрипты сборки. То есть заполнить поле Use custom workspace

Надо указать при каких событиях будет происходить сборка. Самое простое это сказать, что надо собирать каждые 2 часа. Написать H H/2 * * *

Надо создать команду самой сборки. Нажимаем на кнопку Add build step

При работе в Windows выбираем Execute Windows batch command

Прописываем путь к скрипту сборки относительно корня репозитория. Тут как раз важно подчеркнуть, что сборки должны инициироваться скриптом. Даже если вы собираете из-под IDE вам придется разобраться как вызывать сборку IDE(шного) проекта из скрипта.

Последний шаг это сохранить артефакты. Нажимаем Add post-build action.

и выбираем вариант Archive the artefacts

И указывает конкретные расширения, которые надо сохранить

source/projects/board_build_cmake/build/**/*.elf, source/projects/board_build_cmake/build/**/*.hex, source/projects/board_build_cmake/build/**/*.bin, source/projects/board_build_cmake/build/**/*.dts, source/projects/board_build_cmake/build/**/*.map

надо прописать это в поле Archive the artifacts

Сборка настроена. Нажимаем Save.

Чтобы инициировать сборку надо нажать на кнопку Build Now. Как видно сборка собралась.

Тут сразу появилось множество интересных метрик: длительность сборки, размер прошивки, лог сборки, *.elf файл для отладки.

После всего этого вы можете конечно написать:

я не буду пользоваться сервером сборки потому, что у меня нет отдельного компьютера, а при работе в моём Workspace работающий Jenkins будет мне только мешать

Разруливается эта ситуация очень просто. Вы организуете на своем локальном компьютере 2 репозитория: workspace и release. Workspace для редактирования кода, а release для генерации release(ных) артефактов. Release репозиторий он, как бы, только read only. Release репозиторий пополнять только из git pull(ами). Это важно, чтобы гарантировать, что все зависимости проиндексированы и находятся в репозитории c кодом.

В идеале надо, конечно же, отдельный компьютер с сервером сборки (Зомбик), чтобы на него могли заходить все заинтересованный в артефактах: разработчики, тестировщики, интеграторы, клиенты. Общий доступ можно организовать через TeamViewer или RDP.

Вот теперь вы умеете накатывать Jenkins и можете даже учить этому других.

Возможные проблемы. (troubleshooting)
В один прекрасный день вы придете на работу откроете браузер и наберёте URL http://localhost:8080/

И у вас не откроется WEB GUI. Тут не надо предаваться судорогам конвульсиям и параличу.

Jenkins как шахматист записывает свои действия в файл C:\Program Files\Jenkins\jenkins.wrapper.log и можно проанализировать причину осечки.

Осечка в запуске сервера сборки может произойти по двум причинам.
1—При установки какой-то утилиты Вы переустановили виртуальную машину Java и теперь у вас java.exe оказался по другому пути в файловой системе. Например теперь он живёт тут
C:\Program Files\Java\jdk-11\bin\java.exe

2—TCP порт 8080 оказался занят каким-то другим приложением в операционной системе.

Можно открыть файл jenkins.xml и вручную прописать другой путь к java.exe и другой порт.

<!--
The MIT License

Copyright (c) 2004-2017, Sun Microsystems, Inc., Kohsuke Kawaguchi, Oleg Nenashev, and other Jenkins contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<!--
  Windows service definition for Jenkins.

  To uninstall, run "jenkins.exe stop" to stop the service, then "jenkins.exe uninstall" to uninstall the service.
  Both commands don't produce any output if the execution is successful. 
-->
<service>
  <id>jenkins</id>
  <name>Jenkins</name>
  <description>This service runs Jenkins automation server.</description>
  <env name="JENKINS_HOME" value="%ProgramData%\Jenkins\.jenkins"/>
  <!--
    if you'd like to run Jenkins with a specific version of Java, specify a full path to java.exe.
    The following value assumes that you have java in your PATH.
  -->
  <executable>C:\Program Files\Java\jdk-11\bin\java.exe</executable>
  <arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "C:\Program Files\Jenkins\jenkins.war" --httpPort=8080 --webroot="%ProgramData%\Jenkins\war"</arguments>
  <!--
    interactive flag causes the empty black Java window to be displayed.
    I'm still debugging this.
  <interactive />
  -->
  <logmode>rotate</logmode>

  <onfailure action="restart"/>
  
  <!-- 
    In the case WinSW gets terminated and leaks the process, we want to abort
    these runaway JAR processes on startup to prevent corruption of JENKINS_HOME.
    So this extension is enabled by default.
  -->
  <extensions>
    <!-- This is a sample configuration for the RunawayProcessKiller extension. -->
    <extension enabled="true" className="winsw.Plugins.RunawayProcessKiller.RunawayProcessKillerExtension" id="killOnStartup">
      <pidfile>%ProgramData%\Jenkins\jenkins.pid</pidfile>
      <stopTimeout>10000</stopTimeout>
      <stopParentFirst>false</stopParentFirst>
    </extension>
  </extensions>
  
  <!-- See the referenced examples for more options -->
  
</service>

Затем открыть от имени администратора диспетчер задач и на вкладке Службы через контекстное меню перезапустить Jenkins.

Вывод

Надеюсь этот текст поможет сомневающимся начать практики коллективной разработки софтвера и развернуть соответствующий DevOps для этого. Пользуйтесь серверами сборки. В этом нет, ровным счетом, ничего сложного.

Links

https://www.jenkins.io/doc/book/installing/windows/

https://www.dmosk.ru/miniinstruktions.php?mini=jenkins-ubuntu

https://habr.com/ru/companies/southbridge/articles/741358/

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Вы пользуетесь серверами сборки?

Проголосовали 45 пользователей. Воздержались 5 пользователей.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Вы пользуетесь Jenkins?

Проголосовали 52 пользователя. Воздержались 5 пользователей.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

У вас сервер сборки работает локально?

Проголосовали 36 пользователей. Воздержались 8 пользователей.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

У вас сервер сборки работает удаленно?

Проголосовали 34 пользователя. Воздержались 7 пользователей.

Jenkins – это система с открытым исходным кодом для автоматизированного тестирования, сборки и развертывания программного обеспечения. 

Image12

Изображение: rutube.ru

Программисты и команды разработки используют данную систему для достижения различных целей и задач. Ниже перечислим некоторые из них:

  • Непрерывная интеграция (CI, Continuous Integration)

Jenkins позволяет программистам интегрировать код из разных источников в общий репозиторий и автоматически выполнять сборку и тестирование при каждом обновлении кода. Это помогает обнаруживать и решать проблемы интеграции между компонентами приложения на ранних стадиях разработки.

  • Непрерывная доставка (CD, Continuous Delivery)

Помимо непрерывной интеграции, рассматриваемая система позволяет автоматизировать процесс развертывания приложения на целевой среде после успешной сборки и тестирования. Это упрощает и ускоряет процесс доставки новых версий приложения клиентам.

  • Автоматизация тестирования

Также, Jenkins может быть настроен для запуска автотестов (юнит-тестирование, интеграционное тестирование, тестирование производительности и другие его виды), что позволяет выявлять ошибки и баги в коде на ранних этапах разработки.

  • Отчетность и мониторинг

Jenkins предоставляет множество плагинов для генерации отчетов о сборках, тестировании и других метриках проекта. Это помогает командам разработки и менеджменту отслеживать прогресс и качество проекта.

В настоящей инструкции мы расскажем об установке и настройке Jenkins на Ubuntu, Windows и CentOS.

cloud

Предварительные требования

Перед началом установки Jenkins на выбранную ОС необходимо подготовить окружение. Вам понадобится:

  • Сервер или виртуальная машина с выбранной ОС. Важно, чтобы ваша машина была доступна по сети и имела статический IP-адрес.
  • Java Development Kit (JDK), так как Jenkins работает на платформе Java. Убедитесь, что на сервере или виртуальной машине установлена подходящая версия JDK. Рекомендуется JDK 8 или выше. Выполнить установку можно с официального сайта Oracle.

Мы рекомендуем устанавливать JDK 17, чтобы не столкнуться с проблемами при установке плагинов для Jenkins на этапе его настройки.

  • Пользователь с правами администратора.

После выполнения требований из прошлой главы ваша машина подготовлена к установке Jenkins. Данный процесс имеет свои особенности в зависимости от выбранной ОС. Именно поэтому мы индивидуально разберем установку рассматриваемого сервиса для Windows, Ubuntu и CentOS в отдельных подглавах.

Настройка Jenkins, в свою очередь, будет одинаковой для всех рассматриваемых ОС, поэтому мы не будем описывать ее несколько раз подряд, а выделим для этого отдельную главу, в которой опишем весь процесс в деталях.

Windows

Рассмотрим установку на Windows 11. 

  1. Чтобы установить Jenkins на Windows, перейдем на официальный сайт компании-разработчика и скачаем файл-установщик из списка для выбранной ОС.

Image11

  1. После окончания загрузки файла (jenkins.msi) запустим его для начала установки.
  2. В открывшемся окне установщика нажимаем кнопку «Next» и указываем путь, куда будет установлен сервис. Мы оставим все по умолчанию и перейдем к следующему шагу.
  3. Далее мастер установки предложит два варианта запуска службы:
    • Запуск от имени LocalSystem;
    • Запуск от имени локального или доменного пользователя.

В нашей инструкции мы выберем первый вариант. 

Image5

При необходимости вы можете перезапустить службу от локального пользователя после установки. О том, как это сделать, мы расскажем в конце данной главы.

  1. Следующим шагом необходимо выбрать порт, на котором будет запускаться служба. Мы оставим вариант по умолчанию и проверим, что он в данный момент доступен.

Image13

Зеленая галочка сигнализирует о том, что порт свободен и его можно использовать.

  1. Далее необходимо указать путь к ранее установленному JDK и нажать кнопку «Next».

Image2

  1. На заключительном этапе система предлагает пользователю установить дополнительные компоненты. Мы оставляем все по умолчанию и нажимаем кнопку «Next».
  2. И, наконец, кликаем по кнопке «Install» и дожидаемся окончания загрузки.
  3. Как только установка закончится, нажимаем кнопку «Finish».

Jenkins успешно установлен на Windows. Теперь вы можете перейти к главе с его настройкой.

Если пользователь решит перезапустить службу от локального пользователя, то ему необходимо открыть окно «Выполнить» (Win + R) и ввести в строку:

services.msc

В открывшемся окне в списке служб нужно найти Jenkins, а после нажать на него правой кнопкой мыши и выбрать «Свойства» из предложенных действий.

Image10

Далее необходимо перейти на вкладку «Вход в систему» и выбрать из двух предложенных вариантов последний, который называется «С учетной записью». Чтобы добавить пользователя, нажимаем на кнопку «Обзор…» и вводим его имя в самую нижнюю строку. После этого нажимаем на кнопку «Проверить имена». Если пользователь найден, то кликаем на «OK» и вводим его пароль в соответствующие формы.

После настройки запуска службы от локального пользователя обязательного перезапускаем Jenkins.

Ubuntu

Рассмотрим установку на Ubuntu 22.04. 

Напоминаем, что в вашей системе должна быть установлена Java. Без нее Jenkins не будет работать. 

  1. Чтобы установить Jenkins на Ubuntu, необходимо в первую очередь получить и добавить ключ GPG в систему. Для этого вводим в терминал:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null

Эта команда использует curl для загрузки ключа GPG с веб-сайта https://pkg.jenkins.io и sudo tee для импорта его в систему. Этот ключ будет использоваться для проверки подлинности источников пакетов.

  1. Далее добавим адрес официального репозитория Jenkins в список пакетов apt в Ubuntu:
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/null
  1. После добавления репозитория обновим список пакетов:
sudo apt update
  1. И, наконец, установим рассматриваемый сервис в систему:
sudo apt install jenkins
  1. Как только терминал сообщит об окончании установки Jenkins, запустим его:
sudo systemctl start jenkins

Проверить статус работы сервиса можно с помощью команды:

sudo service jenkins status

Как видно по картинке ниже, служба успешно запущена.

Image3

  1. Перед тем, как мы перейдем к настройке установленного сервиса, необходимо также настроить брандмауэр. Для начала разрешим входящие соединения через SSH:
sudo ufw allow OpenSSH

Далее запустим брандмауэр:

sudo ufw enable

Теперь откроем порт 8080, так как Jenkins использует именно его по умолчанию:

sudo ufw allow 8080

Теперь проверим, что внесенные изменения применились для брандмауэра:

sudo ufw status

Если в строке с портом 8080 в поле Action установлено значение ALLOW, а в поле FromAnywhere, значит внесенные изменения вступили в силу.

Image4

На этом процесс установки Jenkins на Ubuntu 22.04 окончен. Можно переходить к его настройке.

CentOS

Ниже опишем процесс установки Jenkins на CentOS 7. Он не сильно отличается от установки на Ubuntu, но имеет свои особенности.

  1. Чтобы установить Jenkins на CentOS 7, в первую очередь, загрузим файл репозитория и добавим его в jenkins.repo:
sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo
  1. Далее импортируем ключ GPG для проверки подлинности пакетов Jenkins:
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
  1. Теперь обновим все доступные пакеты yum:
sudo yum upgrade
  1. Как только все пакеты будут обновлены, можно начинать установку сервиса:
sudo yum install jenkins
  1. После установки Jenkins настроим автозапуск службы при загрузке системы:
sudo systemctl enable jenkins

Далее запустим службу:

sudo systemctl start jenkins

Чтобы проверить текущий статус службы, вводим в терминал:

sudo systemctl status jenkins

Как видно по картинке ниже, служба успешно запущена.

Image9

  1. И, наконец, настроим брандмауэр системы. Для этого откроем порт 8080:
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp

После изменения правил перезагрузим брандмауэр:

sudo firewall-cmd --reload

На этом установка сервиса окончена. Теперь можно переходить к его настройке.

Настройка Jenkins

После завершения установки Jenkins на Ubuntu, Windows или CentOS, необходимо выполнить его базовую настройку.

  1. В первую очередь перейдем по адресу http://localhost:8080 (для сервера: http://ip_адрес_сервера:8080), чтобы открыть веб-интерфейс установленного сервиса.
  2. Как только страница загрузится, пользователю будет предложено разблокировать Jenkins. Для этого необходимо ввести в единственную доступную строку пароль, который хранится по адресу, продемонстрированному на экране.

Image1

На картинке выше изображен пример для Windows 11. Для CentOS и Ubuntu адрес до пароля будет другим.

Как только пароль будет введен, нажимаем в правом нижнем углу кнопку «Continue».

  1. Далее пользователю будет предложено установить плагины, которые расширяют доступный функционал системы. Это можно сделать двумя способами:
    • Установить рекомендуемые плагины;
    • Самостоятельно выбрать плагины для установки;

Мы выберем первый вариант, которого будет достаточно для базовой настройки системы. 

Image8

Если у вас не скачиваются какие-либо из плагинов, то попробуйте переустановить Jenkins, используя другую версию JDK.

  1. По окончании установки плагинов, система предложит пользователю ввести данные для пользователя-администратора. После заполнения всех полей нажимаем кнопку «Save and Continue».

Image6

  1. Далее пользователю будет предложено настроить URL-адрес для Jenkins. Мы оставим предложенный вариант. При необходимости его можно будет поменять на другой в любой момент в настройках сервиса. 
  2. Сервис успешно настроен. Теперь нажимаем кнопку «Start using Jenkins» и ожидаем загрузки его стартовой страницы.

Как видно по картинке ниже, Jenkins готов к работе, а все стартовые плагины успешно установлены.

Image7

#подборки


  • 0

Разгоняем свой конвейер по сборке приложений.

Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.

Давным-давно, когда IT ещё только зарождались, программисты ездили в офис с огромными стопками перфокарт, чтобы закоммитить изменения. Те времена давно в прошлом, и теперь новые фичи вносятся в код непрерывно и почти сразу доставляются пользователям. Во многом это стало возможным благодаря системам потоковой сборки — таким, например, как Jenkins.

Из этой статьи вы узнаете:

  • что такое CI/CD;
  • что такое Jenkins;
  • чем он хорош;
  • как его установить
  • на Windows;
  • на Ubuntu;
  • как настроить Jenkins.

Эксперт

CTO Flocktory, программный директор профессии «DevOps-инженер» в Skillbox, директор программного комитета DevOpsConf.

В основе работы Jenkins лежит подход непрерывной разработки. Это значит, что разработчики добавляют новые функции в код постоянно, как бы собирая воедино кусочки пазла. Другой подход — итеративный, когда сначала пишется полноценная версия программы, а уже потом тестируется и публикуется.

Непрерывная разработка состоит из двух частей:

  • CI (continuous integration) — непрерывная интеграция. Идея в том, что все новшества в коде сразу добавляются в мастер-ветку проекта.
  • CD (continuous delivery) — непрерывная доставка. Результаты работы программистов доставляются на сервер приложения или в тестовую среду, где их проверяют тестировщики.

Оба понятия обычно используются вместе, отсюда и название подхода — CI/CD. Есть и другие практики бесперебойной доставки кода — если хотите узнать о них больше, почитайте наш вводный гайд по методологии DevOps.

Коротко шаги CI/CD-конвейера можно описать так:

  • Сборка. Разработчик пишет код по заданию и добавляет его к основному ПО в репозитории с помощью CI-инструментов (о них расскажем чуть позже).
  • Тестирование. Команда QA-инженеров проверяет код ручными или автоматическими способами. Если найдётся баг или дефект, код возвращают программистам на доработку.
  • Релиз. Заказчик смотрит на продукт и, если его всё устраивает, направляет его конечным пользователям.
  • Обратная связь и доработка. Пользователи оставляют свои отзывы о работе программы. На основе этих данных составляют новые ТЗ для программистов, и наш конвейер запускается снова.

Плюс такого подхода в том, что можно быстро доставлять новые фичи пользователям, не дожидаясь финального релиза. Но есть и обратная сторона: чтобы обслуживать конвейер, нужен целый штат тестировщиков и DevOps-инженеров, что может быть затратно для небольших компаний.

Jenkins — это фреймворк для непрерывной разработки, написанный на Java. Слово «фреймворк» означает, что вы можете гибко настраивать систему под свои нужды с помощью плагинов и расширений — например, подключить систему контроля версий, Yandex Cloud, Jira и многое другое.

Даже самые базовые функции в Jenkins — это, по сути, плагины, которые отвечают за разные этапы работы конвейера: от сборки до тестирования. Называется такой набор pipeline, и доступен он прямо «из коробки». Если нужны ещё расширения — их можно скачать из маркетплейса Jenkins.

Работает Jenkins по распределённой системе: есть ведущий мастер-сервер, который управляет всеми процессами и распределяет задачи, а есть слейв-серверы — агенты, которые снимают с мастера лишнюю нагрузку.

Обычно в проекте есть несколько слейв-серверов для разных задач: один — для разработки, второй — для тестирования, третий — для обработки запросов пользователей. Технически, пока приложение ещё не разрослось, его можно разрабатывать и на одном сервере. Но, если он вдруг упадёт, пострадают сразу все: и пользователи, и тестировщики, и программисты.

Инфографика: Оля Ежак для Skillbox Media

Ещё это полезно, если вы хотите написать несколько версий приложения под разные системы — например, одно под «Винду», а другое — под Linux или macOS. Тогда вполне уместно будет взять несколько слейв-серверов и на каждый из них накатить своё окружение.

Перечислим главные киллер-фичи этой системы.

  • Кросс-платформенность. Есть версии приложения для Linux, macOS и Windows.
  • Философия Open Source. Приложение можно использовать бесплатно, а его код доступен для изучения всем желающим.
  • Интеграция с облачными решениями: Azure, Google Cloud, DigitalOcean, Yandex Cloud и другими.
  • Развитое сообщество. Решение возможных проблем облегчается поиском уже решённых похожих случаев.
  • Много плагинов. В одном только маркетплейсе Jenkins их около 2000.
  • Подходит для сложных проектов. Но это можно отнести и к минусам, так как Jenkins может показаться «тяжеловатым» для мелких задач.

А теперь настало время запустить наш Jenkins-конвейер.

Так как Jenkins — это Java-приложение, для его установки нам потребуется соответствующая среда. Это комплект разработчика приложений на базе Java от Oracle — JDK (Java Development Kit).

Устанавливать будем на две системы — Windows 11 и Ubuntu 22.04. Начнём с «оконной» ОС.

Для начала подготовим окружение. Скачиваем последнюю модификацию комплекта JDK с официального сайта, в нашем случае это jdk-21_windows-x64_bin.exe.

Страница Oracle для выбора файла JDK
Скриншот: Oracle / Skillbox Media

Загрузка может занять до одного часа. После этого запускаем установочный файл.

Запуск установочного файла JDK на Windows
Скриншот: Oracle / Skillbox Media

Запоминаем или копируем путь установки: C:\Program Files\Java\jdk-21\, он нам ещё пригодится. Дожидаемся конца установки.

Завершение установки JDK на Windows
Скриншот: Oracle / Skillbox Media

Готово! Закрываем окошко, JDK установлен.

Теперь переходим к установке непосредственно Jenkins. Для этого переходим на страницу загрузки, выбираем Windows, скачиваем дистрибутив и запускаем установщик.

Запуск Jenkins на Windows и выбор способа входа в систему
Скриншот: Jenkins / Skillbox Media

В окне установки меняем способ входа в систему с дефолтного Run service as local or domain user на Run service as LocalSystem. Поля авторизации при этом деактивируются, но ничего страшного — логин и пароль мы введём позже.

Скриншот: Jenkins / Skillbox Media

Порт, на котором будет работать Jenkins, оставляем дефолтный — 8080.

Скриншот: Jenkins / Skillbox Media

Тестируем порт, нажимая кнопку Test Port.

Скриншот: Jenkins / Skillbox Media

Тестирование прошло успешно, на следующем шаге нам пригодится сохранённый ранее путь к JDK — у нас это C:\Program Files\Java\jdk-21\. Вводим путь к директории в окошко и жмём Next.

Скриншот: Jenkins / Skillbox Media

На следующем шаге соглашаемся на установку предлагаемых компонентов.

Скриншот: Jenkins / Skillbox Media

Установка Jenkins завершена!

Скриншот: Jenkins / Skillbox Media

Закрываем установщик и проверяем, появился ли нужный процесс в диспетчере задач.

Скриншот: Jenkins / Skillbox Media

Готово! Как подготовить программу к работе, мы расскажем в следующем разделе. А пока — разберёмся с Ubuntu.

Перед началом установки проверим, есть ли в системе пакет Java — без него Jenkins не будет работать. Чтобы это сделать, заходим в терминал (сочетанием клавиш Ctrl + Alt + T или через поиск) и вводим такую команду:

java -version

Если в ответ получаем ‘java’ not found, значит, пакета Java в системе нет.

Инструкция, как установить Java на Ubuntu

1. Первым делом зайдём на официальный сайт Oracle и скачаем пакет JDK для Linux. Нам нужен установочный файл x64 Compressed Archive.

Скриншот: Oracle / Skillbox Media

2. Копируем ссылку на скачивание файла и, используя команду wget, копируем установочный файл напрямую на наш компьютер.

wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz 

3. Создадим папку, в которую распакуем наш архив.

sudo mkdir -p /usr/lib/наша_папка

4. Вместо наша_папка подставляем своё название. Теперь в эту директорию распаковываем архив.

tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/lib/наша_папка

5. JDK будем устанавливать с помощью PPA (Personal Package Archive), добавляем его в список репозитория.

add-apt-repository ppa:linuxuprising/java

6. Обновляем список пакетов.

sudo apt update

7. Теперь устанавливаем непосредственно наш JDK 21.

sudo apt update

8. В процессе соглашаемся с правилами использования.

9. Готово! Проверяем успешность установки, запросив версию Java.

java -version

Если язык установлен успешно, консоль покажет версию Java. В нашем случае это 21-я.

1. Сначала получаем ключ шифрования GPG с помощью команды curl. Ключ нужен для проверки подлинности пакетов, загружаемых из репозитория Jenkins. Чтобы два раза не вставать, установим ключ в систему командой sudo tee.

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null

2. После этого добавим репозиторий Jenkins в список пакетов Ubuntu.

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
    https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
    /etc/apt/sources.list.d/jenkins.list > /dev/null

Корректность ввода адресов путей можно проверить на странице загрузки.

Скриншот: Jenkins / Skillbox Media

3. Снова обновляем список пакетов.

sudo apt update

4. Настало время установить Jenkins.

sudo apt install jenkins

5. После установки запускаем сервис.

sudo apt install jenkins

6. Проверяем статус работы.

sudo service jenkins status

В качестве ответа должна быть строка Active: active (running)…

7. И последний штрих. Чтобы Jenkins нормально работал, нужно открыть ему сетевой порт 8080 в брандмауэре. Для этого откроем SSH.

sudo ufw allow OpenSSH

8. Запустим брандмауэр.

sudo ufw enable

9. Откроем порт, необходимый для работы Jenkins.

sudo ufw allow 8080

10. Проверяем, что всё действительно открылось.

sudo ufw status

В качестве ответа должны быть строки, содержащие allow и Anywhere.

Вы восхитительны! Теперь Jenkins крутится на вашем сервере.

Чтобы начать настройку Jenkins, введите:

  • http://ip_сервера:8080 — для Ubuntu;
  • http://localhost:8080 — для Windows.

В остальном настройка будет выглядеть почти идентично на обеих системах. Мы будем рассматривать настройку под Windows.

1. После перехода по ссылке откроется окно разблокировки Jenkins. Здесь видим, пожалуй, единственное различие в системах — адрес файла с паролем. Для Ubuntu он будет отличаться от «виндового».

Скриншот: Jenkins / Skillbox Media

2. Вводим адрес в окошко Administrator password и нажимаем Продолжить.

3. Откроется окно с предложением установить плагины. Можно скачать дефолтный набор или выбрать плагины самому. Выбираем первый вариант.

Скриншот: Jenkins / Skillbox Media

4. Начинается загрузка.

Скриншот: Jenkins / Skillbox Media

5. Если что-то пошло не так и какой-то плагин не загрузился, нажимаем кнопку Retry и повторяем попытку.

Скриншот: Jenkins / Skillbox Media

6. После установки плагинов вводим данные авторизации: имя пользователя и пароль.

Скриншот: Jenkins / Skillbox Media

7. Сохраняем и получаем сообщение об успехе — Jenkins готов к работе!

Скриншот: Jenkins / Skillbox Media

8. Нажимаем кнопку Start using Jenkins и переходим в интерфейс программы.

Скриншот: Jenkins / Skillbox Media

Profit! Установка и настройка Jenkins закончена. Теперь он готов к выполнению наших задач.

Бесплатный курс по Python ➞

Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе.

Смотреть программу

Join the DZone community and get the full member experience.

Join For Free

Jenkins is one of the most popular tools for continuous integration and continuous delivery on any platform. A Java application, Jenkins has many plugins for automating almost everything at the infrastructure level. The use of Jenkins has widely increased rapidly due to a rich set of functionalities, which it provides in the form of plugins. In this tutorial, we will show a step by step guide on how to install Jenkins on a Windows platform.

Let’s get started.

First, you need to install JDK. Jenkins currently only supports JDK8. Once Java is running, you can install Jenkins. Click here to download the latest Jenkins package for Windows (currently it is version 2.130). Unzip the file to a folder and click on the Jenkins exe file.

Click «Next» to start the installation.

Click the «Change…» button if you want to install Jenkins in another folder. In this example I will keep the default option and click on the «Next» button.

Click the «Install» button to start the installation process.

The installation is processing.

When done, click the «Finish» button to complete the installation process.

You will automatically be redirected to a local Jenkins page, or you can paste the URL http://localhost:8080 in a browser.

To unlock Jenkins, copy the password from the file at C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword and paste it in the Administratorpassword field. Then, click the «Continue» button.

You can install either the suggested plugins or selected plugins you choose. To keep it simple, we will install the suggested plugins.

Wait until the plugins are completely installed.

The next thing we should do is create an admin user for Jenkins. Put in your details and click «Save and Continue.»

Click «Save and Finish» to complete the Jenkins installation.

Now, click «Start using Jenkins» to start Jenkins.

Finally, here is the default Jenkins page.

You can now start creating your continuous integration pipeline!

Jenkins (software)

Related

Содержание

Скачать Jenkins
Разрешить Log on as a service
Установка Jenkins
Дополнительная настройка при установке
Статьи про Jenkins

Скачать Jenkins

Скачать Jenkins можно

здесь

Убедитесь, что вы уже

установили Java 11

Скачать JDK 11 можно

здесь
— если у вас есть аккаунт Oracle
или

здесь

— если вы не хотите его создавать.

Разрешить Log on as a service

Сперва нужно определиться каким пользователем будет запускаться Jenkins. Я создам отдельного пользователя
JenkinsUser, но вы можете не создавать нового пользователя — в зависимости от предпочтений и прав
доступа.

Нужно дать этому пользователю возможность логиниться как сервису и запомнить его имя для
шага
в котом нужно будет выбрать
Logon Type

Зайдите в Local Security Policy -→ User Rights Assignment -→ Log on as a service

Log on as a service Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Нажмите Select Users or Groups → Check Names → Выберите пользователя

Log on as a service Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Установка Jenkins

Двойной клик на установочном файле → Нажать Next

Установка Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Выбрать директорию, в которую будет установлен Jenkins. Можно оставить Program Files
по умолчанию.

Как вариант — можно установить в директорию tools или dev или что-то в таком духе. Это короче и не содерижт пробела.

Установка Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Если у вас есть доступ к пользователю Administrator — можно выбрать его

Установка Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

На этом шаге я добавлю заранее созданного пользователя JenkinsUser

Установка Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Обычно для Jenkins используют порт 8080 если он свободен. Подробнее про сети можно прочитать

здесь

Установка Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Установка Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Установка Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Если вы не хотите вносить изменения в конфиг и вас устраивает автозапуск — нажмите Next

Установка Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Если вы хотите, чтобы Jenkins запускался автоматически — не убирайте Start Service.

В этом примере я убираю Start Service чтобы затем внести изменения в конфигурацию.

Установка Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Нажмите Install

Установка Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Установка Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Нажмите Finish

Установка Jenkins в Windows изображение с сайта www.eth1.ru

Установка Jenkins


www.eth1.ru

Дополнительная настройка Jenkins

В директории, в которой установлен Jenkins:

C:\Program Files\Jenkins или C:\tools\Jenkins

нужно отредактировать файл

jenkins.xml

<!—
<env name=»JENKINS_HOME» value=»%LocalAppData%\Jenkins\.jenkins»/>
<executable>C:\Program Files\jdk-11.0.0.1\bin\java.exe</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar «C:\Program Files\Jenkins\jenkins.war» —httpPort=8080 —webroot=»%LocalAppData%\Jenkins\war»</arguments>

<pidfile>%LocalAppData%\Jenkins\jenkins.pid</pidfile>
—>

<!— Если установлен в Program Files —>
<env name=»JENKINS_HOME» value=»C:\data\jenkins_home»/>
<executable>%JAVA_HOME%\bin\java.exe</executable>
<arguments>-Xrs -Xms3g -Xmx3g -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Djava.io.tmpdir=C:\Program Files\Jenkins\tmp\ -Dorg.apache.commons.jelly.tags.fmt.timeZone=Europe/Helsinki -Duser.timezone=Europe/Helsinki -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar «C:\Program Files\Jenkins\jenkins.war» —httpPort=8080 —webroot=»C:\Program Files\Jenkins\war» —pluginroot=»C:\Program Files\Jenkins\plugins»</arguments>
<pidfile>C:\Program Files\Jenkins\jenkins.pid</pidfile>

<!— Если установлен в tools —>
<env name=»JENKINS_HOME» value=»C:\data\jenkins_home»/>
<executable>%JAVA_HOME%\bin\java.exe</executable>
<arguments>-Xrs -Xms3g -Xmx3g -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Djava.io.tmpdir=C:\tools\Jenkins\tmp\ -Dorg.apache.commons.jelly.tags.fmt.timeZone=Europe/Helsinki -Duser.timezone=Europe/Helsinki -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar «C:\tools\Jenkins\jenkins.war» —httpPort=8080 —webroot=»C:\tools\Jenkins\war» —pluginroot=»C:\tools\Jenkins\plugins»</arguments>
<pidfile>C:\tools\Jenkins\jenkins.pid</pidfile>

Установка Jenkins


www.eth1.ru

В директории, в которой установлен Jenkins нужно создать директорию tmp

Автор статьи: Андрей Олегович

Статьи про Jenkins

Jenkins
Установка Jenkins
Основы Jenkins
Агенты
Jenkins Freestyle project
Jenkins Pipeline
Credentials
Задания по расписанию
Плагины
Разбор ошибок
DevOps
Docker
Make

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Asus p8h61 m lx2 драйвера windows 10 64
  • В чем назначение проводника в windows
  • Форматы файлов windows том сван
  • Как настроить проводной интернет на windows 10 на компьютере
  • Начал тормозить компьютер windows 10 как исправить