O tutorial abaixo foi criado para o Sistema Operacional Windows. Alguns passos foram documentados também para Linux. Caso encontre alguma dificuldade, entre em contato com Rodrigo Barreiros no e-mail rodrigo.barreiros@stf.jus.br.
Baixe o Eclipse STS (Spring Tool Suite). Enquanto o download é realizado, continue configurando o ambiente...
Instale o Docker ToolBox 1.11.1+.
Abra o Docker Quickstart Terminal e na sua pasta de preferência (ex: /c/dev) , para baixar o repositório e execute os comandos abaixo:
$ git clone https://github.com/supremotribunalfederal/stfdigital.git
$ cd stfdigital
$ ./clone-all.sh
Isso deve resultar na seguinte estrutura de diretórios:
Cada componente deverá ser construído separadamente, portanto cada um tem seu próprio arquivo de construção. Usamos Gradle como ferramenta de montagem, então você precisa instalá-lo antes de prosseguir.
Baixe o binário do Gradle e extraia o zip para o diretório de sua preferência. Adicione o diretório bin (SeuDiretorioGradle\gradle-2.13\bin) na variável de ambiente "Path" do seu sistema operacional.
Para configurar a variável de ambiente no windows clique com o botão direito em Meu Computador > Propriedades > Configurações avançadas do sistema > Variáveis de Ambiente > Clique duas vezes em Path e inclua ";SeuDiretorioGradle\gradle-2.13\bin". Depois clique em OK.
Apesar da instalação do Virtual Box com o Docker ToolBox, recomendamos sua atualização para a versão mais recente (5.0.20+) em: Baixar Virtual Box.
Execute o Docker Quick Start Terminal como administrador para executar a máquina virtual. Ele criará as interfaces de redes virtuais.
Pare a máquina virtual com o seguinte comando: docker-machine stop default
. Abra o Virtual Box clique com o botão direito na máquina virtual default, clique em configurações > Sistema > Aumente a Memória Base para 3GB (3072MB). Esse passo é importante por rodarmos mais de 10 containers simultâneos. Feche e abra o Docker Quickstart novamente para aplicar as alterações e levantar a máquina novamente.
Para facilitar o acesso a Docker Machine, relacione seu IP ao alias "docker". Para identificar o IP da Docker Machine, execute o comando abaixo:
$ docker-machine ip
Copie o endereço de IP e
No Windows, abra o arquivo
C:\Windows\System32\drivers\etc\hosts
E adicione as linhas abaixo:
192.168.99.100 docker rabbit mongo discovery documents gateway processos ui identidades
No Linux, isso pode ser feito adicionando uma entrada no arquivo /etc/hosts
, como no exemplo abaixo
192.168.99.100 docker rabbit mongo discovery documents gateway processos ui identidades
Você poderá confirmar se esse relacionamento está funcional executando o comando ping
contra o alias criado.
$ ping docker
PING docker (192.168.99.100): 56 data bytes
64 bytes from 192.168.99.100: icmp_seq=0 ttl=64 time=0.314 ms
64 bytes from 192.168.99.100: icmp_seq=1 ttl=64 time=0.340 ms
64 bytes from 192.168.99.100: icmp_seq=2 ttl=64 time=0.386 ms
Digite javac -version e caso não tenha instalado, baixe o Java JDK 8 e instale.
Crie uma nova variável de ambiente chamada JAVA_HOME com o endereço da instalação do JDK (ex: C:\Program Files\Java\jdk1.8.0_91) Adicione na variável Path ";%JAVA_HOME%\bin"
Execute o comando javac - version para verficar se a instalação foi realizada com sucesso. Feche e abra o Docker Quickstart Terminal novamente.
Você também precisará ter a versão mais recente do NodeJS 5.9 (já inclui NPM). Sugerimos 5.9.1+. Não baixe versão superior a NodeJS 6+, ela ainda não foi testada.
Após instalar o NodeJs, feche e abra novamente o Docker QuickStart Terminal (para recuperar as novas variáveis de ambiente). Para verificar se o NodeJS e o NPM estão instalados corretamente, execute os comandos:
node -v
npm -v
Execute o seguinte comando para instalar o gulp globalmente:
$ npm install -g gulp
O Maven ainda não é necessário nesse passo, mas você pode baixá-lo em Maven. Ele deverá ser configurado adequadamente para que o Gradle reutilize as bibliotecas já existentes em seu repositório local. Falaremos sobre esse passo mais adiante.
Para facilitar o processo, temos um pequeno script que pode ser usado para construir todos os componentes de uma vez.
Agora podemos rodar o script de construção do ambiente. Reinicie o Docker Quickstart terminal para carregar as variaveis de ambiente e entre no diretório que clonou o ambiente e execute o comando abaixo:
$ ./build-all.sh
A execução do script Gradle termina com a geração da imagem docker de cada componente.
Vá tomar um café! Esse passo demora mesmo!
Isso deverá resultar em sete mensagens iguais a mensagem de log abaixo:
BUILD SUCCESSFUL
Neste ponto, todas as imagens docker já foram geradas.
Execute o comando
$ docker images
E veja o resultado abaixo:
REPOSITORY TAG IMAGE ID CREATED SIZE
stfdigital-plataforma-ui latest 38625052905a 2 minutes ago 254.1 MB
stfdigital-autuacao-distribuicao latest 59bc4671989e 4 minutes ago 254.4 MB
stfdigital-autuacao-autuacao latest 087a6508857d 4 minutes ago 254.3 MB
stfdigital-plataforma-documents latest 415ed3e38505 About an hour ago 272.5 MB
stfdigital-plataforma-identidades latest 7a39edcc72e3 About an hour ago 254.3 MB
stfdigital-plataforma-processos latest 960b2163c474 About an hour ago 254.5 MB
stfdigital-plataforma-gateway latest 187aa4d0f0ef About an hour ago 214.5 MB
stfdigital-plataforma-discovery latest 1527e91ead85 About an hour ago 212.6 MB
stfdigital-autuacao-recebimento latest db7b10569848 About an hour ago 254.5 MB
stfdigital-autuacao-peticionamento latest 26289ebe34f2 About an hour ago 254.5 MB
Você poderá rodar todas elas de uma única vez usando Docker Compose:
$ docker-compose up -d
Abra o Kitematic (que já foi instalado com o Docker Toolbox) ou acompanhe as mensagens de log pelo comando:
$ docker-compose logs
A medida que os serviços forem iniciados, eles serão registrados automaticamente no serviço de discovery. Acesse http://docker:8761
para acompanhar o registro dos serviços. Quando todos estiverem registrados, você deverá ver a tabela como no exemplo abaixo:
Rode no diretório plataforma/ui os comandos abaixo e pare o container de UI pelo Kitematic
npm install
gulp serve
Usamos Eclipse STS como IDE. Certifique-se que você tem a última versão. Você também precisará instalar os seguintes plugins:
> Buildship: Eclipse Plug-ins for Gradle
> Typescript.java
Para baixar o plugin do Gradle siga os passos abaixo:
abra o Eclipse,
clique em Help
"Install New Software...".
Selecione Work with <Neon>.
Procure General Purpose Tools/Buildship: Eclipse Plug-ins for Gradle.
Next, Next, Finish.
A instalação do typescript.java não funcionou
Para instalar o reconhecimento da sintaxe do Typescript Typescript.java siga os passos abaixo:
Abra o Eclipse > clique em Help > Install New Software... > ADD.
Inclua em location site o link do typescript.java "http://oss.opensagres.fr/typescript.ide/1.0.0-SNAPSHOT/". O nome pode ser Typescript.java Update site.
Marque todas as opções e clique em Next, Next, Finish.
A instalação do typescript.java não funcionou
Você vai precisar importar todos os componentes separadamente. Você pode importar cada projeto diretamente pelo Eclipse, como um Projeto Gradle, ou pode executar o comando abaixo, no diretório de cada projeto, para gerar os arquivos necessários antes de importá-lo como um projeto já existente.
Abra o Git Bash e na raiz do STF Digital, para gerar os arquivos de importação do eclipse, digite:
$ ./import-all.sh
Ou rode manualmente o comando abaixo em cada pasta que deseja trabalhar:
$ gradle eclipse
Após rodar o comando, um arquivo chamado .project e uma pasta .settings serão criados permitindo importação do projeto no eclipse. Para importar siga os passos abaixo:
> Clique com o botão direito na view Package Explorer
> Clique em Import
> Clique em General > Existing Projects into Workspace
> Selecione o diretório em que você rodou o comando "gradle eclipse"
Repita os passos para cada um dos componentes.
> Clique com o botão direito na view Package Explorer
> Clique em Import
> Clique em Gradle - aparecerá se o plugin Gradle estiver instalado corretamente
> Clique em Gradle Project
> Clique em Next, Next
> Clique em Browse
> Selecione o diretório do projeto (ex: stfdigital/autuacao/recebimento)
> clique em Next, Next, Finish `é normal demorar na primeira execução`
Se optar por uma organização com Working Sets, você deverá ter uma estrutura de projetos como na imagem abaixo:
> Clique com o botão direito no nome do projeto
> Assign Working Sets
> Selecione Autuação ou Plataforma, por exemplo
> No cabeçalho da view Package Explorer, clique na seta para baixo
> Top Level Elements > Working Set
Para viabilizar o desenvolvimento local usando as imagens docker, usamos o Spring Devtools, que permite o hot restart
de aplicações Spring Boot rodando dentro de um container docker. Os serviços da plataforma já estão configurados para viabilizar tal funcionalidade. No Eclipse, basta executar a sequência abaixo:
- Com o botão direito, clique no projeto "processos"
- Em seguida, clique em "Run As" -> "Sprint Devtools Client"
- Em "Remote Url" informe "http://docker:8081"
- Em "Remote Secret" informe "stfdigital"
- Click em "Run"
Isso vai iniciar uma conexão remota com a imagem docker correspondente. No terminal, acesse o log do container pelo comando:
$ docker-compose logs processos
Faça alguma alteração no arquivo "ProcessoRestResource" (por exemplo, altere de "Publicado" para "Distribuído"). Assim que você salvar o arquivo, as mensagens de log do restart devem começar a ser exibidas no terminal. Após concluído o restart, acesse o browser para confirmar se a label da tabela de pesquisa foi realmente alterada, de "Publicado" para "Distribuído".
Para realizar o debug, bastar acessar a mesma configuração usada acima, mas em modo Debug. Para confirmar, coloque um break point no arquivo "ProcessoRestResource" e acesse novamente a funcionalidade de pesquisa.
Para finalizar todos os serviços, basta executar o comando abaixo:
$ docker-compose down