Автодеплой со своего сервера на github с помощью bash скрипта

Admin Bash, GIT, Linux

Настройка автоматической заливки на GIT файлов с сервера.

Часть мануала взята из статьи настройки GIT между своим сервером и компьютером.

Устанавливаем git на сервер

Для начала устанавливаем нужный репозиторий с сайта github.com к себе на сервер.

Узнаём установлен ли GIT, проверив его версию:

git --version

Заходим в директорию, куда должен скачаться гит репозиторий:

cd www

Устанавливаем удалённый репозиторий:

git clone git@github.com:user-name/ploshadka-net.git

Если возникла ошибка:

Cloning into ‘ploshadka.net’…
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 и вашим сервером. Для исправления создаём ключ и привязываем его.

Заново пробуем склонировать репозиторий

git clone git@github.com:user-name/ploshadka-net.git

Успешный процесс:

Cloning into ‘name-of-repository’…
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.

Отправляем

git config --global user.name "Dev Server"

И любой свой эмейл

git config --global user.email "test@gmail.com"

Проблема с правами доступа

Ошибка:

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 и смотрим права доступа:

cd .git/objects
ls -al

Назначаем на всю папку права нужного нам пользователя.

sudo chown -R dev:dev .git

Скрипт автодеплоя на github

Для автодеплоя на github нам понадобится bash файл с обычными командами GIT.

Например, если нужно отправить какие-то файлы, попадающие на сервер:

#!/bin/bash
# Переходим в категорию GIT
cd '/home/dev/www'

# Отправляем изменения в ветку dev
git checkout dev
git add -A
git commit -m "update dev"
git push

Или если нужно получить эти файлы на сервер:

#!/bin/bash
# Переходим в категорию GIT
cd '/home/dev/www'

# Загружаем данные из ветки dev
git checkout dev
git pull

Или использовать более сложный скрипт.

На сам файл ставим права на выполнение, иначе он не будет запускаться из cron:

chmod +x bash.sh

Заносим задание в cron

Описание процесса настройки задачи для cron.

Запускаем cron, например, каждые 5 минут.

*/5 * * * * dev sh /home/dev/bash-file

English Query (запросы по теме на английском языке)

autodeploy on github

GIT auto-deploy

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Автодеплой со своего сервера на github с помощью bash скрипта"