Настройка автоматической заливки на GIT файлов с сервера.
Часть мануала взята из статьи настройки GIT между своим сервером и компьютером.
Устанавливаем git на сервер
Для начала устанавливаем нужный репозиторий с сайта github.com к себе на сервер.
Узнаём установлен ли GIT, проверив его версию:
Заходим в директорию, куда должен скачаться гит репозиторий:
Устанавливаем удалённый репозиторий:
Если возникла ошибка:
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.Please make sure you have the correct access rights
and the repository exists.
Это означает, что нет SSH ключа для общения между сайтом github и вашим сервером. Для исправления создаём ключ и привязываем его.
Заново пробуем склонировать репозиторий
Успешный процесс:
remote: Enumerating objects: 407, done.
remote: Counting objects: 100% (407/407), done.
remote: Compressing objects: 100% (263/263), done.
remote: Total 281904 (delta 255), reused 222 (delta 143), pack-reused 281497
Receiving objects: 100% (281904/281904), 373.69 MiB | 1.82 MiB/s, done.
Resolving deltas: 100% (208060/208060), done.
Checking out files: 100% (20185/20185), done.
Создаём локальную ветку от master
Создаём локальную ветку через которую будет работать наш скрипт.
После отправки первого коммита, возникнет сообщение:
*** Please tell me who you are.
Run
git config —global user.email «you@example.com»
git config —global user.name «Your Name»to set your account’s default identity.
Omit —global to set the identity only in this repository.
Отправляем
И любой свой эмейл
Проблема с правами доступа
Ошибка:
error: insufficient permission for adding an object to repository database .git/objects
Или такая:
git pull
remote: Enumerating objects: 27, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 27 (delta 24), reused 27 (delta 24), pack-reused 0
error: insufficient permission for adding an object to repository database .git/objects
fatal: failed to write object
fatal: unpack-objects failed
Если возникают подобные ошибки, значит они связаны с правами доступа. Заходим в папку git/objects и смотрим права доступа:
ls -al
Назначаем на всю папку права нужного нам пользователя.
Скрипт автодеплоя на github
Для автодеплоя на github нам понадобится bash файл с обычными командами GIT.
Например, если нужно отправить какие-то файлы, попадающие на сервер:
# Переходим в категорию GIT
cd '/home/dev/www'
# Отправляем изменения в ветку dev
git checkout dev
git add -A
git commit -m "update dev"
git push
Или если нужно получить эти файлы на сервер:
# Переходим в категорию GIT
cd '/home/dev/www'
# Загружаем данные из ветки dev
git checkout dev
git pull
Или использовать более сложный скрипт.
На сам файл ставим права на выполнение, иначе он не будет запускаться из cron:
Заносим задание в cron
Описание процесса настройки задачи для cron.
Запускаем cron, например, каждые 5 минут.