paint-brush
Усовершенствуйте свой DevOps с помощью Git Hooksby@infinity
2,960
2,960

Усовершенствуйте свой DevOps с помощью Git Hooks

Rishabh Agarwal4m2023/09/07
Read on Terminal Reader
Read this story w/o Javascript

DevOps стал неотъемлемым компонентом в мире разработки программного обеспечения для компаний, пытающихся упростить процессы разработки и развертывания. Среди нескольких доступных технологий DevOps есть одна, которой иногда пренебрегают, но которая действительно эффективна. Эта жизненно важная технология — не что иное, как «Git Hooks».
featured image - Усовершенствуйте свой DevOps с помощью Git Hooks
Rishabh Agarwal HackerNoon profile picture

DevOps стал неотъемлемым компонентом в мире разработки программного обеспечения для компаний, пытающихся упростить процессы разработки и развертывания. Среди нескольких доступных технологий DevOps есть одна, которой иногда пренебрегают, но которая действительно эффективна.


Эта жизненно важная технология — не что иное, как « Git Hooks» . »


Git Hooks — отличные инструменты для автоматизации задач, обеспечения соблюдения стандартов кодирования, выполнения непрерывного развертывания и запуска тестов.


Давайте посмотрим, как мы можем использовать Git Hooks, чтобы революционизировать нашу практику DevOps!

Прежде всего… Что такое крючки?

Давайте сначала посмотрим на официальное определение -


Хуки — это программы, которые вы можете поместить в каталог ловушек для запуска действий в определенных точках выполнения git.


К счастью, это действительно простое определение!


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


В) Что такое каталог Hooks? Где он находится?

Каталог перехватчиков — это каталог в репозитории Git, содержащий исполняемые программы или перехватчики, которые Git будет выполнять. По умолчанию каталог перехватчиков — $GIT_DIR/hooks . Пользователи также могут настроить его с помощью переменной конфигурации core.hooksPath .


Вопрос) Каковы точки выполнения Git?

Точки выполнения Git — это этапы рабочего процесса Git, на которых можно запускать перехватчики. Pre-commit, Post-commit, Pre-push, Post-receive, Pre-rebase и Post-merge — вот некоторые примеры точек выполнения Git.


Подводя итог этому разделу, мы можем дать следующее определение Git Hooks:


Git выполняет сценарии, известные как «перехватчики», до или после определенных операций, таких как фиксация, отправка или слияние кода. Они позволяют автоматизировать задачи, применять политики и взаимодействовать с базой кода в процессе разработки. Перехватчики Git хранятся в каталоге .git/hooks вашего репозитория Git.

Создаем наши самые первые Git-хуки!

Давайте попробуем создать простой перехватчик Git, который будет применять регулярное выражение «TASK*» к любому сообщению о коммите.


Создайте новый каталог git_hooks_tut и инициализируйте внутри него новый репозиторий git.


 ~/projects$ mkdir git_hooks_tut ~/projects$ cd git_hooks_tut ~/projects/git_hooks_tut$ git init Initialized empty Git repository


Давайте зайдем в каталог хуков и исследуем его содержимое.


 ~/projects/git_hooks_tut$ cd .git/hooks ~/projects/git_hooks_tut/.git/hooks$ ls applypatch-msg.sample pre-applypatch.sample pre-push.sample commit-msg.sample pre-commit.sample pre-rebase.sample fsmonitor-watchman.sample pre-merge-commit.sample pre-receive.sample post-update.sample prepare-commit-msg.sample update.sample


В каталогеooks есть несколько примеров скриптов. Расширение .sample по умолчанию останавливает их запуск. Все, что вам нужно сделать, чтобы «установить» крючок, — это избавиться от расширения .sample .


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


Для нашего варианта использования нам понадобится перехватчик commit-msg. Продолжайте и создайте новый скрипт с именем commit-msg .


 ~/projects/git_hooks_tut/.git/hooks$ touch commit-msg


Давайте добавим логику, обеспечивающую шаблон сообщения о фиксации в скрипт commit-msg .


 #!/bin/sh commit_msg_file=$1 commit_msg=$(cat "$commit_msg_file") # Check if the commit message starts with "TASK" if ! echo "$commit_msg" | grep -q "^TASK"; then echo "Commit message must start with 'TASK'" exit 1 fi


Наконец, сделайте скрипт commit-msg исполняемым. Неисполняемые скрипты пропускаются git, даже если они присутствуют в каталоге ловушек.


 ~/projects/git_hooks_tut/.git/hooks$ chmod +x commit-msg


И вот наши крючки готовы! Давайте проверим это сейчас.


Теперь мы создадим новый файл и попытаемся зафиксировать его; сначала с недопустимым форматом сообщения, а затем с допустимым форматом сообщения.


 ~/projects/git_hooks_tut/.git/hooks$ cd ../.. ~/projects/git_hooks_tut$ touch README ~/projects/git_hooks_tut$ ls README ~/projects/git_hooks_tut$ git add README ~/projects/git_hooks_tut$ git commit -m "Added Readme File" Commit message must start with 'TASK' ~/projects/git_hooks_tut$ git commit -m "TASK-0000: Added Readme File" [master (root-commit) 7f3648a] TASK-000: Added Readme File


Все работает идеально!

Какие существуют виды крючков?

Git позволяет нам создавать перехватчики для нескольких точек выполнения. Некоторые из них заключаются в следующем:


  1. Перехватчик перед фиксацией: этот перехват выполняется перед созданием фиксации. Это позволяет нам проверять вносимые изменения.


  2. Перехват предварительного получения. Перехват предварительного получения запускается в удаленном репозитории до изменения любых ссылок, что позволяет вам применять собственные правила или политики.


  3. Перехватчик Post-Receive: этот перехват также выполняется в удаленном репозитории после обновления ссылок. Его можно использовать для отправки уведомлений и/или выполнения дополнительных задач.


  4. Pre-Push Hook: этот хук выполняется до того, как будет сделан push. Это можно использовать для обеспечения соблюдения определенных политик, которые препятствуют отправке определенных типов коммитов.


  5. Перехват подготовки-фиксации-сообщения: перехват подготовки-фиксации-msg выполняется после создания сообщения о фиксации, что позволяет вам изменить или улучшить сообщение о фиксации.


Существуют и другие хуки для лучшей настройки Git, их можно найти в документации Git .


Git-хуки, если их правильно использовать, представляют собой инструмент с огромным потенциалом! Мы, разработчики, часто подрываем силу таких инструментов, которые могли бы решить множество сложных задач.


Использование Git Hooks улучшает DevOps на любом уровне и может стать отличным способом для организаций, желающих интегрировать DevOps в свои циклы разработки.


Поздравляем с достижением этого момента! Надеюсь, вы сегодня узнали что-то новое.