diff --git a/.forgejo/workflows/ci-cd-web-desktop.yml b/.forgejo/workflows/ci-cd-web-desktop.yml index 783e8a3..5c74103 100644 --- a/.forgejo/workflows/ci-cd-web-desktop.yml +++ b/.forgejo/workflows/ci-cd-web-desktop.yml @@ -193,22 +193,33 @@ jobs: run: | set -e DEST="$HOME/apps/sistema" - mkdir -p "$DEST" - mkdir -p "$DEST/.next/static" - # Corrigir permissoes do destino (arquivos de deploys anteriores) + + # SOLUCAO DEFINITIVA: Limpar completamente o destino usando Docker (root) + # Isso evita erros de permissao de arquivos criados por Docker em deploys anteriores if [ -d "$DEST" ]; then + echo "Limpando diretorio destino: $DEST" + # Preservar apenas o .env (configuracoes de producao) + if [ -f "$DEST/.env" ]; then + cp "$DEST/.env" /tmp/.env.backup + fi + # Remover tudo usando Docker Alpine como root docker run --rm -v "$DEST":/target alpine:3 \ - chown -R 1000:1000 /target 2>/dev/null || true + sh -c 'rm -rf /target/* /target/.[!.]* /target/..?* 2>/dev/null || true' + # Restaurar .env + if [ -f /tmp/.env.backup ]; then + cp /tmp/.env.backup "$DEST/.env" + rm /tmp/.env.backup + fi + echo "Diretorio limpo" fi - # rsync com --no-owner --no-group para nao preservar UID do container Docker - if [ -d "$EFFECTIVE_APP_DIR/.next/static" ]; then - rsync -a --no-owner --no-group \ - "$EFFECTIVE_APP_DIR/.next/static/" "$DEST/.next/static/" - fi - rsync -a --delete --no-owner --no-group \ + + mkdir -p "$DEST" + + # Copiar build completo (sem conflitos de permissao agora) + rsync -a --no-owner --no-group \ --exclude '.pnpm-store' --exclude '.pnpm-store/**' \ - --exclude '.next/static' \ "$EFFECTIVE_APP_DIR"/ "$DEST"/ + echo "Published build to: $DEST" - name: Swarm deploy (stack.yml)