Passo a passo para criação de ambiente/deploy
Banco de Obras - Última Atualização 06/12/2022
Para a criação de um ambiente do Banco de Obras é necessário seguir alguns passos que serão listados:
Inicialização do Projeto
Para se inicializar o projeto na Dexco é necessário criar um projeto no bitbucket ou usar um já existente, e esse deve ser escolhido com a ajuda do LT do projeto.
Seguindo é preciso alterar o User and group access para as pessoas vinculadas a esse projeto.
Criação da Branch
Para criar o ambiente do projeto é necessário criar uma branch com o nome do ambiente desejado. O nome da branch deve seguir o nome do ambiente desejado (ex: master, production, staging, develop)
Nessa branch será copiado ou inicializado o projeto
Caso seja a inicialização do projeto será necessário instalar os commits semânticos no projeto. Esses podem ser instalados seguindo o passo a passo descritos na documentação: https://dtxlab.atlassian.net/wiki/spaces/~519876390/pages/1942978564 . Também atualizar os webhooks do projeto nas configurações do bitbucket do mesmo.
Criação do Database
Nesse projeto é usado o MongoDB como banco de dados
É necessário entrar em contato com o time de arquitetura da Dexco para pedir a criação de um banco de dados para o projeto. Sendo ele vinculado com o nível do ambiente que foi criado (ex: production, prd) e assim obter a string de conexão do banco. ex: mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]] ou
mongodb+srv://server.example.com/?connectTimeoutMS=300000&authSource=aDifferentAuthDB
Vinculação com das strings no .env do projeto
Com as strings de conexão do banco, decidir o DNS do projeto. Para alguns DNS, a sua disponibilidade terá que ser verificada com o time de arquitetura.
Com essas strings, preencher as variáveis do documento do .env na pasta de config (./app/config)
Ajustar Jenkins e Terraform
Para ajustar a esteira do projeto, é necessário a criação do Jenkins e Terraform.
Primeiramente, para não fazer o ajuste do zero, escolha um template do time de devops que mais se aproxima do seu projeto usando o repositório disponibilizado https://bitbucket.org/duratex/workspace/projects/DEVOPS . Caso tenha dúvida em qual seja o melhor para o seu projeto entre em contato com algum do time de arquitetura.
Após a escolha, configure as variáveis do terraform encontrados na pasta de devops (devops/environment-vars/aws). Isso irá configurar o certificado, domínio, time, projeto, cnames, etc..
Após será necessário configurar o job do jenkins. Para essa configuração utilizar o passa a passo: https://dtxlab.atlassian.net/wiki/spaces/AR/pages/1097498660
População do Database
Atualmente o banco de dados do Banco de Obras possui as seguintes collections
businesses
constructioncompanies
constructions
deals
rawdatas
regionals
users
Serão descritos os métodos de população de cada e sua utilização.
Todas as funções que realizam o seed (população) das collections estão encontradas na pasta seed do projeto (./app/src/seed), e serão disponibilizados para ser usados com o node ou usando um endpoint (lambda).
Para maiores informações sobre os endpoints utilizados manualmente usar o swagger da aplicação (maiores informações: https://dtxlab.atlassian.net/wiki/spaces/NBDO/pages/2685829132 )
ps: para rodar os comandos node localmente é necessário ir ao arquivo do mongo em connections (app/src/connections/mongo.js) e alterar a string da uri da criação da conexão para a string do banco qual queira popular. Isso porque o process.env não vai conseguir identificar qual ambiente automaticamente.
businesses
Nessa collection se encontram os dados de áreas de negócio vinculadas ao banco de obras, se estão ativas e suas subdivisões.
arquivo: populateDb.js
método de execução: navegar até a pasta e usar “node populateDB.js”
constructioncompanies
Essa collection contém as empresas (construtoras) que serão vinculadas a cada obra. Atualmente é feita a inserção de cada construtora manualmente pelo endpoints /construction-company
arquivo: ----
método de execução: manualmente
constructions
Nessa collection é armazenado as obras criadas manualmente ou importadas (excel ou obras online). Essa collection pode ser populada de 3 maneiras:
manualmente: endpoint com /construction
arquivo: ----
método de execução: manualmente
importação do Obras Online: Aqui é necessária a existência da collection rawDatas para que o cron (etlRawdataToConstructions) faça o de/para das obras para o modelo utilizado pelo projeto. O arquivo do cron pode ser utilizado como endpoint para agilizar a inserção dos documentos.
arquivo: ----
método de execução: cron de hora em hora
Excel: É feito pela importação do excel disponibilizado pelo frontend, feito pelo endpoint: /constructions/excel
arquivo: ----
método de execução: manualmente
Após as obras serem inseridas no banco de dados é necessário colocar o internalCode (código de identificação interno para cada obra) esse pode ser feito pelo metodo:
arquivo: createConstructionCode.js
método de execução: navegar até a pasta e usar “node createConstructionCode.js”
deals
Essa collection armazena as negociações que foram feitas para cada obra da collection constructions, assim necessitando das obras ali inseridas.
arquivo: ----
método de execução: manualmente
rawdatas
Aqui é armazenado os dados que são importados do Obras Online (serviço externo para captação de obras), onde são divididos entre o documento original e suas atualizações para depois serem utilizadas pela collection constructions.
Para a população é utilizado um cron (autoImportObrasOnline) para inserir os arquivos corretamente na collection. O arquivo do cron pode ser utilizado como endpoint para agilizar a inserção dos documentos.
arquivo: ----
método de execução: cron diário (24 horas em 24 horas)
regionals
Essa colleciton armazena os valores das regionais que existem atualmente no projeto do banco de obras. Esse seed pode ser feito utilizando a lambda pelo endpoint /etlRegional. Esse endpoint está normalmente comentado.
O endpoint faz um de/para dos dados encontrados no arquivo JSON regional-before-etl.json extraído do documento do share point disponibilizado pela área de negócios do projeto.
arquivo: populateRegionalExcel.js
método de execução: descomentar o endpoint etlRegional para rodar o endpoint /etlRegional
users
Nessa collection é armazenado os usuários do projeto.
O seed utiliza de um arquivo CSV usuarios_banco.csv com os usuários atuais do banco de obras. Atualmente extraído do documento do share point disponibilizado pela área de negócios do projeto.
arquivo: populateUsers.js
método de execução: navegar até a pasta e usar “node populateUsers.js”