Então contiuando com nosso Digital Ocean, hoje é dia de criar um repositório bare para que possamos fazer o deploy. Então vamos nessa...

Instalando git

sudo apt-get install git-core

Criando repositório bare

Acessando a droplet

ssh root@ip-do-servidor

Criando git --bare

cd /usr/share/nginx/html
sudo mkdir my_project
git init --bare my_project.git

Criando arquivo que será executado após o cada git push no repositório bare

sudo nano hooks/post-receive

Adicione o seguinte conteúdo:

#!/bin/sh
#
## store the arguments given to the script
read oldrev newrev refname

## Where to store the log information about the updates
LOGFILE=./post-receive.log

# The deployed directory (the running site)
DEPLOYDIR=/usr/share/nginx/html/my_project

##  Record the fact that the push has been received
echo -e "Received Push Request at $( date +%F )" >> $LOGFILE
echo " - Old SHA: $oldrev New SHA: $newrev Branch Name: $refname" >> $LOGFILE

## Update the deployed copy
echo "Starting Deploy" >> $LOGFILE

echo " - Starting code update"
GIT_WORK_TREE="$DEPLOYDIR" git checkout -f
echo " - Finished code update"

echo " - Starting update project dependeces, composer update, migrate and gulp compile"
cd "$DEPLOYDIR"; composer dump-autoload; composer update; php artisan migrate;gulp --production;
echo " - Finished update project"

echo "Starting MySQL DUMP"
mysqldump -uroot --password=******* my_project_dbname > /root/dumps/my_project_$(date +%Y_%m_%d_%H%M%S).sql
echo "Finished MySQL DUMP"

echo "Finished Deploy" >> $LOGFILE

exit

Percebam que parte onde atualiza as dependencias do projeto tem um comando para compilar o javascripts e less, o responsável por isso é o Gulp, caso não o tenha instalado clique aqui para ver com faz.

Saia da droplet, entre na pasta do projeto local e adicione o link remoto

cd /usr/share/nginx/html/my_project
git remote add production ssh://root@ip-do-servidor:/usr/share/nginx/html/my_project.git

Agora a parte mais facil, se tudo der certo, é só dá um:

git push production master

para fazer o deploy

Por padrão o Digital Ocean define a porta 22 para esse tipo de ação, mas caso não funcione você pode deixar explicito a porta:

git remote add production ssh://root@ip-do-servidor:22/usr/share/nginx/html/my_project.git