Содержание


Автоматизация сборки и развертывания артефактов платформы MobileFirst в рамках процесса непрерывной поставки

Comments

IBM® MobileFirst Platform (MFP) – это платформа для создания гибридных, нативных и веб-приложений. Эта платформа, разделенная на компоненты серверной стороны и компоненты клиентской стороны, позволяет сократить сроки выполнения проектов разработки мобильных приложений благодаря готовым к применению средствам управления безопасностью и приложениями, а также поддержке различных архитектур приложений. В категорию "компоненты серверной стороны" входят адаптеры для формирования данных, пригодных для потребления мобильными приложениями, например, в формате JSON. Эти адаптеры можно подключать к различным бэкенд-системам, в том числе к веб-сервисам на основе SOAP и к более современным RESTful-интерфейсам. Библиотеки клиентской стороны предоставляют функции для поддержки безопасности, оффлайнового хранилища и компонентов iBeacon, для передачи данных между гибридными и нативными представлениями, а также для многих других технологий клиентской стороны, основанных на Apache Cordova. При сборке компонентов клиентской стороны двоичный файл платформы MFP (.wlapp) создается и развертывается на сервере вместе с двоичным файлом для целевой платформы (.apk для Android, .ipa для iOS).

Для сборки мобильного приложения для платформы MFP можно воспользоваться инструментом IBM MobileFirst Studio (на базе Eclipse IDE) или интерфейсом командной строки платформы IBM MobileFirst. Когда вы используете какой-либо из этих инструментов, он запускает процесс, который формирует все адаптеры, все MFP-приложения (если в проекте несколько приложений) и все настройки для среды исполнения проекта (WAR-файл сервера). Когда развертываете проект на сервере, после установки среды исполнения проекта осуществляется развертывание адаптеров и приложений. Чтобы развернуть проект в тестовой среде, необходимо выполнить сборку компонентов специально для этой среды. Инструментарий командной строки (CLI-инструментарий) для этого не подходит, однако среда Eclipse позволяет решить эту задачу. Компоненты сборки можно развернуть с помощью консоли сервера. Ant-задачи, поставляемые вместе с платформой MFP, позволяют создать конвейер непрерывной интеграции (continuous integration, CI) для автоматизации процесса сборки и развертывания, а также процесса создания и конфигурирования MFP-сервера.

Структура статьи

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

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

  • MFP Server -- Загрузите продукт MFP V6.3 Server
  • MFP CLI
  • Платформа MFP поставляется со скриптами для конфигурирования сервера для работы с различными базами данных. Для простоты в этой статье используется база данных Apache Derby. При использовании базы данных IBM DB2 процесс будет почти таким же – потребуется лишь другая Ant-задача с иными параметрами.
  • Apache Ant
  • Оболочка Unix, например, Bash или Zsh
  • WebSphere Application Server Liberty Profile – вы можете загрузить отдельную среду исполнения Liberty Profile Developer Edition или использовать среду, предоставляемую вместе с инструментом MFP CLI.

Необходимые файлы и учебный проект

Учебный проект с кодом, используемым в этой статье, можно загрузить с сайта GitHub. Соответствующий репозитарий содержит MFP-проект с простым веб-приложением, у которого имеется кнопка для вызова адаптера, возвращающего пользователю текущую дату. Ниже показана структура этого проекта, включая добавление нового каталога с именем ciBuild, который содержит скрипты сборки, описанные в этой статье.

Каталог ciBuild должен содержать Ant-задачу build.xml, упакованную с помощью инструментария MFP CLI. Файлы configure-liberty-derby.xml и configure-liberty-db2.xml, поставляемые вместе с продуктом MFP Server, содержат определения Ant-задач, которые создают записи базы данных, используемые средой исполнения проекта, а также административные сервисы. Эти файлы также содержат задачи для развертывания служебных WAR-файлов (worklightconsole.war и worklightadmin.war) и среды исполнения проекта.

Отыскание необходимых JAR-файлов и XML-файлов

Для создания и развертывания компонентов MFP-проекта, таких как файлы adapter и wlapp, требуется Ant-файл build.xml. Он находится в каталоге установки CLI-инструментария вместе с JAR-файлами, которые использует этот инструментарий. Каталог /Applications/IBM/MobileFirst-CLI/mobilefirst-cli/node_modules/generator-worklight-server/lib directory содержит следующие JAR-файлы.

  • worklight-ant-deployer.jar -- Требуется для развертывания артефактов, сгенерированных сборкой, на MFP-сервере.
  • ant-contrib-1.0b3.jar -- Содержит несколько дополнительных Ant-функций, используемых файлом build.xml, таких как определение цикла for для итеративного прохождения по каталогу адаптеров.
  • worklight-jee-library.jar -- Содержит ядро продукта. Скрипт configure-liberty-derby.xml может указывать на этот файл при конфигурировании сервера в отсутствие полной установки MFP.
  • worklightconsole.war и worklightadmin.war -- Служебные WAR-файлы, необходимые для администрирования сервера и управления им.

В этом каталоге также находится файл build.xml, который требуется для исполнения GitHub-проекта. Файл build.xml содержит определение всех задач, необходимых для сборки и развертывания MFP-компонентов. Скопируйте файл build.xml into the ciBuild directory at the root of the project. Чтобы сконфигурировать сервер для базы данных, требуется дополнительный XML-файл с именем configure-liberty-db2.xml, находящийся в следующем месте: /Applications/IBM/MobileFirst_Platform_Server/WorklightServer/configuration-samples/. Если вместо Derby вы используете DB2, добавьте файл configure-liberty-db2.xml в каталог ciBuild.

JAR-файл MFP-проекта (worklight-ant-builder.jar) для сборки таких компонентов, как среда исполнения проекта и адаптеры, расположен в каталоге ant-tools, находящемся в следующем месте:/Applications/IBM/MobileFirst-CLI/mobilefirst-cli/node_modules/generator-worklight-server/ant-tools.

Чтобы обеспечить возможности для сборки конвейера непрерывной интеграции и для исполнения учебного проекта, скопируйте все эти JAR-файлы в каталог внутри своего проекта. Это позволит вам запускать сборку из различных мест, например, на сервере без установленной платформы MFP. Управление скриптами в рамках SCM обеспечивает контроль их версий. В каталоге ciBuild учебного проекта содержится папка с именем ant_jars для JAR-файлов, которые требуются процессу сборки. Создайте в своем проекте каталог ciBuild для хранения связанных со сборкой компонентов, как в учебном проекте. Каталог ant_jars в учебном проекте не содержит никаких JAR-файлов, поэтому необходимо скопировать их в этот каталог согласно изложенным выше инструкциям. После этого каталог ciBuild должен содержать следующие JAR-файлы для исполнения учебного проекта.

  • ant-contrib-1.0b3.jar
  • hsqldb-2.2.5.jar
  • worklight-ant-builder.jar
  • worklight-ant-deployer.jar
  • worklight-jee-library.jar

Работа с файлом build.xml

В учебном проекте имеются три Bash-скрипта (скрипта на языке оболочки), которые вызывают Ant-задачи с соответствующими параметрами. Файлы mfp-ci-derby-install.sh и mfp-ci-build.sh импортируют файл common-functions.sh file и исполняют отдельные функции.

common-functions.sh

Скрипт common-functions.sh содержит отдельные компоненты процесса сборки, разделенного на функции, к которым могут обратиться другие Bash-скрипты. Эта структура образует платформу для повторного использования компонентов по мере наращивания конвейера непрерывной интеграции. Для успешного исполнения требуется экспорт нескольких переменных в начале файла common-functions.sh. Относительно этих переменных настраиваются некоторые другие переменные, поэтому их важно правильно сконфигурировать.

 export USER="/Users/devworks" export LIBERTY_TARGET="$USER/Documents/LibertyProfile" export WORKLIGHT_INSTALL_DIR="/Applications/IBM/MobileFirst_Platform_Server"

Показанная выше переменная $USER обязательна, поскольку для конфигурирования базы данных Derby, используемой серверными компонентами MFP, требуется абсолютный маршрут к каталогу. Переменная$LIBERTY_TARGET представляет собой местоположение файлов сервера WebSphere Application Server Liberty; она должна содержать каталог wlp. Переменная $WORKLIGHT_INSTALL_DIR указывает местоположение, в котором должен быть установлен сервер MobileFirst. На платформе Mac эта переменная по умолчанию имеет значение /Applications/IBM/MobileFirst_Platform_Server.

Первой внутри скрипта common-functions.sh является функция setEnvironment(), содержащая другую серию операций экспорта, соответствующих целевой среде для сборки непрерывной интеграции. По умолчанию значения для создания и сборки сервера являются локальными, однако можно указать и значения для удаленного сервера. Эта функция позволяет иметь разные значения для каждой среды сборки, например, для среды разработки, для среды тестирования и для рабочей среды.

mfp-ci-derby-install.sh

Скрипт mfp-ci-derby-install.sh выполняет следующие действия.

  • Останавливает существующий сервер, если он функционирует
  • Удаляет сервер Liberty и базу данных Derby, если они существуют
  • Создает новый сервер
  • Устанавливает базу данных Derby для административных сервисов и среду исполнения проекта
  • Устанавливает административные WAR-файлы (worklightconsole.war и worklightadmin.war)
  • Устанавливает среду исполнения проекта
  • Запускает созданный сервер

mfp-ci-build.sh

Скрипт mfp-ci-build.sh выполняет следующие действия.

  • Собирает среду исполнения проекта (WAR-файл проекта)
  • Собирает приложения и адаптеры (файлы с расширениями .wlapp и .adapter)
  • Выполняет те же шаги, что и скрипт mfp-ci-derby-install.sh, для развертывания среды исполнения проекта
  • Развертывает сгенерированные артефакты сборки на созданном сервере

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

Исполнение учебного проекта

Чтобы выполнить учебный проект, скопируйте необходимые XML-файлы и JAR-файлы в соответствующее место и отредактируйте экспорт в начале скрипта common-functions.sh, как было описано выше. Все остальные переменные задаются в соответствии с MFP-проектом, в рамках которого исполняется этот скрипт. После завершения редактирования запустите скрипт mfp-ci-build.sh на исполнение в терминале. Развернутые в результате этого приложение, адаптеры и среда исполнения будут находиться по адресу http://localhost:9080/worklightconsole/index.html, а двоичные файлы сборки - в каталоге bin проекта.

Сборка компонентов: среда исполнения, адаптеры и приложения

Для сборки среды исполнения проекта можно воспользоваться определением задачи build-war внутри файла build.xml. Сборку осуществляет функция buildWar() в файле common-functions.sh. В эту функцию передаются такие сведения, как местоположение проекта, имя проекта и местоположение JAR-файлов инструмента Ant. Эта функция является первым компонентом, вызов которого осуществляет скрипт mfp-ci-build.sh после задания переменных среды.

Аналогичным образом определяемые функции собирают файлы .wlapp и .adapter. Эти функции поочередно вызывают предоставленные платформой MFP Ant-задачи build-Apps и build-Adapters. Они определены в скрипте common-functions.sh, а их вызов осуществляет скрипт mfp-ci-build.sh. Они передаются в виде значений таким же образом, как и для функции buildWar(). В функциюbuildApps() передается URL-адрес внешнего сервера. Это гарантирует, что внутри приложения, развернутого на устройстве, будет сконфигурирована корректная оконечная точка. Выходная информация всех этих функций расположена в папке bin в корне проекта.

Развертывание компонентов

Существует несколько способов развертывания среды исполнения проекта (WAR-файла).

Если среда исполнения MFP уже была развернута раньше, вы можете остановить сервер, скопировать новый WAR-файл поверх соответствующего старого файла и перезапустить сервер. В качестве опции перед повторной установкой с помощью задачи install можно с помощью Ant-задачи uninstall удалить с сервера имеющуюся конфигурацию.

Другой способ состоит в том, чтобы переустановить сервер с нуля. Этот способ предпочтительнее, поскольку для каждой сборки выделяется чистая неиспользованная среда. Скрипт mfp-ci-derby-install.sh очищает среду и базы данных перед созданием нового сервера и установкой всех необходимых компонентов, а также среды исполнения сервера. Скрипт common-functions.sh содержит функцию deployWar() для всех шагов, включенных в этот процесс. Каждая вызываемая при этом функция определяется независимо внутри скрипта common-functions.sh. После выполнения этого шага вы будете располагать сервером без развернутых приложений или адаптеров, как показано ниже.

В функцию install() передается параметр ($1) Ant-задачи для вызова – например, параметр adminstall дает этой функции указание установить WAR-файлы admin и console. Эта функция вызывается четыре раза, по одному разу для каждой задачи, которую она должна выполнить: admdatabases, databases, adminstall и install. Параметры передаются так же, как и в других функциях. При такой передаче параметров в Ant-задачи, если вызываемая задача не использует переменную, эта переменная не оказывает никакого влияния. В задачу необходимо передать имена баз данных и местоположение продукта Liberty Profile, на котором следует сконфигурировать сервер.

Чтобы развернуть файлы приложений и адаптеров, воспользуйтесь Ant-задачами deploy-Apps и deploy-Adapters. Реализацию этих задач осуществляют функции deployApps() и deployAdapters(). Как уже говорилось, в них передаются переменные, включая имя пользователя/пароль для консоли MFP, а сами они загружаются с помощью административных сервисов. В нашем учебном проекте консоль находится в корневом контексте /worklightadmin, однако она может находиться и в каком-либо другом месте, поэтому проверьте контекст в имеющемся у вас файле server.xml.

Инструменты

Jenkins

Jenkins – это диспетчер непрерывной интеграции и сборки с открытым исходным кодом. Он автоматически инициирует сборку, а также другие задачи, связанные со сборкой программного обеспечения, такие как отображение тестовых графов и других данных сборки. Инструмент Jenkins широко используется в качестве диспетчера сборки; для него создано более 1000 плагинов с открытым исходным кодом. Имеются и другие инструменты, которые можно использовать в качестве диспетчера сборки, такие как IBM Rational® Urban Code.

Git Webhooks

Инструмент Webhooks позволяет осуществлять интеграцию между сервером сборки и Git-репозитарием, подписанным на определенные события. При инициировании события вы получаете запрос HTTP POST на определенный URL-адрес. Инструмент Webhooks можно использовать для открытия и закрытия тикетов в системе отслеживания проблем, для запуска сборок и для отсылки информации о статусе по электронной почте.

Перезапись JNDI

В конфигурационном файле server.xml сервера Liberty можно настроить JNDI-записи, которые затем будут перезаписывать соответствующие переменные в компонентах серверной стороны платформы MFP. Этот метод позволяет создать артефакты один раз, а затем развертывать их в нескольких средах. Например, у вас могут иметься файлы адаптеров, которым для достижения конечной точки требуется прокси-доступ. Если вы перемещаете свой адаптер из среды в среду B, вы можете сконфигурировать конечную точку как переменную в файле worklight.properties для среды A, а затем переопределить ее посредством с помощью JNDI-записей в файле server.xml для среды B.

Bash или не Bash?

В этом учебном пособии инструмент Bash использовался для управления сборкой и развертыванием MFP-компонентов, однако в вашем конвейере для этой цели можно использовать несколько других инструментов. Один из методов состоит в непосредственном вызове отредактированного соответствующим образом Ant-файла build.xml с жестко закодированной конфигурацией для каждой среды. Не используйте этот метод с новым выпуском продукта, в состав которого может входить новый файл build.xml. Отсутствие необходимости в редактировании этого файла во время модернизации – достаточно реконфигурировать его применение – экономит времяe.

Сборка двоичных файлов мобильного приложения и развертывание их в AppCenter

В данное учебное пособие не включены инструкции по сборке двоичных файлов, предназначенных для развертывания на мобильном устройстве. Тем не менее вы можете автоматизировать этот шаг, используя инструмент Ant для сборки гибридных Android-проектов и инструмент Xctool для сборки iOS-приложений. После этого вы сможете автоматически развернуть эти двоичные файлы на ресурсе MFP ApplicationCenter с помощью инструментария, поставляемого вместе с платформой MFP. Соответствующие инструкции приведены в разделе Command-line tool for uploading or deleting an application (Инструмент командной строки для загрузки или удаления приложения) справочной системы по платформе MFP. При наличии этих двух дополнительных элементов вы сможете создать конвейер непрерывной интеграции для сборки среды, мобильных приложений и адаптеров. Затем вы сможете развернуть полученные артефакты на ресурсе MFP Application Center, откуда группы тестирования будут загружать их на свои устройства.

Заключение

В статье было показано, как собирать и развертывать различные MFP-компоненты (такие как адаптеры, приложения и WAR-файлы) с помощью Ant-задач, поставляемых вместе с продуктом. Демонстрация библиотек, необходимых для сборки и развертывания этих компонентов, вместе с примерами их использования – это базовые требования по построению конвейера непрерывной поставки. Рассмотренный в статье учебный проект может служить отправной точкой для разработчиков, которые хотят автоматизировать сборку и развертывание своих MFP-проектов и сред.


Ресурсы для скачивания


Похожие темы


Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Мобильные приложения, WebSphere
ArticleID=1018375
ArticleTitle=Автоматизация сборки и развертывания артефактов платформы MobileFirst в рамках процесса непрерывной поставки
publish-date=10232015