Запуск CI/CD Pipelines в Jenkins при коммите в SVN

Используемые термины: JenkinsCI/CD.

В данной инструкции мы рассмотрим настройку Jenkins и Subversion (SVN) для автоматического запуска процесса CI/CD при отправке коммита. Предполагается, что у нас уже установлены и Jenkins и SVN — соответствующие инструкции будут приведены в конце данного руководства.

Информацию разобьем на следующие разделы:

Подготовка к настройке

Необходимо заранее:

  1. Установить плагины SVN и Build Authorization Token Root на сервер Jenkins.
  2. Создать отдельную учетную запись для доступа к репозиторию SVN от Jenkins.

Рассмотрим эти процессы по отдельности.

Установка плагинов

В веб-интерфейсе Jenkins переходим в разделы Настроить Jenkins:

Управление плагинами:

На вкладке Доступные вводим название subversion и выбираем его для установки:

После вводим название Build Authorization Token Root, и также выбираем его для установки:

Внизу кликаем по Download now and install after restart:

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

systemctl restart jenkins

Создание учетной записи

На сервере SVN вводим:

htpasswd -m /etc/apache2/dav_svn.passwd jenkins

* данная команда создаст пользователя jenkins в файле /etc/apache2/dav_svn.passwd. В вашем случае путь до файла может быть другим.

После вводим дважды пароль:

New password: 
Re-type new password: 
Adding password for user jenkins

Настройка Jenkins

Переходим по ссылке Создать Item:

Вводим название для объекта и выбираем Создать задачу со свободной конфигурацией:

* мы дали название svn-integration.

Кликаем ОК.

На следующем шаге в подразделе Управление исходным кодом выбираем Subversion. В раскрывшейся форме вводим:

  • Repository URL — путь до нашего проекта в репозитории SVN.
  • Credentials — логин и пароль для подключения к репозиторию, который мы создали предварительно.

Остальные опции можно не трогать:

* в нашем примере предполагается, что исходники Jenkins будет забирать по адресу http://192.168.0.20/svn/repo1/. Также мы выбрали для аутентификации учетную запись jenkins (при первой конфигурации ее не будет — добавляем, кликнув по Add).

Теперь переходим к разделу Триггеры сборки и ставим галочку для Trigger builds remotely (e.g., from scripts). После придумываем в вводим токен:

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

date +%s | sha256sum | base64 | head -c 32 ; echo

В подразделе Build Steps можно выбрать выполнение команды shell и ввести любую команду (например, ls -l):

* в рамках данной инструкции у нас нет задачи собрать реальное приложение. Главное — настроить интеграцию репозитория Subversion и Jenkins.

Нажимаем Сохранить.

Попробуем проверить работоспособность нашего задания. Слева в меню кликаем по Собрать сейчас:

Немного ждем. Если все хорошо, мы увидим, примерно, такой вывод:

Задание выполнено успешно. Попробуем кликнуть на него и перейти в раздел Вывод консоли:

Мы должны увидеть содержимое нашего репозитория:

* в моем примере в репозитории был всего один файл test.txt.

Настройка SVN

Давайте для начала протестируем дистанционный запуск задания. На сервере SVN введем такую команду:

curl http://192.168.0.15:8080/buildByToken/build?job=svn-integration&token=OTZiZThiMWM0NGQ2NzlkZjdkMTFjNGM1

* в данном примере предполагается, что сервер с jenkins работает по адресу http://192.168.0.15:8080. В опции job мы передаем название нашего проекта (svn-integration), а OTZiZThiMWM0NGQ2NzlkZjdkMTFjNGM1 — токен, который мы придумали при настройке задания.

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

Теперь на сервере Subversion перейдем в каталог с нашим проектом, который мы интегрируем с Jenkins:

cd /var/lib/svn/repo1

* в моем примере он расположен в директории /var/lib/svn/repo1.

Создадим в каталоге hooks файл post-commit:

vi hooks/post-commit

#!/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

curl http://192.168.0.15:8080/buildByToken/build?job=svn-integration&token=OTZiZThiMWM0NGQ2NzlkZjdkMTFjNGM1

* скрипт post-commit позволяет выполнить необходимые команды после того, как мы выполнили коммит в репозиторий. В нашем примере мы выполняем запуск задания svn-integration, отправляя запрос в Jenkins.

Созданный файл должен иметь права на выполнение — выполним команду:

chmod +x hooks/post-commit

Готово. Попробуем выполнить коммит в наш проект. После переходим в веб-интерфейс Jenkins на страницу задания. Мы должны увидеть еще одну сборку (третью по счету):

Наша задача по интеграции выполнена.

Читайте также

Данные инструкции также могут быть полезными:

1. Установка Jenkins на CentOS.

2. Установка Jenkins на Ubuntu.

3. Использование pipeline в Jenkins.

4. Установка и настройка сервера SVN (Subversion) на Linux Ubuntu.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *