fix(ci): corrige backup/restore do .env usando Docker
All checks were successful
All checks were successful
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:
parent
6943a88e66
commit
9e385b664d
1 changed files with 16 additions and 10 deletions
|
|
@ -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,21 +201,26 @@ 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"
|
||||||
if [ -f /tmp/.env.backup ]; then
|
|
||||||
cp /tmp/.env.backup "$DEST/.env"
|
|
||||||
rm /tmp/.env.backup
|
|
||||||
fi
|
|
||||||
echo "Diretorio limpo"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Recriar o diretorio (sera criado com permissoes do usuario runner)
|
||||||
mkdir -p "$DEST"
|
mkdir -p "$DEST"
|
||||||
|
|
||||||
|
# Restaurar .env antes do rsync
|
||||||
|
if [ -f /tmp/.env.backup ]; then
|
||||||
|
cp /tmp/.env.backup "$DEST/.env"
|
||||||
|
rm /tmp/.env.backup
|
||||||
|
echo ".env restaurado"
|
||||||
|
fi
|
||||||
|
|
||||||
# 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 \
|
||||||
--exclude '.pnpm-store' --exclude '.pnpm-store/**' \
|
--exclude '.pnpm-store' --exclude '.pnpm-store/**' \
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue