fix(ci): corrige backup/restore do .env usando Docker
All checks were successful
CI/CD Web + Desktop / Detect changes (push) Successful in 5s
Quality Checks / Lint, Test and Build (push) Successful in 4m29s
CI/CD Web + Desktop / Deploy Convex functions (push) Has been skipped
CI/CD Web + Desktop / Deploy (VPS Linux) (push) Successful in 7m0s

O problema anterior: apos limpar o conteudo do diretorio, o proprio
diretorio ainda tinha permissoes de root, fazendo o cp do .env falhar.

Nova abordagem:
- Salvar .env usando Docker (monta origem e /tmp)
- Remover o diretorio COMPLETAMENTE usando Docker (monta diretorio pai)
- Recriar o diretorio com mkdir -p (permissoes do usuario runner)
- Restaurar o .env (agora o diretorio tem permissoes corretas)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
esdrasrenan 2025-12-16 23:03:53 -03:00
parent 6943a88e66
commit 9e385b664d

View file

@ -193,6 +193,7 @@ jobs:
run: | run: |
set -e set -e
DEST="$HOME/apps/sistema" DEST="$HOME/apps/sistema"
PARENT_DIR="$HOME/apps"
# SOLUCAO DEFINITIVA: Limpar completamente o destino usando Docker (root) # SOLUCAO DEFINITIVA: Limpar completamente o destino usando Docker (root)
# Isso evita erros de permissao de arquivos criados por Docker em deploys anteriores # Isso evita erros de permissao de arquivos criados por Docker em deploys anteriores
@ -200,20 +201,25 @@ jobs:
echo "Limpando diretorio destino: $DEST" echo "Limpando diretorio destino: $DEST"
# Preservar apenas o .env (configuracoes de producao) # Preservar apenas o .env (configuracoes de producao)
if [ -f "$DEST/.env" ]; then if [ -f "$DEST/.env" ]; then
cp "$DEST/.env" /tmp/.env.backup docker run --rm -v "$DEST":/src -v /tmp:/backup alpine:3 \
cp /src/.env /backup/.env.backup
echo ".env salvo em /tmp/.env.backup"
fi fi
# Remover tudo usando Docker Alpine como root # Remover o diretorio COMPLETAMENTE usando Docker Alpine como root
docker run --rm -v "$DEST":/target alpine:3 \ docker run --rm -v "$PARENT_DIR":/parent alpine:3 \
sh -c 'rm -rf /target/* /target/.[!.]* /target/..?* 2>/dev/null || true' rm -rf /parent/sistema
# Restaurar .env echo "Diretorio removido"
fi
# Recriar o diretorio (sera criado com permissoes do usuario runner)
mkdir -p "$DEST"
# Restaurar .env antes do rsync
if [ -f /tmp/.env.backup ]; then if [ -f /tmp/.env.backup ]; then
cp /tmp/.env.backup "$DEST/.env" cp /tmp/.env.backup "$DEST/.env"
rm /tmp/.env.backup rm /tmp/.env.backup
echo ".env restaurado"
fi fi
echo "Diretorio limpo"
fi
mkdir -p "$DEST"
# Copiar build completo (sem conflitos de permissao agora) # Copiar build completo (sem conflitos de permissao agora)
rsync -a --no-owner --no-group \ rsync -a --no-owner --no-group \