Организация работы через Git
Последние записи
Как добавить файлы сайта в проект на gitlab через phpstorm
- 1. Активируем
git
на проекте черезVCS -> Enable Version Control Intergration
- 2. Добавляем привязку к проекту на
gitlab
черезVCS -> Git -> Remotes
. Нажимаем на+
и добавляем ссылку на проект в форматеhttps://gitlab.com/USERNAME/PROGECTNAME.git
- 3. После добавления ссылки авторизуемся на гитлаб, если еще не авторизованы
- 4. Добавляем файл
.gitignore
и комментируем ненужные файлы и папки, например так:
/bitrix/
/!doc/
/test/
/upload/
/vendor/
/.idea/
Ctrl + A
VCS -> Get from Version Control
Как логически организовать работу с сайтом через Git
- 1. Создаем основную ветку
master
и ветку для тестированияdev
. - 2. При возникновении новой задачи, из актуализированной ветки
master
создается ветка под задачу - 3. Задача выполняется и сливается с веткой
dev
, решаются все конфликты и проверяется работоспособность (локально) - 4. Ветка
dev
заливается на дев сервер, проверяется работоспособность - 5. Если всё хорошо, ветка задачи сливается с актуализированной веткой
master
, решаются все конфликты и проверяется работоспособность (локально) - 6. Ветка
master
заливается на прод сервер
В командах консоли это выглядит примерно так:
1. git checkout master
2. git pull
3. git checkout -b task-branch
*выполняется задача*
4. git checkout dev
5. git pull
6. git merge task-branch
*решаются конфликты*
7. git push
*проверяется работоспособность на dev'е*
8. git checkout master
9. git pull
10. git merge task-branch
*решаются конфликты*
11. git push
Автоматическая заливка файлов на сервер после коммита с помощью .gitlab-ci.yml
Размещаете файл в корне проекта. Константы заменяете на свои и определяете их в настройках проекта, пути прописываете, а в самом файле размещаете код:
deploy:
before_script:
- apt-get update -y
- apt-get install -y rsync sshpass
#Передаем пароль из переменной окружения
- export SSHPASS=$SSH_PROJECT_PSWD
script:
#синхронизация (push rsync)
- rsync --recursive --links --owner --group --times --verbose --no-perms --chmod=D0755,F0644 --rsh="sshpass -e ssh -o StrictHostKeyChecking=no" --exclude '.git' --exclude '.gitlab-ci.yml' -avz ./ $SSH_PROJECT_USER@$SSH_PROJECT_SERVER:/ПОЛНЫЙ_РУТ_ПУТЬ_К_ФАЙЛАМ_ВАШЕГО_ПРОЕКТА_НА_СЕРВЕРЕ/
only:
- master
Данный код будет заливать файлы и папки под root
владельцем. Если нужно задать кастомного владельца, то последнюю строку следует видоизменить на:
- rsync --recursive --links --times --verbose --chmod=D0755,F0644 --chown=bitrix:bitrix --rsh="sshpass -e ssh -o StrictHostKeyChecking=no" --exclude '.git' --exclude '.gitlab-ci.yml' -avz ./ $SSH_PROJECT_USER@$SSH_PROJECT_SERVER:/ПОЛНЫЙ_РУТ_ПУТЬ_К_ФАЙЛАМ_ВАШЕГО_ПРОЕКТА_НА_СЕРВЕРЕ/
Если вы используете нестандартный порт, ко команду следует модифицировать добавив ssh -p PORT_NUMBER
, например так:
- rsync --recursive --links --times --verbose --chmod=D0755,F0644 --chown=bitrix:bitrix --rsh="sshpass -e ssh -p 7777 -o StrictHostKeyChecking=no" --exclude '.git' --exclude '.gitlab-ci.yml' -avz ./ $SSH_PROJECT_USER@$SSH_PROJECT_SERVER:/ПОЛНЫЙ_РУТ_ПУТЬ_К_ФАЙЛАМ_ВАШЕГО_ПРОЕКТА_НА_СЕРВЕРЕ/
Для установки rsync
на сервер воспользуйтесь командой:
yum install rsync
Данный код не является панацеей и подходит лишь для небольшого проекта, поскольку не удаляет файлы, не позволяет заливать на сервер отдельные коммиты, после каждого коммита делает полную заливку файлов на сервер
Если у Вас есть решение лучше, то прошу поделиться им.
Загрузка локального репозитория в проект gitlab через консоль
Инициализируем git
git init
git add
git commit -m "Первый коммит"
Связываем локальный репозиторий с репозиторием gitlab
git remote add origin https://gitlab.com/USERNAME/PROGECTNAME.git
Заливаем файлы в gitlab
git push origin master
Комментарии