Интеграция со средствами выпуска сборок позволяет реализовывать следующие типовые сценарии:
Процесс сборки продукта, его тестирование и выкладка настолько индивидуальны для каждой компании-разработчика, что любое готовое решение сразу будет ограничивать разработчика в возможностях. Мы не создаем готовых интеграций со средствами выпуска сборок. Мы пошли по пути интеграции через REST API.
Популярные и бесплатные инструменты выпуска сборок: Jenkins, TeamCity.
Пример команды для публикации сборки (под Linux):
curl -X POST -H "Devprom-Auth-Key: 974ccbfadd36dcc44fb8c1dda9bdb6fd" https://demo.myalm.ru/pm/project73/api/v1/builds -d '{"Caption":"","Description":"","BuildRevision":{"Version":""},"State":"inprogress"}'
Тоже самое, но под Windows:
curl -X POST -H "Devprom-Auth-Key: 974ccbfadd36dcc44fb8c1dda9bdb6fd" https://demo.myalm.ru/pm/project73/api/v1/builds -d "{\"Caption\":\"\",\"Description\":\"\",\"BuildRevision\":{\"Version\":\"\"},\"State\":\"inprogress\"}"
Пример команды изменения статуса сборки (под Windows):
set /p APP_VERSION=<build\version.txt
set REST_JSON={\"Caption\":\"%APP_VERSION%\",\"State\":\"deployed\",\"Description\":\"https:\/\/trunk.myalm.ru\"}
set REST_URL= http://hq.devprom.ru/pm/core/api/v1/builds
build\tools\curl -X POST -H "Devprom-Auth-Key: 49191a9f577317588fdaf37304ec1191" %REST_URL% -d "%REST_JSON%"
EXIT /B 0
В приведенном выше примере в файле build\version.txt каким-то образом заранее сохраняется полная версия продукта.
Ручной запуск сборки из ALM рассмотрим на примере интеграции с Jenkins.
Сборкой и автоматическим тестированием занимается Job с названием "alm-deploy-test", который принимает следующие параметры:
Создаем пользовательское действие для сущности Репозиторий с названием "Собрать сборку" и добавляем:
В URL для веб-хука передаются параметры (те что в двойных фигурных скобках):
Теперь в контекстном меню для Репозитория добавляется пункт "Собрать сборку", при выборе которого система запросит уточнение по типу СУБД и затем вызовет веб-хук на стороне Jenkins.
В "Журнале событий" можно отслеживать выполнение данного пользовательского действия после вызова.