/
Passo a passo para criação de ambiente/deploy

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”

 

Related content

Perguntas e respostas
Perguntas e respostas
Read with this
Integração Bitbucket com Databricks [DESCONTINUADO]
Integração Bitbucket com Databricks [DESCONTINUADO]
More like this
DE PARA (ETL) RAWDATA -> CONSTRUCTION
DE PARA (ETL) RAWDATA -> CONSTRUCTION
Read with this
Integração Bitbucket com JIRA
Integração Bitbucket com JIRA
More like this
Guideline - Devs (Databricks)
Guideline - Devs (Databricks)
More like this
Integração GITHUB com Databricks
Integração GITHUB com Databricks
More like this