Automatizando Deploy com Apache Ant no JBoss AS 7.1.3 ( JBoss EAP 6.0.1 )

Postado em Atualizado em

Olá amigos,

Acredito que todos nós que trabalhamos com desenvolvimento precisamos em algum momento deployar a aplicação em algum servidor para que outras pessoas tenham acesso e possam realizar os devidos testes. Hoje a tarde passei por uma dessas situações: Eu precisava pegar um pacote .war e realizar o deploy nas minhas instâncias na Amazon EC2. Então estava com o seguinte cenário:

cli remote

Eu estava fazendo algo bem manual mesmo.  Copiava o arquivo .war para o servidor remoto na Amazon e depois me conectava ao CLI remotamente utilizando o comando:

jboss-cli.bat  --connect --controller=201.66.21.20:9999 --user=jboss--password=123456

Isso se tornou uma tarefa bem repetitiva pois toda as vezes eu não me lembrava do IP do JBoss e tinha também que entrar em um Path especifico para executar o JBoss CLI.

Então para facilitar um pouco o processo de deploys, undeploys e outras tarefas, eu decidi utilizar o Apache Ant.  A instação do Ant é bem simples. Basta descompactar, criar a variável ANT_HOME  apontando para o arquivo descompactado do ant e coloca-la no path.

Para verificar se está funcionado basta abrir o cmd e executar: ant. Se obtiver uma resposta similar a abaixo é por que está funcionando.

ant-01

Um script de build do Ant consiste em um documento no formato XML e deve se chamar build.xml.

Vou supor que o ambiente JBoss já está funcionando com o usuário de gerenciamento criado e liberado para acesso remoto. Caso não esteja siga o tutorial Acessando o JBoss AS 7.1.2 (EAP 6) Remotamente Utilizando CLI.

Crie um scritpt build.xml e deixe-o como abaixo:

<?xml version="1.0"?>
<project name="jboss" basedir=".">

<presetdef name="jboss-cli">
   <java jar="D:\Desenvolvimento\jboss-eap\jboss-eap-6.0.1\jboss-eap-6.0\jboss-modules.jar" fork="true" >
      <arg line="-mp D:\Desenvolvimento\jboss-eap\jboss-eap-6.0.1\jboss-eap-6.0\modules org.jboss.as.cli --connect --controller=192.168.0.127:9999 --user=jboss --password=123456" />
  </java>
</presetdef>

 <target name="deploy-project">
  <jboss-cli failonerror="true">
     <arg line="'deploy test.war'" />
  </jboss-cli>
 </target>

 <target name="undeploy-project">
  <jboss-cli failonerror="true">
     <arg line="'undeploy test'" />
   </jboss-cli>
 </target>
</project>

Perceba que está meio bagunçado mas funciona perfeitamente. Para organizar um pouco, voçê pode criar alguns properties como o JBOSS_HOME e o nome da aplicação .war. Veja que é possível também executar qualquer comando CLI que seja necessário.

Veja nos meus testes o resultado:

Deploy

deploy-ant-remoto

Undeploy

undeploy-ant-remoto

Esse é um dos jeitos mais simples de melhorar as práticas de deploy mas o ideal é utilizar um servidor de integração contínua como o Jenkins do qual vou falar nos proxímos posts. Eu vou mostrar como integrar Jenkins, GitHub e o  JBoss AS 7 com toda a estrutura de desenvolvimento.

Por hoje é isso ai!

Grande Abraço

Mauricio Magnani Jr

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s