Автор оригинала: David Wong.
Создайте сервер Git и напишите Сценарий автоматического развертывания
Сегодня я попытался создать сервер Git на сервере Linux и написать простой сценарий автоматического развертывания.
Основная ссылка Ляо Сюэфэн-Учебник по GIT-Создание сервера Git
Давайте начнем прямо сейчас.
Создайте мерзавец пользователь для запуска службы GIT
adduser git
Создание входа в систему сертификата
Соберите открытые ключи всех пользователей, которым необходимо войти в систему, это их собственные. id_rsa.паб Файл, импортируйте все открытые ключи в /home/git/.ssh/авторизованные ключи В документе по одной строке за раз.
Инициализировать репозиторий Git
Сначала выберите каталог в качестве репозитория Git, предполагая, что /home/git/sample.git В /главная/git Введите команды в каталог:
git init --bare sample.git
Git создаст пустой склад, на пустом складе нет рабочей области, потому что хранилище Git на сервере предназначено исключительно для общего доступа, поэтому пользователям не разрешается напрямую входить на сервер для изменения рабочей области, а хранилище Git на сервере обычно заканчивается. git. Затем, сменить владельца на Git
chown -R git:git sample.git
Отключить вход в оболочку пользователя git
Найдите строку для вашего пользователя git, отредактировав файл/etc/passwd, например:
git:x:1001:1001:,,,:/home/git:/bin/bash
удерживать /мусорное ведро/баш Изменить на /usr/bin/git-оболочку Например:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
Таким образом, пользователи git обычно могут использовать git через ssh, но не могут войти в оболочку, потому что git-оболочка, указанная для пользователей git, автоматически выходит из системы при каждом входе в систему.
Клонирование удаленного склада
git clone [email protected]:sample.git
Сервер-это доменное имя или IP-адрес вашего сервера
Если репозиторий GIT и веб-каталог находятся на одном хосте сервера:
git clone /home/git/sample.git
Если не создан в домашнем каталоге пользователей GIT, например/SRV/GITS/sample. мерзавец:
git clone [email protected]:/srv/gits/sample.git
Если клонирование завершится успешно, то ваш сервер git будет успешно собран.
Следующий:
Сценарий Автоматической Синхронизации
Потому что я веб-каталог, а git-это один и тот же сервер
редактировать /главная/git/образец.git/крючки/после получения, после получения Это скрипт, который выполняется после того, как сервер GIT получит отправку кода (после завершения отправки).
#!/bin/sh
while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
if [ "master" == "$branch" ]; then
# Do something
echo "post-receive in branch master" >> /tmp/git-sample.log
unset GIT_DIR
wwwPath=/var/www/html/sample
cd $wwwPath && /usr/bin/git pull origin master
exit 0
fi
doneКак видно из содержимого скрипта, мы выполняем основную операцию GIT pull origin, когда определяем, что ветвь текущего push является основной.
Наделить исполнительной властью:
chown -R git:git /home/git/sample.git/hooks/post-receive chmod +x /home/git/sample.git/hooks/post-receive
Поскольку репозиторий GIT и веб-каталог находятся на одном хосте сервера, clone использует:
git clone /home/git/sample.git
Поскольку пользователь, выполняющий сценарий синхронизации, является git, необходимо убедиться, что каталог проекта предоставляет разрешение на запись git. Это также вопрос авторитета, который легко может пойти не так.
Хорошо, попробуй.~
Ссылка на исходный текст:
Построить Сервер Git – Написать Сценарий Автоматического Развертывания
Поделитесь дополнительными знаниями, пожалуйста, обратите внимание на сканер:
Оригинал: “https://developpaper.com/build-git-server-and-write-automated-deployment-script/”