Статьи

Непрерывная интеграция: установка Hudson

В этой серии руководств мы рассмотрим редко обсуждаемый (но очень ценный) процесс разработки программного обеспечения, который, к сожалению, отсутствует в мире iOS и мобильных устройств: непрерывная интеграция.


  1. Непрерывная интеграция: серия Введение
  2. Непрерывная интеграция: установка Tomcat
  3. Непрерывная интеграция: установка Hudson
  4. Непрерывная интеграция: создание сценариев для Xcode
  5. Непрерывная интеграция: улучшения скриптов

В первой части мы обсудили концепцию непрерывной интеграции и то, как она может помочь нам быстрее разрабатывать программное обеспечение. Во второй части мы продемонстрировали, как установить «Apache Tomcat», веб-сервер, на котором будет размещаться наше программное обеспечение CI.


Hudson — это сервер непрерывной интеграции с открытым исходным кодом, написанный на Java. Это один из наиболее популярных CI-серверов, используемых вместе с Jenkins и Atlassian’s Bamboo. Мы используем Hudson, потому что:

  • Это легко установить и настроить.
  • Это просто в использовании.
  • Доступна надежная поддержка плагинов.
  • Это бесплатно!

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


Хадсон играет важную роль в процессе КИ. Он контролирует хранилище кода и постоянно проверяет наличие обновлений. Как только он определит, что произошло обновление, он выполнит обновление / загрузку и начнет сборку. Важно отметить, что Хадсон не несет ответственности за само действие сборки. Он может вызывать только скрипт (который мы напишем), который будет выполнять сборку и архивирование. После запуска сценария Хадсон будет следить за сценарием. Если это не удастся, он сообщит о сломанной сборке.


Настройка Hudson очень проста. Сначала перейдите на сайт Хадсона по адресу http://hudson-ci.org/ , а затем нажмите на ссылку для загрузки последней производственной версии (2.1.2 на момент написания), это загрузит файл * .war.

После завершения загрузки переименуйте файл в «hudson.war» и поместите файл в папку «webapps» Tomcat:

1
mv hudson.war /usr/local/tomcat/webapps/

Если сервер в данный момент работает, перезапустите его, запустив сценарий завершения работы, подождите несколько секунд, а затем снова запустите сценарий запуска. Когда это будет сделано, откройте браузер и перейдите к:

HTTP: // локальный: 8080 / Hudson

Хадсон скажет вам, что это настраивает. Как только это будет сделано, вы увидите главный экран Гудзона.



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

Эта «работа» будет отвечать за мониторинг нашего хранилища, обновление и построение проекта. Нажмите на новую работу и введите название проекта / приложения в качестве имени работы. Выберите «Создать проект программного обеспечения в свободном стиле» в качестве типа работы. Это даст нам возможность адаптировать работу к нашим потребностям. Нажмите «ОК», когда вы закончите.


Далее нам нужно настроить параметры проекта. Важные разделы на этой странице: «Источник
Управление кодом »,« Триггеры сборки »и« Построение ».


В «Управлении исходным кодом» мы выбираем, какой тип репозитория мы используем, и выбираем URL. В этом примере я использую GIT, но Subversion следует тому же процессу.


Имейте в виду, что способ, которым вы подключаетесь к своему хранилищу, определит, как настроен этот раздел:

Вы можете столкнуться с проблемой, если вы используете HTTPS (имя пользователя и пароль) для соединения с GIT-репозиторием. В настоящее время Хадсон не поддерживает аутентификацию по паролю для GIT.

Для тех, кто использует SVN, просто введите в свой репозиторий URL-адрес, и он должен запросить у вас имя пользователя и пароль. Для пользователей GIT попробуйте ввести подробности следующим образом:

1
https://username:password@serverurl/username/reponame.git

Это должно работать для вас, если в вашем пароле нет символа «@», и в этом случае вы не сможете использовать HTTPS для аутентификации, вам придется использовать SSH.

Если вы используете SSH (используя закрытые / открытые ключи), вам необходимо убедиться, что вы сгенерировали SSH-ключ для своего сервера сборки и добавили его в свой менеджер репозитория.

Вам также необходимо убедиться, что отпечаток RSA сервера хранилища добавлен в список известных хостов до начала сборки. Самый простой способ сделать это — подключиться к серверу через SSH:

Вы должны увидеть что-то вроде этого:


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


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

Установите флажок «Опрос SCM» и введите (согласно изображению ниже):

* * * * *


Вам не нужно опрашивать его каждую минуту. Если вы хотите изменить это, чтобы делать это только ежедневно или ежечасно, вы можете установить это тоже. Имейте в виду, однако, что чем чаще мы опрашиваем репо, тем более продолжительным будет наш процесс.


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

Нажмите кнопку «Добавить шаг сборки» и выберите «Выполнить оболочку». Затем мы добавим команду, которая выполняет скрипт сборки из каталога проекта (мы еще не добавили это, мы собираемся сделать это позже).


Строка ‘$ Workspace’ на рисунке выше относится к рабочему каталогу проекта в том виде, в каком он существует в Hudson. Это верхний уровень вашего хранилища.

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


После сохранения настроек проекта вы вернетесь на панель инструментов Jobs. Через несколько секунд вы увидите запуск сборки. Нажмите на маленький значок терминала, чтобы увидеть результат сборки.


Мы можем видеть, что делает Хадсон. Он обнаружил изменение в SCM (в данном случае это первое соединение) и приступает к извлечению кода хранилища в рабочую область. Он делает все это успешно, однако терпит неудачу, когда пытается выполнить наш скрипт сборки.

Мы можем видеть из вывода, что это не удалось, поскольку файл сценария сборки еще не существует. Давайте добавим это в наш проект и добавим в репозиторий.



Добавьте папку с именем «Сценарии» в верхний уровень вашего хранилища. После создания в любом текстовом редакторе создайте файл с именем «build_script.sh» в папке «Scripts» со следующим текстом:

1
2
3
#!/bin/sh
  
echo “We’ll build later :)”

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

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

Все идет хорошо, вы должны увидеть что-то вроде следующего:


Теперь, когда файл существует, сборка не дает сбоя. Если вы посмотрите внимательно, вы также можете увидеть вывод нашего скрипта в 3-ей последней строке.


Прежде чем мы закончим, важно изучить несколько особенностей Hudson.

Если вы когда-нибудь захотите увидеть папку hudson, загляните в скрытую папку «.hudson» в вашей папке пользователя. Вы можете получить к нему доступ, выбрав go-> go to folder ‘(в поиске) и введя:

/ Users / /.hudson

Здесь происходит волшебство. Весь ваш код хранится в папке рабочей области под соответствующей работой. Для моего проекта (AwesomeApp) код будет храниться в:

/Users/abury/.hudson/jobs/AwesomeApp/Workspace

Важно понимать, где находятся файлы в каталоге Гудзона. У вас может быть проигнорированный файл, который вам нужно добавить вручную, или проблема SVN, которую вам нужно исправить.

Панель инструментов проекта позволяет просматривать все виды информации, полезной для мониторинга работоспособности сборки. Вы можете просмотреть журнал последних изменений (включая изменения, которые недавно прервали сборку).


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

Хадсон может уведомить вас о результате недавней сборки несколькими способами. Он поддерживает RSS-канал, который вы можете отслеживать, он может отправлять вам электронные письма, есть даже плагин, чтобы заставить его говорить! Когда у вас будет время, посмотрите, как настроить Hudson для использования этих функций.

В следующей статье мы разберем сценарий сборки, который скомпилирует и подпишет ваш код в файл .ipa, готовый для установки на iPhone или iPad. Мы рассмотрим основы bash, используемые команды и способы преодоления распространенных ошибок. Увидимся в следующий раз!