Автоматическая проверка кода с помощью Vexor


Я думаю многим известен сервис Hound, который занимается автоматической проверкой кода. Когда вы создаете новый Pull Request на GitHub, Hound запускает проверку вашего кода на основе таких решений, как rubocop, haml-lint или scss-lint. Если в процессе проверки всплывают какие-то проблемы, Hound сообщит об этом, добавив соответствующий комментарий в ваш Pull Request. Это отличный инструмент для работы, но как говорится, за всё хорошее, приходится платить.

Hound Price

Не каждая компания готова платить такие деньги, поэтому я решил пойти другим путём. За основу взял библиотеку pronto, которая из коробки умеет всё тоже самое, что и Hound. Осталось дело за малым - интегрировать pronto с Vexor. Далее идет пошаговая инструкция, что для этого понадобится сделать.

Первым делом заходим на GitHub и генерируем персональный токен.

Access Token

Затем, добавляем 2 переменные окружения в настройках вашего проекта на Vexor.

Env Variables

Далее, добавляем pronto и несколько его плагинов в Gemfile вашего проекта. Список доступных плагинов можно найти по этой ссылке.

group :test do
  gem 'pronto'
  gem 'pronto-brakeman', require: false
  gem 'pronto-coffeelint', require: false
  gem 'pronto-fasterer', require: false
  gem 'pronto-flay', require: false
  gem 'pronto-haml', require: false
  gem 'pronto-jshint', require: false
  gem 'pronto-rails_best_practices', require: false
  gem 'pronto-reek', require: false
  gem 'pronto-rubocop', require: false
  gem 'pronto-scss', require: false
end

Для запуска pronto нам потребуется создать файл bin/pronto:

#!/usr/bin/env ruby

require 'bundler/setup'
require 'pronto'
require 'pronto/cli'

begin
  Pronto::CLI.start
rescue Octokit::NotFound
  puts 'Pull Request Not Found'
end

И дать ему права на выполнение:

$ chmod +x bin/pronto

Теперь нам остаётся только добавить несколько команд в .vexor.yml:

language: ruby

script:
  - git remote set-branches origin '*'
  - git fetch
  - git checkout $CI_BRANCH
  - bin/pronto run -f github_pr -c $DEFAULT_BRANCH
  - bundle exec rake

И всё, можно проверять.

Pull Request

Кто-то может возразить, зачем всё это нужно, если есть overcommit? Новые разработчики на проекте часто забывают настроить overcommit и это обнаруживается только спустя несколько дней, когда другой разработчик не может отправить свои изменения на сервер. Чтобы исключить подобные ситуации, я рекомендую использовать эти инструменты вместе.

P.S. Хочу поблагодарить Сашу Кириллова, за помощь с интеграцией pronto и Vexor.

Similar posts

Update-informer v0.5.0

⭐️ Overview of key changes included in the new version

Dotenv-linter v3.1.0

⚡️ Overview of the key changes included in this release

GitHub Actions to guard your workflow

Automated code review with GitHub Actions 🐶

Dotenv-linter v3.0.0

⚡️Обзор ключевых изменений вошедших в новый релиз 🎉

Dotenv-linter: линтер .env файлов

⚡️Молниеносный инструмент для проверки .env файлов 🦀

Автоматическая проверка кода на Go

Обзор инструмента для автоматической проверки кода на Go.

Docker for Mac и Kubernetes

Небольшой эксперимент с Docker for Mac и Kubernetes.

Управление зависимостями через Homebrew

Управление внешними зависимостями проекта c помощью Homebrew Bundle.

Класс Set и уникальные коллекции объектов

Рассмотрим решение одной задачи с использованием класса Set и DDD.

Настройка Passenger для работы с Action Cable

Решаем проблему работы WebSocket-сервера через Phusion Passenger.