sábado, 23 de agosto de 2014

Linux - Ambiente de Desenvolvimento - Parte 1

A partir desta postagem mostrarei como criar um ambiente de desenvolvimento completo para o Ubuntu 14.04. Muitos desenvolvedores acreditam que desenvolver aplicativos se restringe apenas a instalar uma IDE (normalmente o Eclipse), porém vejamos alguns problemas que pode ocorrer:
  • Como controlar as versões? Gostaria de obter parte de código que criei para a versão X porém já sobrepus com a versão Y.
  • Como controlar as bibliotecas? Baixamos diversas APIs e muitas delas podem dar incompatibilidade, ou então simplesmente baixar novamente uma mesma biblioteca para diferentes projetos, ou seja, várias cópias de uma mesma biblioteca em partes diferentes do sistema.
  • Aonde está determinada Classe? Peguei um artigo que falava de uma classe X porém qual biblioteca (e suas dependências) devo baixar? Ou será que já tenho?
  • Estou com problemas na integralização pois muitas vezes trabalhamos por partes e criamos os módulos separadamente e temos que ficar compilando tudo (e testando) toda vez que terminamos uma nova versão para saber se está tudo certo.
E isso para citar apenas alguns problemas que podem ocorrer. Resolvi através de várias pesquisas eliminar parte (ou todos) esses problemas que podem acontecer na criação de um projeto por parte do desenvolvedor e chamei isso de Ambiente de Desenvolvimento.

AOS MEUS CRÍTICOS. Antes de mais nada quero dizer que não, isso não é uma ideia original, não é minha e creio que muita gente já faz dessa forma. Resolvi simplesmente expor todo esse processo de forma que qualquer desenvolvedor possa ter acesso a esse valioso conjunto de ferramentas sem ter que ficar com um louco para tentar descobrir a forma de consegui-lo.

A seguinte figura vai ilustrar melhor:


Tudo parte da criação dos fontes por parte do desenvolvedor através do Eclipse, ao ser realizado um commit (não existe uma tradução para essa palavra com o que representa na área de informática e me recuso a usar "comitar") os fontes irão para o repositório que é controlado por um SCV (GitHub ou Subversion). A versão atual é disponibilizada para um SIC (Jenkins) que possui duas ações primordiais: conversar com o GR (Sonatype Nexus) para atualizar ou verificar a necessidade de alguma biblioteca e conversar com o GC (Maven) para a criação de um nova versão do aplicativo.

Não pretendo criar uma única postagem mostrando como instalar todo esse ambiente de uma única vez no Ubuntu e como diria Jack "vamos por partes". Aviso que meu ambiente está configurado para a linguagem Java, porém com as devidas adaptações pode ser expandido para qualquer outra.

Vou partir do pressuposto que temos duas máquinas (uma será o Servidor e a outra o Cliente) já ligadas em rede e com o sistema Ubuntu 14.04 ou superior. E a partir deste ponto iremos baixar, instalar e configurar todos os aplicativos necessários tanto para o Servidor (divida os aplicativos para vários servidores se desejar) como para o Cliente (replique-o para quantos forem necessários).

Parte Servidor - Sistema de Controle de Versão


Tudo aqui será instalado a partir de comandos no terminal (desenvolvedores não podem ter medo de usar o terminal no Linux), não se preocupe pois faremos tudo passo a passo. Peço apenas um pouco de atenção pois alguns comandos precisam da permissão do superusuário (ou seja, o Deus do sistema) e existe a remota possibilidade de corromper qualquer coisa (tenha suas cópias de segurança sempre a mão).

Iremos criar um ambiente local e sem interferências externas e utilizaremos o Subversion, se deseja usar o GitHub recomendo uma visita neste site. É muito importante controlar as versões de publicações de um sistema, podemos consultar o histórico ou retornar uma versão antiga em caso de qualquer problema. Para usarmos o SCV em toda a rede é recomendável instalar um servidor Web Apache que serve como uma "janela Web". Trabalharemos aqui com aplicações Java portanto os nomes dos repositórios devem ser simples (sem acentos ou espaços).

Sigamos os passos para a instalação do SVN e configuração do repositório, abra uma janela de terminal (Ctrl+Alt+T) e digite os seguintes comandos:

1. Instalar o Apache2 para acesso via servidor Web:
$ sudo apt-get install apache2
2. Instalar o Subversion e o módulo de acesso ao Apache:
$ sudo apt-get install subversion libapache2-svn
3. Criar uma pasta de trabalho onde estarão localizados os fontes:
$ mkdir [repositorio]
4. Criar o SVN nesta pasta de trabalho:
$ sudo svnadmin create [repositorio]
5. Fornecer as permissões necessárias de acesso Web para esta pasta:
$ sudo chown -R www-data:www-data [repositorio]
$ sudo chmod -R 770 [repositorio]/
6. Se desejar importar arquivos para a pasta de trabalho (não faça):
$ sudo svn import [origem] file:///[repositorio]
7. Habilitar o módulo do SVN para o Apache:
$ sudo a2enmod dav_svn
8. Editar o arquivo de configuração do módulo:
$ sudo gedit /etc/apache2/mods-available/dav_svn.conf
9. E deixá-lo com a seguinte configuração:
<location /svn/[repositorio] >
  DAV svn
  SVNPath [repositorio]
</location>
10. Reiniciar o serviço do Apache2
$ sudo service apache2 restart
11. Testar o endereço no navegador
http://localhost/svn/[repositorio]/
Pronto pode digitar o comando exit no terminal e voltar a respirar pois se tudo está correto o Subversion foi instalado sem problemas.

Parte Cliente - Configuração no Eclipse


No cliente é necessário instalar o plugin do Subversion no Eclipse. A instalação do Eclipse consiste em realizar o download do aplicativo no site e descompactar em qualquer local (de preferência abaixo da sua pasta \home). Como referência, utilizaremos a versão Luna tipo "Eclipse for Java EE Developers".

No menu principal do Eclipse acessar "Help | Install New Software". Na janela mostrada pressionar o botão Add... e os seguintes dados:

Name: Subversion
Location: http://subclipse.tigris.org/update_1.10.x

Pressionar o botão OK e será mostrada duas opções "Subclipse" e "SVNKit", marcar ambas e pressionar o botão Next>. Na próxima janela é mostrado o que será instalado, pressionar o botão Next>. Se concorda com os termos da licença marque "I accept the terms of the license agreements" e pressionar o botão Finish. Ao término reiniciar o Eclipse para aplicar todas as mudanças.

Novamente com o Eclipse aberto será solicitado sua participação nas pesquisas do Subversion, isso é uma contribuição muito valiosa e é o mínimo para ajudar o projeto a melhorar, deixar marcado e pressionar o botão OK.

Neste ponto pode ocorrer um erro e acusar a falta da biblioteca JavaHL, não se desespere, abrir uma janela de terminal e digitar os seguintes comandos:

1. Tentar localizar se a biblioteca existe em algum lugar do sistema:
$ sudo find / -name libsvnjava
2. Se não existir então instalar:
$ sudo apt-get install libsvn-java
3. Após a instalação, localize-a (com o comando em 1, vamos supor que a resposta seja: /usr/lib/x86_64-linux-gnu/jni/libsvnjavahl-1.so). Anotar o caminho do diretório, na pasta que foi descompactado o Eclipse existe um arquivo chamado eclipse.ini, adicionar ao final deste a seguinte linha:
-Djava.library.path=/usr/lib/x86_64-linux-gnu/jni
Reiniciar o Eclipse e no menu principal selecionar "New | Other...", selecionar a opção "SVN | Checkout Projects from SVN", pressionar o botão Next>. Selecionar "Use existing repository location:" e marcar o endereço "http://[servidor]/svn/[repositorio]". Selecionar a pasta (virtual) para fazer o checkout do projeto e pressionar o botão Finish. Confimar com Yes.

Como teste vamos criar um projeto tradicional, por exemplo, selecionar "Java Project" e pressionar o botão Next>. Digitar o nome do projeto e pressionar o botão Finish. E confimar com OK.

Observar que no projeto criado aparece um * em preto, isso significa que existem dados que não foram versionados no servidor, clique com o botão direito sobre o projeto e selecione Team. Aparece as opções para a realização de um trabalho versionado. Bons códigos.

Obrigado e até a próxima
Fernando Anselmo

0 comentários:

Postar um comentário