Привет!
Когда VexorCI начинался, мы решили, что для начала использования не обязательно писать файл конфигурации. Мы сами пытаемся догадаться, что именно нужно для запуска тестов и постоянно учим сервис распознавать новые настройки. Но мир разработки очень разнообразен, поэтому некоторым проектам конфиги необходимы.
За последние пару месяцев к Vexor подключилось 100 проектов. Очень разных проектов с уникальными настройками. За это время мы много узнали о том, как готовить файлы конфигурации так, чтобы это было удобно нашим юзерам. В процессе мы пересмотрели наш первоначальный подход и хотим поделиться с вами нововведениями.
Для того, чтобы понять, какие задачи нужно выполнить для подготовки окружения и запуска тестов в VexorCI, используется файл конфигурации vexor.yml. Этот файл находится в корне репозитория, либо генерируется автоматически. В нем указываются команды, которые будут выполнены для подготовки тестового окружения и запуска тестов.
Раньше, для того, чтобы преобразовать vexor.yml непосредственно в команды, которые выполняет воркер при запуске тестов, мы:
С такой схемой была масса проблем:
Решили ее переделать. Теперь мы:
Отказ от генерации гигантского shell скрипта позволил нам более гибко управлять развертыванием окружения, показывать нашим пользователям понятные сообщения об ошибках и забыть про сложноотлаживаемые баги в shell.
Для начала ипользования VexorCI писать конфиг совершенно не обязательно. Мы сами пытаемся догадаться, что именно нужно для запуска тестов. К сожалению, в старой версии происходили ситуации, когда задачи, сгенерированные по умолчанию, конфликтовали с задачами, указанными пользователем в файле конфигурации.
Для того, чтобы в дальнейшем избежать подобных конфликтов, все настройки связанные с базами данных, которые раньше были в ключе 'before_script', теперь должны быть в отдельном ключе — 'database'.
Использование отдельного ключа для баз данных делает конфигурацию проще и понятнее.
CCMenu — это популярное приложение, которые выводит статусы билдов в toolbar и позволяет быть всегда в курсе происходящего на CI сервере. Теперь проекты из VexorCI можно легко добавить в ССMenu.
Перейти страницу «Settings» проекта и скопировать «CCMenu URL».
![](https://habrastorage.org/r/w1560/files/1fb/04c/b98/1fb04cb98f3a4a979ef6877d18738972.png)
Вставить url в поле Feed url
![](https://habrastorage.org/r/w1560/files/cf9/8c2/4cd/cf98c24cd6044ff8af77423824a613dc.png)
Работает!
Теперь отслеживать статусы билдов стало еще удобнее.
Кстати, у нас есть еще одна отличная новость: 100 минут тестов каждый месяц стали бесплатными. Присоединяйтесь!
Когда 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».
![](https://habrastorage.org/files/1fb/04c/b98/1fb04cb98f3a4a979ef6877d18738972.png)
Вставить url в поле Feed url
![](https://habrastorage.org/files/cf9/8c2/4cd/cf98c24cd6044ff8af77423824a613dc.png)
Работает!
![](https://habrastorage.org/files/9d4/87f/571/9d487f5718344b2a9f34231994e94afb.png)
Теперь отслеживать статусы билдов стало еще удобнее.
Кстати, у нас есть еще одна отличная новость: 100 минут тестов каждый месяц стали бесплатными. Присоединяйтесь!