Рубрики
Uncategorized

Создайте сервер Git и напишите Сценарий автоматического развертывания

Автор оригинала: 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/”