-
Notifications
You must be signed in to change notification settings - Fork 18
howto jenkins ci
jenkins-ci - сервер непрерывной интеграции. Описание непрерывной интеграции в wikipedia
Jenkins будем использовать как сервер для запуска по расписанию определенных команд.
Зависимости:
в отличии от официальных рекомендаций я использую запуск jenkins не в качестве сервиса, а просто запуск через bat файл. Поэтому скачиваю не инсталятор, а простой war файл. Запуск произвожу с помощью bat файла. В bat файле определяем переменную JENKINS_HOME - путь к каталогу, где у нас будет хранится все настройки и данные наших задач. По умолчанию в данном каталоге и будут находится наши выполняемые задачи и данные, для этих задач, так называемые job's workspace. Вот такой простой bat файл, позволяет вам добавить в автозагрузку запуск сервера jenkins. По умолчанию запускается на 8080 порте, в любом браузере переходим по адресу localhost:8080.
cd /d D:\Builds\jenkins
set JENKINS_HOME=D:\Builds\jenkins
start /MIN java -jar jenkins.war
rem java -jar jenkins.war
- ant : архив необходимо распаковать в любом удобном месте, указать переменную ANT_HOME, путь к распакованному архиву. Дополнительно в переменную PATH надо указать путь к bat файлу запуска ant, при указании переменной ANT_HOME, можно добавить в PATH такой путь %ANT_HOME%\bin;
set ANT_HOME=d:\builds\ant
set PATH=%PATH%;%ANT_HOME%\bin;
Итоговый bat файл будет выглядеть, так :
set ANT_HOME=d:\builds\ant
set PATH=%PATH%;%ANT_HOME%\bin;
cd /d D:\builds\jenkins
set JENKINS_HOME=D:\builds\jenkins
start /MIN java -jar jenkins.war
rem java -jar jenkins.war
Структура каталога D:\builds\ будет состоять из каталога ant и jenkins, git.
После запуска bat файла, переходим по адресу localhost:8080, удостоверились, что jenkins запустился. Необходимо настроить плагины, для настройки необходимо перейти Manage Jenkins(Настройки) -> Manage Plugins(Настройка плагинов) -> Обновить все плагины -> Перезапустить jenkins
Установить необходимые плагины(для установки выбираем вкладку Avialable(Доступные):
- Git Plugin
- FSTrigger Plugin - служит для определения изменения файлов и запуска задач, при изменении, в частности использую для определения, что в базе данных хранилища, что поменялось и необходимо запустить синхронизацию;
- Copy Artifact Plugin - для копирования файлов между проектами, например, одна задача проверяет изменения файлов и копирует их, вторая задача копирует эти же файлы не по сети, а с локального жесткого диска;
- Multiple SCMs Plugin - для возможности в одном сборочном каталоге располагать несколько репозитариев;
- JUnit - для парсинга результатов тестов и вывода их уже установлен по умолчанию, устанавливать не надо отдельно.
Отмечаем галочками необходимый набор плагинов и нажимаем "Download and install after restart"
Перезапускаем jenkins.
##Создание задачи
У jenkins есть 3 базовых группы выполнения job :
- Подготовительный - определяется необходимость выполнения задачи, то ли по расписанию, то ли по другому условию (например изменились исходные коды, проекта).
- Запуск сборки, тут может выполняться несколько шагов.
- Анализ результата - определяется успешно/неуспешно было выполнено, какие действия необходимо выполнить после выполнения задачи, например: отправить письмо о не успешности или запустить другую задачу.
При создании задачи, нам необходимо определить как минимум первые 2 шага. Для этого нам необходимо создать хранилище гит, для этого создадим новый проект git по пути D:\builds\git\upp , согласно справке создадим в этой папке 2 файла AUTHORS (можно оставить пустым) и VERSION(начальную версию ставим какую пожелаем, если у вас более 1000 версий, вряд ли вам будет выгодно сейчас запускать полную синхронизацию - это будет очень долго) и сделаем первый коммит.
Так же необходима, так называемая "сервисная база", взять можно здесь, простая база, созданна на основе "Инструменты разработчика", пользователь admin, папроль 1.
Заходим по адресу localhost:8080. Создаем новую задачу(проект), выбираем пункт "Новая задача(New Job)", пишем произвольное наименование, например sync1CtoGit и выбираем "Build a free-style software project" красивые скрнишоты на официальной странице есть.
В разделе "Управление исходным кодом( Source Code Management) в разделе Multiple SCMs нажимаем "Add SCM" и в выпадающием списке выбираем "Git", в поле "Repository URL" указываем путь к репозиторию v83unpack, это может быть как сетевой путь(https://github.com/pumbaEO/v83unpack.git), так и локальный (d:\builds\git\v83unpack). По умолчанию клонирование указанного репозитария будет происходить в корень проекта, нам этого не надо, т.к. там будет располагаться еще множество необходимых нам файлов, поэтому укажем путь для клонирования в v83unpack. Раздел "Additional Behaviours", нажимаем "Add" и "Check out to a sub-directory" в появившемся поле "Local subdirectory for repo" указываем v83unpack
Добавляем еще один репозиторий исходного кода, повторяем только теперь указываем путь к созданному нами репозиторию D:\builds\git\upp и "Local subdirectory for repo" указываем как src .
Можно запускать проект, в результате по пути D:\builds\jenkins\jobs\sync1CtoGit\workspace будет создана папка и в ней будут 2 папки v83unpack и src
в случаи ошибки клонирования, заходим в настройки jenkins (Глобальные настройки) и настраиваем путь к git.
Копируем в каталог D:\builds\jenkins\jobs\sync1CtoGit\workspace предварительно скаченную "сервисную базу", путь будет выглядеть так D:\builds\jenkins\jobs\sync1CtoGit\workspace\ibservice , копируем в корень папки workspace файл build.xml.
Добавляем "Шаг сборки (Add build step)" и выбираем Выполнить команду Windows (Execute Windows batch command) и пишем такой набор команд:
chcp 1251
echo f | xcopy q:\repo\upp\1cv8ddb.1CD %WORKSPACE%\1cv8ddb.1CD
ant syncrepo
Обратим внимание на строчку
echo f | xcopy q:\repo\upp\1cv8ddb.1CD %WORKSPACE%\1cv8ddb.1CD
путь q:\repo\upp\1cv8ddb.1CD указывает на файл базы данных хранилища 1С.
Все файлы скопированы, можно запускать синхронизацию для задачи sync1CtoGit выбираем команду "Собрать сейчас" , переходим на шаг сборки и смотрим вывод консоли
Видим на рисунке, что не удалось найти автора для следующей итерации и поэтому не прошла синхронизация. Uuid автора есть, имя как выглядит в хранилище тоже есть, поэтому можем смело добавить эти данные в файл AUTHORS нашего git хранилища, сделать commit и снова запустить синхронизацию. После некоторого ожидания, можно будет увидеть как в локальном репозитории src постепенно добавляются версии синхронизированные с хранилищем.