Deploy - Plasfran UI V2
Este documento descreve o processo de build e deploy automático do projeto Plasfran UI V2 para o ambiente de produção, utilizando GitHub Actions.
Requisitos
- Branch de produção:
main - Acesso SSH ao servidor
- Secrets configuradas no repositório:
API_URL_PROD: URL da API usada no ambiente de PRODUÇÃOFRONT_URL_PROD: URL base do frontendSSH_HOST_PROD: Endereço do servidor remotoSSH_USER_PROD: Usuário com permissão de escritaSSH_KEY_PROD: Chave privada SSH para acesso ao servidor
Gatilhos
O pipeline é executado automaticamente quando:
- Um push é feito para a branch
main - Um gatilho manual é ativado via workflow_dispatch
Etapas do Workflow
1. Checkout do Código
- name: Checkout do código
uses: actions/checkout@v3
Faz o download do código-fonte do repositório.
2. Setup do Node.js
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: "18.x"
Garante que o Node.js (versão 18) esteja disponível para o build do projeto.
3. Instalação de dependências
- name: Instalar dependências
run: npm install --force
Instala os pacotes do projeto. O --force ignora conflitos e rebaixa dependências se necessário.
4. Build para Homologação
- name: Build (modo produção)
run: npm run build
Executa o build do projeto React com a configuração de produção (vite.config.js deve considerar VITE_API_URL e VITE_FRONT_URL).
5. Compactar arquivos de dist
- name: Compactar arquivos de dist
run: tar -czf dist.tar.gz -C dist .
Cria um pacote dist.tar.gz com os arquivos do build para facilitar o envio ao servidor.
6. Backup no Servidor
Conecta via SSH no servidor de produção e faz um backup da versão atual.
- name: Fazer backup
uses: appleboy/ssh-action@v1.0.0
...
script: |
mkdir -p /var/www/erp-ui-new-backup
cp -r /var/www/erp-ui-new "/var/www/erp-ui-new-backup/backup_$(date +'%Y%m%d_%H%M%S')"
7. Enviar para o servidor (via SCP)
- name: Enviar dist para servidor
uses: appleboy/scp-action@v0.1.4
with:
...
source: "dist.tar.gz"
target: "/var/www/erp-ui-new"
Transfere o dist.tar.gz para o diretório /var/www/erp-ui-new do servidor remoto.
8. Descompactar no servidor (via SSH)
- name: SSH - descompactar no servidor
uses: appleboy/ssh-action@v1.0.0
with:
...
script: |
cd /var/www/erp-ui-new
tar -xzf dist.tar.gz
rm dist.tar.gz
Acessa o servidor via SSH e descompacta o build no diretório de destino. Em seguida, remove o arquivo .tar.gz para limpeza.
Resultado Esperado
Ao final do processo:
- Acesse o frontend via URL definida em
VITE_FRONT_URL. - Verifique se a aplicação carrega corretamente e consome a API definida em
VITE_API_URL.
Arquivo completo
name: Build and Deploy Plasfran UI - PRODUÇÃO
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: ubuntu-latest
env:
# variáveis públicas para o build do Vite (prefixadas com VITE_)
VITE_API_URL: ${{ secrets.API_URL_PROD }}
VITE_FRONT_URL: ${{ secrets.FRONT_URL_PROD }}
steps:
- name: Checkout do código
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: "18.x"
- name: Instalar dependências
run: npm install --force
- name: Build (modo producao)
run: npm run build
- name: Compactar arquivos de dist
run: tar -czf dist.tar.gz -C dist .
- name: Fazer backup
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.SSH_HOST_PROD }}
username: ${{ secrets.SSH_USER_PROD }}
key: ${{ secrets.SSH_KEY_PROD }}
port: 22
script: |
mkdir -p /var/www/erp-ui-new-backup
cp -r /var/www/erp-ui-new "/var/www/erp-ui-new-backup/backup_$(date +'%Y%m%d_%H%M%S')"
- name: Enviar dist para servidor
uses: appleboy/scp-action@v0.1.4
with:
host: ${{ secrets.SSH_HOST_PROD }}
username: ${{ secrets.SSH_USER_PROD }}
key: ${{ secrets.SSH_KEY_PROD }}
port: 22
source: "dist.tar.gz"
target: "/var/www/erp-ui-new"
- name: SSH - descompactar no servidor
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.SSH_HOST_PROD }}
username: ${{ secrets.SSH_USER_PROD }}
key: ${{ secrets.SSH_KEY_PROD }}
port: 22
script: |
cd /var/www/erp-ui-new
tar -xzf dist.tar.gz
rm dist.tar.gz