VexorCI: как мы готовим файлы конфигураций

Привет! Когда VexorCI начинался, мы решили, что для начала использования не обязательно писать файл конфигурации. Мы сами пытаемся догадаться, что именно нужно для запуска тестов и постоянно учим сервис распознавать новые настройки. Но мир разработки очень разнообразен, поэтому некоторым проектам конфиги необходимы.За последние пару месяцев к Vexor подключилось 100 проектов. Очень разных проектов с уникальными настройками. За это время мы много узнали о том, как готовить файлы конфигурации так, чтобы это было удобно нашим юзерам. В процессе мы пересмотрели наш первоначальный подход и хотим поделиться с вами нововведениями.

Мы переделали генерацию скриптов для запуска.Для того, чтобы понять, какие задачи нужно выполнить для подготовки окружения и запуска тестов в VexorCI, используется файл конфигурации vexor.yml. Этот файл находится в корне репозитория, либо генерируется автоматически. В нем указываются команды, которые будут выполнены для подготовки тестового окружения и запуска тестов.Раньше, для того, чтобы преобразовать vexor.yml непосредственно в команды, которые выполняет воркер при запуске тестов, мы:

Получали конфиг билда; Разбирали его; Генерировали большой bash script; Отправляли скрипт воркеру. С такой схемой была масса проблем: Очень сложно делались нетривиальные вещи, например, патчинг config/secrets.yml в Rails приложении. Bash не самый удачный язык для написания больших объемов кода, была масса сложновылавливаемых багов. Непонятные для пользователя сообщения об ошибках. Решили ее переделать. Теперь мы: Получаем конфигурацию билда в yaml формате; Преобразуем в файл промежуточное представление, также в yaml формате. Сама структура файла сделана по аналогии с ansible (пример тут). Этот файл отправляется воркеру на выполнение. Отказ от генерации гигантского shell скрипта позволил нам более гибко управлять развертыванием окружения, показывать нашим пользователям понятные сообщения об ошибках и забыть про сложноотлаживаемые баги в shell.Мы немного изменили назначение ключей в файле конфигурации. Для начала ипользования VexorCI писать конфиг совершенно не обязательно. Мы сами пытаемся догадаться, что именно нужно для запуска тестов. К сожалению, в старой версии происходили ситуации, когда задачи, сгенерированные по умолчанию, конфликтовали с задачами, указанными пользователем в файле конфигурации.Для того, чтобы в дальнейшем избежать подобных конфликтов, все настройки связанные с базами данных, которые раньше были в ключе 'before_script', теперь должны быть в отдельном ключе — 'database'.

# было before_script:  — rake db: create  — rake db: migrate # стало database:  — rake db: create  — rake db: migrate Использование отдельного ключа для баз данных делает конфигурацию проще и понятнее.

Мы добавили поддержку CCMenu. CCMenu — это популярное приложение, которые выводит статусы билдов в toolbar и позволяет быть всегда в курсе происходящего на CI сервере. Теперь проекты из VexorCI можно легко добавить в ССMenu.Перейти страницу «Settings» проекта и скопировать «CCMenu URL».

1fb04cb98f3a4a979ef6877d18738972.png

Вставить url в поле Feed url

cf98c24cd6044ff8af77423824a613dc.png

Работает!

9d487f5718344b2a9f34231994e94afb.png

Теперь отслеживать статусы билдов стало еще удобнее.

Кстати, у нас есть еще одна отличная новость: 100 минут тестов каждый месяц стали бесплатными. Присоединяйтесь!

© Habrahabr.ru