Conn2Flow
Navegação das docs

SDD

req-076: Opção para Exclusão da Pasta 'contents/' em Tarefas de Deploy e Sincronização

À medida que o projeto cresce, a pasta contents/ acumula arquivos de upload (imagens, PDFs, mídias) e pode atingir gigabytes de tamanho. Toda vez que o operador realiza um deploy…

Contexto e Problema

Atualmente, as tarefas do VS Code e os scripts bash associados que gerenciam a sincronização local de arquivos (synchronize-project.sh) e o deploy de projetos via API (deploy-project-v2.sh) operam sobre toda a pasta do projeto (diretório gestor/). Isso inclui a pasta de uploads dinâmicos contents/ (localizada em [REDACTED]).

À medida que o projeto cresce, a pasta contents/ acumula arquivos de upload (imagens, PDFs, mídias) e pode atingir gigabytes de tamanho. Toda vez que o operador realiza um deploy ou sincronização de arquivos de desenvolvimento (ex: novas lógicas em PHP/JS), o ecossistema empacota e envia desnecessariamente toda a pasta contents/, gerando lentidão e desperdício de banda.

Especificação de Mudanças

Precisamos introduzir a escolha de inclusão da pasta contents/ nas tarefas do VS Code, propagando essa seleção para os scripts através de um parâmetro de linha de comando.


1. Modificações em .vscode/tasks.json

  1. Novo Input: Adicionar na seção "inputs" um seletor de string (pickString):

    {
       "id": "contentsChoice",
       "description": "? Include contents/ folder? (Sim / Não) ❔",
       "type": "pickString",
       "options": [
           "Sim",
           "Não"
       ],
       "default": "Sim"
    }
  2. Atualização de Parâmetros nas Tarefas: Nas tarefas abaixo, adicione o parâmetro --contents ${input:contentsChoice} (ou correspondente) na linha de comando:

    • ?️ Projects - Deploy Current Project

      • De: bash ./ai-workspace/en/scripts/projects/deploy-project-v2.sh

      • Para: bash ./ai-workspace/en/scripts/projects/deploy-project-v2.sh --contents ${input:contentsChoice}

    • ?️ Projects - Deploy Project -> ID

      • De: bash ./ai-workspace/en/scripts/projects/deploy-project-v2.sh --project ${input:projectID}

      • Para: bash ./ai-workspace/en/scripts/projects/deploy-project-v2.sh --project ${input:projectID} --contents ${input:contentsChoice}

    • ?️ Projects - Synchronize => Files -> ID

      • De: bash ./ai-workspace/en/scripts/projects/synchronize-project.sh --project ${input:projectID} checksum

      • Para: bash ./ai-workspace/en/scripts/projects/synchronize-project.sh --project ${input:projectID} checksum --contents ${input:contentsChoice}

    • E em qualquer outra tarefa que faça a manipulação de sincronização ou deploy de arquivos do diretório do projeto.


2. Modificações nos Scripts Bash (ai-workspace/en/scripts/projects/)

2.1 deploy-project-v2.sh

  1. Parser de Argumentos:

    • Aceitar o argumento --contents (que pode receber Sim ou Não).

    • Por padrão, se não fornecido, assumir Sim (retrocompatibilidade).

  2. Exclusão no Empacotamento Completo:

    • Se --contents for Não:

      • Modificar a chamada do 7z no empacotamento completo para incluir a exclusão -xr0!contents/: "7z" a -tzip "$ZIP_FILE" . -xr0!*.git* -xr0!*.tmp -xr0!*.log -xr0!temp/ -xr0!logs/ -xr0!resources/ -xr0!contents/ > /dev/null 2>&1

  3. Exclusão no Empacotamento de Diferenças Git (gitDeploy):

    • Se --contents for Não e o gitDeploy estiver ativado:

      • Ao popular o arquivo temporário de lista de arquivos (${PROJECT_TARGET}_git_files.txt), filtrar/ignorar qualquer arquivo cujo caminho inicie com contents/.

2.2 synchronize-project.sh

  1. Parser de Argumentos:

    • Aceitar o argumento --contents (recebendo Sim ou Não).

    • Por padrão, assumir Sim.

  2. Exclusão no Rsync:

    • Se --contents for Não:

      • Adicionar --exclude "contents/" no comando rsync correspondente ao modo selecionado (default, checksum, force).


Validação e Testes

  1. Validação de Sintaxe:

    • Garantir que o JSON em .vscode/tasks.json permaneça válido.

    • Executar bash -n nos scripts bash modificados.

  2. Validação de Funcionamento (Exclusão):

    • Executar a tarefa de deploy selecionando "Não" para a pasta contents.

    • Verificar nos logs do terminal se o tamanho do pacote ZIP gerado é significativamente menor e se a pasta contents/ foi ignorada no empacotamento.

    • Executar a tarefa de sincronização de arquivos selecionando "Não" e checar se arquivos criados recentemente na pasta local contents/ não foram enviados ao ambiente de testes.

  3. Validação de Funcionamento (Inclusão):

    • Validar que ao selecionar "Sim", a pasta contents/ é empacotada e sincronizada normalmente.

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada