Перейти к содержанию
Авторизация  
lvlkoo

Премитивное авторазвертывание с помощью git

Рекомендуемые сообщения

Премитивное авторазвертывание с помощью 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 - домен или ИП адрес вашего сервера. Гит спросит пароль от юзера, вводим пароль который указывали при его создании После пуша на удаленном сервере выполнится хук и файлы будут скопированы в папку для развертывания.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что там за копипаст, про автодеплой и сборочные линии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 20.02.2019 в 14:11, Lolipop сказал:

копипаст

Гайд написан самостоятельно, изходя из личного опыта.

В 20.02.2019 в 14:11, Lolipop сказал:

сборочные линии

Куда уж тут...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...