diff --git a/.forgejo/workflows/ci-cd-web-desktop.yml b/.forgejo/workflows/ci-cd-web-desktop.yml index 5c74103..7985275 100644 --- a/.forgejo/workflows/ci-cd-web-desktop.yml +++ b/.forgejo/workflows/ci-cd-web-desktop.yml @@ -193,6 +193,7 @@ jobs: run: | set -e DEST="$HOME/apps/sistema" + PARENT_DIR="$HOME/apps" # SOLUCAO DEFINITIVA: Limpar completamente o destino usando Docker (root) # Isso evita erros de permissao de arquivos criados por Docker em deploys anteriores @@ -200,21 +201,26 @@ jobs: echo "Limpando diretorio destino: $DEST" # Preservar apenas o .env (configuracoes de producao) 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 - # Remover tudo usando Docker Alpine como root - docker run --rm -v "$DEST":/target alpine:3 \ - 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" + # Remover o diretorio COMPLETAMENTE usando Docker Alpine como root + docker run --rm -v "$PARENT_DIR":/parent alpine:3 \ + rm -rf /parent/sistema + 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 + cp /tmp/.env.backup "$DEST/.env" + rm /tmp/.env.backup + echo ".env restaurado" + fi + # Copiar build completo (sem conflitos de permissao agora) rsync -a --no-owner --no-group \ --exclude '.pnpm-store' --exclude '.pnpm-store/**' \