Привет!
Когда 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».
Вставить url в поле Feed url
Работает!
Теперь отслеживать статусы билдов стало еще удобнее.
Кстати, у нас есть еще одна отличная новость: 100 минут тестов каждый месяц стали бесплатными. Присоединяйтесь!
Автор: dmexe