Гит-хук — это сервис, который работает как «крючок» (hook) на удалённом сервере и связан с системой контроля версий Git. Он имеет большой потенциал, но в настоящее время его реализация довольно проста. В настоящее время большинство платформ для управления репозиториями Git поддерживают настройку обратного вызова URL, включая GitHub, Oschina и Coding. Когда разработчик отправляет код на удалённый сервер, он инициирует запрос к этому URL. Сервер, который получает этот запрос, может запускать настроенную команду на локальном компьютере. Этот инструмент предназначен для управления этими командами.
Особенности:
Предварительные условия:
Шаги настройки:
yarn
.yarn start
.После каждого изменения в конфигурационных файлах необходимо перезапускать сервер для перезагрузки конфигурации.
Для запуска сервера необходимо использовать команду sudo, чтобы обеспечить выполнение команд от имени пользователя root. Это связано с тем, что инструмент поддерживает переключение пользователей и групп для выполнения команд, и только пользователь root может выполнять эти операции без проблем. Однако можно запустить сервер и без использования sudo, но тогда в конфигурационном файле поля user и group должны быть установлены на текущего пользователя и группу, иначе сервер выдаст ошибку.
При запуске сервера можно указать следующие параметры:
-p
или --port
: порт сервера.Конфигурационные файлы хуков хранятся в каталоге config. Файлы конфигурации имеют расширение .yml. Структура файлов конфигурации описана в примерах simple-hook.yml и full-hook.yml. Путь к файлу конфигурации соответствует пути URL относительно каталога config. Например, файл конфигурации a.yml в каталоге config будет соответствовать URL /a, а файл конфигурации a/b.yml — URL /a/b.
В конфигурационных файлах используются следующие поля:
Все поля являются обязательными и рекомендуется заполнить их все.
Файл default.yml в корневом каталоге содержит значения по умолчанию для всех конфигураций. Файл full-hook.yml содержит пример использования ключа default для задания значений по умолчанию в других конфигурациях. Значения полей в конфигурациях переопределяются в следующем порядке: ключ default, файл default.yml.
Полный формат URL выглядит следующим образом:
http://{domain}:{port}/{path}?normalizer={normalizer}
Каждый элемент URL имеет своё значение:
Например, если вы используете платформу Coding для настройки хука и ваш конфигурационный файл находится в config/a/b.yml, то путь должен быть указан следующим образом:
http://your-domain:port/a/b?normalizer=coding
На платформе Linux команды и среда выполнения тесно связаны друг с другом. Node предоставляет метод child_process.spawn для вызова внешних команд, но этот метод может вызывать проблемы при выполнении некоторых команд. Чтобы решить эту проблему, git-hook позволяет пользователям самостоятельно определять способ выполнения команд. В конфигурационном файле есть поле executor, которое указывает на исполняемый файл в плагинах/executors.
Плагины делятся на два типа: исполнители и нормализаторы. Они размещаются в соответствующих папках plugins. Плагины представляют собой файлы JavaScript, которые являются модулями Node.js.
Исполнители выполняют реальные команды. Каждый исполнитель представляет собой файл JavaScript, который является модулем Node.js, возвращающим функцию. Исполнители размещаются в папке plugins/executors/. Типичный пример исполнителя:
module.exports = function ({ command, cwd, uid, gid, stderr, stdout }) {
// 执行command并写入到stdout、stderr的代码
}
Нормализаторы преобразуют исходные данные JSON в формат, понятный инструменту. Благодаря нормализаторам, можно поддерживать множество различных платформ, таких как GitHub, Oschina и Coding.
Типичный пример нормализатора:
module.exports = function ({ path, query, data, headers, request }) {
return normalizedData
}
Сначала скопируйте файл examples/simple-hook.yml в каталог config и внесите изменения в каждый параметр. Затем запустите сервер разработки:
yarn dev
Чтобы протестировать сервер, выполните следующий запрос:
curl -XPOST http://localhost:3000/simple-hook -d '{"branch":"master", "event":"test", "token":"token"}'
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )