136 lines
3.4 KiB
Markdown
136 lines
3.4 KiB
Markdown
# CI/CD - Avanzato Tecnologia
|
|
|
|
## Estrutura do Pipeline
|
|
|
|
```
|
|
Push para main/master
|
|
|
|
|
v
|
|
+------------------+ +------------------+ +------------------+
|
|
| BUILD | --> | PRESERVAR ASSETS | --> | DEPLOY |
|
|
| | | | | |
|
|
| - Checkout | | - Logo | | - SCP para VPS |
|
|
| - npm install | | - Imagens | | - Limpar cache |
|
|
| - npm run build | | - Favicon | | - Notificar |
|
|
+------------------+ +------------------+ +------------------+
|
|
```
|
|
|
|
---
|
|
|
|
## Configurar Secrets no GitHub
|
|
|
|
Va em: **Settings > Secrets and variables > Actions > New repository secret**
|
|
|
|
| Secret | Descricao | Exemplo |
|
|
|--------|-----------|---------|
|
|
| `SSH_HOST` | IP ou dominio do servidor | `201.45.120.30` ou `avanzato.com.br` |
|
|
| `SSH_USER` | Usuario SSH | `root` ou `deploy` |
|
|
| `SSH_PRIVATE_KEY` | Chave SSH privada | `-----BEGIN OPENSSH PRIVATE KEY-----...` |
|
|
| `SSH_PORT` | Porta SSH (opcional) | `22` |
|
|
| `DEPLOY_PATH` | Caminho no servidor | `/var/www/avanzato` |
|
|
| `STAGING_PATH` | Caminho staging (opcional) | `/var/www/avanzato-staging` |
|
|
|
|
### Como gerar a chave SSH:
|
|
|
|
```bash
|
|
# No seu computador (NAO no servidor):
|
|
ssh-keygen -t ed25519 -C "github-actions" -f ~/.ssh/github_actions
|
|
|
|
# Copiar publica para o servidor:
|
|
ssh-copy-id -i ~/.ssh/github_actions.pub root@SEU_SERVIDOR
|
|
|
|
# Copiar privada para o GitHub Secret:
|
|
cat ~/.ssh/github_actions
|
|
# Cole o conteudo inteiro no secret SSH_PRIVATE_KEY
|
|
```
|
|
|
|
---
|
|
|
|
## Estrutura de Branches
|
|
|
|
```
|
|
main/master --> Deploy automatico para producao
|
|
staging --> Deploy automatico para staging (se existir)
|
|
feature/* --> Apenas build (sem deploy)
|
|
hotfix/* --> Apenas build (sem deploy)
|
|
```
|
|
|
|
---
|
|
|
|
## Como Funciona
|
|
|
|
### Cenario 1: Deploy Automatico
|
|
```
|
|
1. Voce faz push para main
|
|
2. GitHub Actions executa automaticamente
|
|
3. Build + Deploy em ~2 minutos
|
|
4. Site atualizado!
|
|
```
|
|
|
|
### Cenario 2: Deploy Manual
|
|
```
|
|
1. Va em Actions > Build e Deploy
|
|
2. Clique "Run workflow"
|
|
3. Escolha: production ou staging
|
|
4. Clique "Run"
|
|
```
|
|
|
|
### Cenario 3: Pull Request
|
|
```
|
|
1. Cria PR para main
|
|
2. CI executa build (testa se compila)
|
|
3. NAO faz deploy
|
|
4. Merge aprovado? Deploy automatico!
|
|
```
|
|
|
|
---
|
|
|
|
## Assets Customizados (Logo, Imagens)
|
|
|
|
Para preservar assets apos o deploy automatico:
|
|
|
|
### 1. Commitar assets no repositorio
|
|
|
|
```bash
|
|
git add custom-assets/logo/logo.png
|
|
git add custom-assets/images/
|
|
git commit -m "Adiciona logo e imagens customizadas"
|
|
git push origin main
|
|
```
|
|
|
|
### 2. O pipeline faz sozinho
|
|
|
|
O workflow executa automaticamente:
|
|
```bash
|
|
bash scripts/preserve-assets.sh dist/
|
|
```
|
|
|
|
---
|
|
|
|
## Monitore os Deploys
|
|
|
|
- **GitHub Actions**: https://github.com/SEU_USUARIO/avanzato-site/actions
|
|
- **Status**: Check verde = sucesso, X vermelho = falha
|
|
- **Logs**: Clique no workflow para ver detalhes
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Deploy falhou?
|
|
|
|
1. **Verifique os secrets**: Settings > Secrets > Actions
|
|
2. **Verifique a chave SSH**: `ssh -i ~/.ssh/github_actions root@SEU_SERVIDOR`
|
|
3. **Verifique permissoes**: O usuario precisa de acesso de escrita no DEPLOY_PATH
|
|
4. **Verifique logs**: Actions > Clique no workflow > Veja o passo que falhou
|
|
|
|
### Assets nao preservados?
|
|
|
|
1. Verifique se `custom-assets/` esta no repositorio
|
|
2. Verifique se os arquivos estao comitados: `git ls-files custom-assets/`
|
|
3. Verifique os logs do passo "Preservar assets customizados"
|
|
|
|
---
|
|
|
|
*Configurado em: Maio 2026*
|