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

в 8:02, , рубрики: ccmenu, continuous integration, ruby, автоматизация тестирования, Блог компании VexorCI, Тестирование IT-систем

Привет!

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

Мы переделали генерацию скриптов для запуска.

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

Раньше, для того, чтобы преобразовать vexor.yml непосредственно в команды, которые выполняет воркер при запуске тестов, мы:

  1. Получали конфиг билда;
  2. Разбирали его;
  3. Генерировали большой bash script;
  4. Отправляли скрипт воркеру.

С такой схемой была масса проблем:

  • Очень сложно делались нетривиальные вещи, например, патчинг config/secrets.yml в Rails приложении.
  • Bash не самый удачный язык для написания больших объемов кода, была масса сложновылавливаемых багов.
  • Непонятные для пользователя сообщения об ошибках.

Решили ее переделать. Теперь мы:

  1. Получаем конфигурацию билда в yaml формате;
  2. Преобразуем в файл промежуточное представление, также в yaml формате. Сама структура файла сделана по аналогии с ansible (пример тут).
  3. Этот файл отправляется воркеру на выполнение.

Отказ от генерации гигантского 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».

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

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

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

Работает!

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

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

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

Автор: dmexe

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js