Найти тему

Jenkins для начинающих.

Оглавление

В прошлых заметках уже немного упоминал о том, что начал потихоньку разбираться с вопросами CI∕CD. Чтобы закрепить у себя и попутно нанести пользу моим 59 подписчикам решил запилить небольшую серию постов по этим экспериментам. Самые основы со скриншотами.

Для начала минимум терминологии, CI∕CD включает в себя 2 понятия:

  • Continuous integration (непрерывная интеграция) - подход при котором ПО раз в определенное время или после каждого коммита (обычно подразумевается одобренный коммит в мастер или dev) компилируется, тестируется и, если успешно прошло тесты, собирается в новую версию.
  • Continuous deployment (непрерывное развертывание) - подход при котором новый пакет приложения (или новые образы докера и т.д.) автоматически отправляются на боевой сервер и развертываются незаметно для пользователя.

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

Jenkins - программная система с открытым кодом на Java, которая как раз позволяет наладить непрерывную интеграцию и развертывание вашего проекта.

В этой части установим Jenkins и "подружим" с github, а уже в следующей накидаем наноприложение с тестами и напишем jenkins pipeline.

Установка Jenkins

Поскольку сам jenkins написан на Java, и в пайплайнах частично использует её синтаксис, перед установкой необходимо поставить openjdk-8-jdk.

$ sudo apt update
$ sudo apt install openjdk-8-jdk

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

$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
$ sudo apt update
$ sudo apt install jenkins

Проверить статус установленного сервиса можно так:

$ sudo systemctl status jenkins

Если приложение активно, вы должны будете увидеть что-то подобное:

После этого заходим в браузере на localhost:8080 и видим стартовую страницу настройки:

-2
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Получаем пароль для запуска -> устанавливаем необходимые плагины (можно просто выбрать установку по умолчанию) -> создаем профиль (для теста можно просто продолжить как админ.) -> Та-дааа! Можно создавать первый пайплайн.

Опционально.

Поскольку это тестовый запуск "на поиграться", можно отключить авторизацию с помощью пароля.

-> открываем файл /var/lib/jenkins/config.xml
-> меняем `<useSecurity>
true</useSecurity>` на false
-> в браузере прописываем localhost:8080/restart (или другую ссылку /restart, если вы меняли url при установке)

Настраиваем права доступа

Linux
Генерируем пару ssh ключей (чуть более подробно о генерации ключей
писал здесь).

Jenkins

В левом верхнем меню переходим во вкладку `credentials`

-3

кликаем по ссылке `(global)`

-4

И дальше в левом верхнем углу `add_credentials`

-5

В поле `Kind` создаваемых credentials выбираем `SSH Username with private key`

Указываем ваш `username`, используемый на github.

Заполняем `Description` так, чтобы вам было понятно, что это за ключ

`Private key` -> включаем `enter directly` -> жмем `Add`

Приватный ключ вставляем в открывшееся поле. Если указывали `Passphrase`, то её тоже необходимо указать здесь

OK.

-6

С Jenkins частью разобрались, теперь переходим к Github.

Github

Переходим в Settings

-7

Раздел SSH and GPC keys

-8

Жмакаем `new ssh key`

-9

Закидываем сюда Публичный ssh ключ, подтверждаем это все дело паролем

Поздравляю, Начало положено)

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

Чтобы не пропустить продолжение - подписаться можно сюда

#linux #devops #junior #jenkins #tutorial