Integração Contínua e Deploy Automatizado para Aplicações em Angular, Laravel e MySQL na Hostinger
Tags: integraçãocontínua, deployautomatizado, angular, laravel
Published: 2023-03-29 15:45:01

Neste artigo, vamos explorar como criar um arquivo ci.yml para integração contínua de uma aplicação construída com Angular 14 no front-end, Laravel 9 e PHP 8.1 no back-end, banco de dados MySQL 8.30, arquivo de log em texto e um arquivo cd.yml para deploy automatizado em hospedagem compartilhada Hostinger. Com essas configurações, você pode automatizar o processo de construção, teste e implantação de sua aplicação e garantir a qualidade de sua entrega contínua.

Você quer automatizar a integração contínua e o deploy da sua aplicação em Angular, Laravel e MySQL na Hostinger? Então você está no lugar certo! Neste artigo, vou mostrar como criar um arquivo ci.yml para integração contínua e um arquivo cd.yml para deploy automatizado na Hostinger.

Começando pela integração contínua, o arquivo ci.yml abaixo irá ajudá-lo a configurar um ambiente de build e testes para sua aplicação:

```yaml
# Definição do ambiente
os: ubuntu-latest
language: node_js
node_js: 14

# Instalação de dependências
cache:
  npm: true
  directories:
    - node_modules

# Script de build e testes
script:
  - npm install
  - ng build --prod
  - npm test

# Deploy após sucesso do build e testes
deploy:
  provider: heroku
  api_key: $HEROKU_API_KEY
  app: minha-aplicacao-heroku
  on:
    branch: main

# Configuração do banco de dados
services:
  - mysql

before_install:
  - mysql -e 'CREATE DATABASE IF NOT EXISTS minha_base_de_dados;'
  - mysql -e 'USE minha_base_de_dados;'

# Configuração de logs
after_failure:
  - cat /home/travis/build/minha-conta/minha-aplicacao/logs/test.log

```

Este arquivo ci.yml assume que você já configurou sua aplicação no Heroku e que tem uma conta na Hostinger com acesso SSH. Lembre-se de substituir minha-aplicacao-heroku com o nome da sua aplicação no Heroku e minha_base_de_dados com o nome da sua base de dados MySQL na Hostinger.

Agora, vamos para o arquivo cd.yml para deploy automatizado. Este arquivo irá automatizar o processo de build, testes e deploy da sua aplicação na Hostinger:

```yaml
# Definição do ambiente
os: ubuntu-latest
language: node_js
node_js: 14

# Instalação de dependências
cache:
  npm: true
  directories:
    - node_modules

# Script de build e testes
script:
  - npm install
  - ng build --prod
  - npm test

# Deploy após sucesso do build e testes
deploy:
  provider: script
  skip_cleanup: true
  script:
    - ssh myuser@myhost "cd /home/myuser/myapp && git pull origin main && composer install && php artisan migrate && npm install && ng build --prod"

```

Este arquivo cd.yml assume que você já tem sua aplicação no Git e que você configurou a autenticação SSH para permitir que o deploy seja feito sem digitar uma senha. Lembre-se de substituir `myuser`, `myhost` e `/home/myuser/myapp` com as suas informações de conta e caminho de diretório corretos.

Com esses arquivos ci.yml e cd.yml em mãos, você pode automatizar a integração contínua e o deploy da sua aplicação em Angular, Laravel e MySQL na Hostinger. É uma ótima maneira de garantir a qualidade da sua entrega contínua e economizar tempo em processos manuais.

Espero que este artigo tenha sido útil para você e que você possa aplicar essas configurações em suas próprias aplicações. Se você tiver alguma dúvida ou comentário, sinta-se à vontade para deixar um comentário abaixo.

Além disso, é importante lembrar que as configurações apresentadas neste artigo são apenas um exemplo e podem ser adaptadas para suas próprias necessidades. Por exemplo, você pode querer incluir mais etapas no script de build e testes ou configurar uma plataforma de hospedagem diferente.

**Conclusão**

Por fim, se você está interessado em aprender mais sobre DevOps e entrega contínua, recomendo explorar outras ferramentas e técnicas disponíveis, como Docker, Kubernetes, Jenkins, Travis CI, CircleCI e muito mais. Com essas ferramentas em mãos, você pode automatizar ainda mais processos em seu fluxo de trabalho e tornar sua equipe mais eficiente e produtiva.