lvlkoo 190 Опубликовано 20 февраля, 2019 Премитивное авторазвертывание с помощью git Собственно цель данной статьи - поведать об одном из самых простых способов развертывания на сервере с помощью git'а и его хуков. Предисловие: данная статья предполагает что Вы понимаете что такое VCS, в часности гит и уже им пользовались Развертывание проходит в 3 этапа Пуш в репозиторий размещенный на нашем сервере Тригер хука на сервере Выволнение нужного нам скрипта, в данном случае чекаут из репозитория в нужную нам папку Статья на примере работы с Centos 7 в качестве продакшн сервера и Windows 10 в качестве дев-машины. Авторизироваться будем по ssh, и для начала нужно сгенерировать ssh ключ. Сгенерировать его можно, к примеру, у тилитой ssh-keygen, которая идет в составе git для windows Из CMD выполняем: ssh-keygen -t rsa Следуем инструкциям (вас спросят куда положить ключ, можете просто нажать enter, ключ будет сохранен в C:\Users\username\.ssh), устаналиваем пароль, получаем ключ, файл будет называться примерно так id_rsa.pub Далее нужно настроить гит репозиторий на сервере. Устаналиваем git $ yum install -y git Создаем гит юзера, для ssh авторизации, указываем пароль $ sudo adduser git $ sudo passwd git создаем папку для ssh ключей $ su git $ cd $ mkdir .ssh Скопируйте на сервер (через фтп или другим удобным фам способом) ранее сгенерированый паблик ключ, к примеру в папку tmp, в итоге получаем /tmp/id_rsa.pub Добавляем этот ключ в список доверенных $ cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys Переходим к созданию гит репозитория, к примеру в папке /home/git $ cd /home/git $ mkdir project.git $ cd project.git $ git --bare init project.git - можете назвать как угодно. Длее нужно создать хук в папке /home/git/project.git/hooks Создаем файл post-receive с содиржанием #!/bin/bash echo 'post-receive execute start' >> hooks.log TARGET="/home/myproject" GIT_DIR="/home/project.git" BRANCH="master" while read oldrev newrev ref do # only checking out the master (or whatever branch you would like to deploy) if [[ $ref = refs/heads/"$BRANCH" ]]; then echo "Ref $ref received. Deploying ${BRANCH} branch to production..." >> hooks.log git --work-tree="$TARGET" --git-dir="$GIT_DIR" checkout -f echo "Deploying done" >> hooks.log else echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server." >> hooks.log fi done TARGET - путь к папке в которую будет происходить копирование из репозитория GIT_DIR - путь к папке с гит репозиторием BRANCH - ветка из которой будем забирать Настройте данные переменные под себя. Репозиторий готов, возвращаемся на нашу дев-машину, и создаем из папки с проектом локальный репозиторий. Это можно сделать и спомощью CMD или любой програмы для управления гит (к примеру я пользуюсь SourceTree) Выполняем в CMD cd /d D:\path\to\project git init path\to\project соотвественно меняете на путь к папке с вашим проектом. Комитим изменения, подключаем удаленный репозиторий на сервере и пушим. (если вы создали репозиторий в пустой папке, скопируйте в нее файлы вашего проекта) git add . git commit -m 'initial' git remote add origin git@myserver.com:/home/git/project.git git push origin master myserver.com - домен или ИП адрес вашего сервера. Гит спросит пароль от юзера, вводим пароль который указывали при его создании После пуша на удаленном сервере выполнится хук и файлы будут скопированы в папку для развертывания. Author lvlkoo Category Работа с OS Отправлено 02/20/19 12:44 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Lolipop 2 Опубликовано 20 февраля, 2019 Что там за копипаст, про автодеплой и сборочные линии? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
lvlkoo 190 Опубликовано 25 февраля, 2019 В 20.02.2019 в 14:11, Lolipop сказал: копипаст Гайд написан самостоятельно, изходя из личного опыта. В 20.02.2019 в 14:11, Lolipop сказал: сборочные линии Куда уж тут... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты