В этой статье мы настроим хук предварительной фиксации GitHub, используя гем предварительной фиксации в Ruby On Rails, и мы будем использовать хуки Git для запуска Rubocop, Brakeman и Rspec.

Описание изображения



Что такое GitHub Pre-commit Hook?

Хук Pre-commit запускается перед вводом сообщения фиксации. Он в основном используется для анализа или запуска тестов, чтобы убедиться, что все работает. Хуки перед фиксацией очень полезны для поддержания стандартов кодирования и продуктивны, поскольку многие из предлагаемых изменений lint могут быть исправлены автоматически. Это играет важную роль, когда несколько человек работают над одним и тем же репо. У каждого будет свой способ написания кода и его форматирования. Но как проект вы не можете позволить себе слишком много различных форматов. Используя хуки перед фиксацией, команда может убедиться, что все идет в репозиторий с соблюдением установленных сдержек и противовесов.

Для хука предварительной фиксации мы будем использовать гем предварительной фиксации

Установите гем перед фиксацией ( )

$ gem install pre-commit
Войти в полноэкранный режим

Выйти из полноэкранного режима

Используйте команду pre-commit для создания хука-заглушки перед фиксацией

# In your git repo
$ pre-commit install
Войти в полноэкранный режим

Выйти из полноэкранного режима

Это создает скрипт .git/hooks/pre-commit, который проверит вашу конфигурацию git и запустит проверки, которые включены.


Бандлер

Если вы хотите использовать Bundler для указания версии RuboCop, добавьте следующее в Gemfile:

group :development do
  gem "pre-commit", require: false
  gem "rubocop", require: false
end
Войти в полноэкранный режим

Выйти из полноэкранного режима

И запустите следующее, чтобы запустить pre-commit через бандлер:

$ git config pre-commit.ruby "bundle exec ruby"
Войти в полноэкранный режим

Выйти из полноэкранного режима


РВМ

Если вы используете rvm, вам необходимо установить предварительную фиксацию в default gemset, потому что он не использует current Окружающая среда

$ rvm default do gem install pre-commit
Войти в полноэкранный режим

Выйти из полноэкранного режима

Кроме того, вы можете настроить предварительную фиксацию для использования current драгоценный камень rvm

$ git config pre-commit.ruby "rvm `rvm current` do ruby" # OR:
$ git config pre-commit.ruby `rvm wrapper current show ruby` # available in RVM 1.26.12
Войти в полноэкранный режим

Выйти из полноэкранного режима

Здесь мы создаем файл конфигурации для управления нашими проверками перед фиксацией.

pre-commit поставляется с 4 поставщиками конфигурации:

  • default — базовые настройки, только для чтения

  • git — читает конфигурацию из git config pre-commit.*разрешить локальное обновление

  • yaml — читает конфигурацию из /etc/pre_commit.yml, $HOME/.pre_commit.yml а также config/pre_commit.ymlпозволяет config/pre_commit.yml обновления

  • env — считывает конфигурацию из переменных окружения

    список доступных проверок по умолчанию. вы можете добавить в соответствии с вашими требованиями.
    before_all, ci, coffeelint, common, console_log, csslint, отладчик, gemfile_path, go, go_build, go_fmt, jshint, jslint, json, local, merge_conflict, миграция, nb_space, pry, rails, rspec_focus, rubocop, ruby, ruby_symbol_hashrockets, scss_lint, табы, пробелы, yaml

Используйте список предварительной фиксации, чтобы просмотреть список стандартных и включенных проверок и предупреждений.

Описание изображения

Если мы пытаемся зафиксировать с неправильным кодом формата или отладчиком, присутствующим в коде, он остановит фиксацию и отобразит что-то вроде изображения ниже.

Описание изображения

Для получения дополнительной информации, пожалуйста, проверьте драгоценный камень.

Мы создадим индивидуальный сценарий в соответствии с требованиями. Здесь мы создаем для RSpec и Brakeman.

Предполагается, что у вас уже есть приложение Rails и вы используете Брейкман для обеспечения безопасности вашего приложения и Rspec для запуска ваших тестовых случаев.

Начнем с создания scripts каталог в корневой папке вашего приложения:

$ cd rails-app
$ mkdir scripts
Войти в полноэкранный режим

Выйти из полноэкранного режима

Теперь мы создадим три разных файла bash для каждой команды, которую мы хотим запустить, в нашем случае это Brakeman и Rspec. Ниже приведены файлы, которые вы можете использовать и поместить в папку скриптов:

Теперь давайте создадим или отредактируем pre-commit bash файлы, на которые мы будем ссылаться в .git папка, в которой находятся хуки:

Затем мы хотим написать bash-скрипт для создания символической ссылки между этими файлами и хуками:

Все файлы, которые нам нужны, созданы, но прежде чем мы запустим bash-файл install-hooks для установки наших хуков, нам нужно сделать эти файлы исполняемыми. Это делается с помощью следующей команды:

$ chmod +x scripts/*.bash
Войти в полноэкранный режим

Выйти из полноэкранного режима

Теперь мы готовы бежать install-hooks.bash:

$ ./scripts/install-hooks.bash
Installing hooks...
Done!
Войти в полноэкранный режим

Выйти из полноэкранного режима

И все готово! Попробуйте зафиксировать и отправить свой код. Перед фиксацией запускаются Brakeman и Rspec.

для справки и информации:

https://github.com/baurine/gitook

Если это руководство было полезным для вас и вашей команды, поделитесь им с другими!