O Registro Livre é uma plataforma de dados abertos cujo objetivo principal é colocar à disposição do público informações sobre empresas, imóveis e outros tipos de bens e atividades sujeitos a registro público no Brasil. Embora os dados disponíveis em cartórios e juntas comerciais sejam públicos, eles raramente são publicados. O cidadão que deseja ter acesso a contratos sociais e informações sobre propriedade de imóveis, por exemplo, precisa pagar taxas e aguardar vários dias para receber cópias de documentos. O Registro Livre vai reunir estes dados numa plataforma aberta, para a qual todo cidadão poderá contribuir. Desta forma, os registros públicos serão acessíveis a todos e tornados públicos de fato.
- Java 8
- Spring MVC
- SpringBoot
- Gradle
- PostgreSQL
- Hibernate
- Bootstrap3
- GO
- Vagrant
- JUnit
- Hamcrest
- Mockito
- Jasmine
- Karma
- Sinon
- Chai
$ brew install node
No Mac OS X, instalando somente o 'node', o npm já é incluso.
$ sudo apt-get update
$ sudo apt-get install nodejs
$ sudo apt-get install npm
$ ./gradlew jsTest
Para ter uma instância do GO-CD executando no seu computador, basta executar o comando abaixo:
$ ./gradlew bringUpGoServerLocally
Após a inicialização da maquina, execute provisionGoServer para fazer o provisionamento da maquina, o que irá instalar e configurar todos os requisitos necessários:
$ ./gradlew provisionGoServerLocally
Ao fazer isso o GO-CD será configurado dentro da maquina virtual criada no step anterior, permitindo o acesso ao GO-CD através das configurações informadas no Vagrantfile na pasta infrastructure/go. Se as configurações padrões foram mantidas, o acesso será através da url: 192.168.33.10:8153/go.
Além disso você pode destruir a maquina virtual executando o comando:
$ ./gradlew destroyGoServerLocally
E a qualquer momento verificar o status da maquina virtual usando:
$ ./gradlew statusGoServerLocally
GO-CD provem duas formas para autenticação de acesso. A primeira utilizando um arquivo de configuração de senhas (no formato padrão do Apache htpasswd) ou por autenticação LDAP/ActiveDirectory. Para este projeto nós ultizaremos a primeira opção. Você pode ler mais sobre as formas de autenticação lendo a documentado do GO-CD na parte de autentication, clicando aqui.
O arquivo com as configurações de senhas pode ser encontrado em:
$ infrastructure/go/configurations/htpasswd
Para criar um login de acesso, primeiro verifique se você já possui o Apache htpasswd instalado no seu computador, caso não o possua, clique aqui para saber como instalar.
Uma vez instalado, vá até a pasta root do projeto e execute o seguinte comando:
$ htpasswd -s infrastructure/go/configurations/htpasswd "username desejado"
A senha desejada será solicidada e será armazenada no arquivo htpasswd (usando hash SHA1), lembrando que será necessário executar o provisionamento da maquina virtual utilizada pelo go novamente.
O ambiente local para executar a aplicação é em uma máquina virtual. Para criar a máquina virtual no ambiente local, executar o script abaixo:
$ ./gradlew bringUpLocalAppServer
Para provisionar a máquina local, tem que configurar as variáveis de ambientes antes de executar a task "provisionLocalAppServer":
- Gere uma SSH key para acessar a maquina virtual:
$ ssh-keygen -t rsa -b 4096 -C "registrolivre"
- Copie a chave pública gerada para o diretório adequado:
$ cp registrolivre.pub infrastructure/application/public_keys/
- Adicione as seguintes variáveis de ambiente (recomendo usar o direnv):
export REGISTROLIVRE_PRIVATE_KEY="caminho_da_chave_privada"
export LOCAL_REGISTROLIVRE_IP="192.168.33.71" # ip do vagrant box
- Provisionamento:
$ ./gradlew provisionLocalAppServer
Para verificar o status da sua máquina local:
$ ./gradlew statusLocalAppServer
Para destruir a máquina virtual, se necessário:
$ ./gradlew destroyLocalAppServer
Para criar o banco de dados local é necessário que sua chave pública esteja presente no diretório infrastructure/application/public_keys.
$ ./gradlew createLocalDatabase
Para destruir o banco de dados local, se necessário:
$ ./gradlew destroyLocalDatabase
Migrations devem ser adicionadas no diretório src/main/resources/db/migration/.
Os arquivos de migration devem seguir o padrão abaixo de nomenclatura.
- Prefixo: V
- Versão: Pontos e underscores separão as partes, você pode usar quantas partes quiser
- Separador: __ (dois underscores)
- Descrição: Underscores separam as palavras
- Sufixo: .sql
Exemplo: V1__init.sql
Para executar as migrations na Máquina Virtual é só fazer um novo deploy da aplicação, executando:
$ ./gradlew deployLocalAppServer
Para fazer o deploy da aplicação no ambiente local, antes tem que ter executado as tasks "bringUpLocalAppServer", "provisionLocalAppServer" e "createLocalDatabase"
A task para efetuar o deploy da aplicação:
$ ./gradlew deployLocalAppServer
Url para acessar a aplicação local: http://192.168.33.71:5000/
Url para acessar a aplicação: http://ec2-54-232-246-149.sa-east-1.compute.amazonaws.com:5000/