- VM deploy
- Gerado ssh-keys (comunicação com server's de app (DO / GCP))
- php7.0-cli (execução deployer)
- GIT
- Deployer
- Gitlab runner
- Clonado cópia do Laradep (/home/gitlab-runner/deploy) que irá executar o deploy
- VM aplicação
- Add user deployer
- Gerado ssh-keys (comunicação com servidor do repositório (gitlab))
- Add permissão server deploy (authorized_keys)
- Composer
- GIT
- Nginx
- PHPfpm
- http://159.89.184.227/info.php
- VM de aplicação
- Idem VM DO
- http://35.231.28.88/info.php
- Gitlab runner dispara a execução no servidor de deploy (hospedado na DO)
- Acessa o diretório de deploy, atualiza a cópia da app referente a sua versão
- Executa o deployer no ambiente desejado (DO / GCP ou qualquer outro test / staging / prod)
- O deployer acessa via ssh o servidor de aplição com o usuário de deploy
- Clona o repositório correspondente a versão do deploy dentro de suas releases (/var/www/html/laradep/releases) no path configurado no nginx
- Executa os comandos do arquivo deploy.php da raiz do projeto
- Faz o apontamento da current para a última release deployada
graph TD;
A(Deploy)-->B(Digital ocean);
A(Deploy)-->C(Google Cloud Plataform);
B-->D(Repositório - Gitlab);
D-->B
C-->E(Repositório - Gitlab);
E-->C;
├── current -> releases/9
├── releases
│ ├── 7
│ │ ├── ...
│ ├── 8
│ │ ├── ...
│ └── 9
│ ├── app
│ ├── artisan
│ ├── bootstrap
│ ├── composer.json
│ ├── composer.lock
│ ├── ...
└── shared
└── .env
└── storage
├── app
├── framework
└── logs
Force host laradep.com para o IP da VM da DO 159.89.184.227
Force host laradep-gcp.com para o IP da VM GCP 35.231.28.88
- deploy.php https://gitlab.com/adhenawer/laradep/blob/master/deploy.php
- gitlab-ci.yml https://gitlab.com/adhenawer/laradep/blob/master/.gitlab-ci.yml
- Pipeline https://gitlab.com/adhenawer/laradep/pipelines/21269832
- Tutorial completo https://www.digitalocean.com/community/tutorials/automatically-deploy-laravel-applications-deployer-ubuntu