Top Posts

Série Scrum Remoto: Team remoto com Scrum rola ou não?

Continue lendo

Gerando Artifacts Maven para Github

Posted by camilolopes | Posted in Git | Posted on 16-09-2013

3

 

Olá Pessoal,

No post de hoje vamos ver como gerar um artifacts usando Maven e o Github, ou seja, vamos dizer que você precisa fazer um deploy e quer deixar isso automático e que o .jar, por exemplo, já fique na pasta específica.

Lets go…

Certamente você não vai querer fazer deploy manualmente, certo? E gostaria que esse fosse integrado com o seu build e seu repositório. Na semana passada eu passei por uma situação assim e fui pesquisar para ver como fazer. Veja o contexto a seguir.

Contexto

Estava concluída a primeira versão da API para JSF: a I4JSF, mas não sabia como fazer um deploy direto para o GitHub, ou seja, ao chamar o comando mvn deploy gostaria que o artifact já fosse publicado no Github. É muito simples. Vejamos os passos a seguir:

Passo 1 – Altere o arquivo setting.xml do maven, normalmente localizado em .m2/config. Adicione nas tags <Servers/>

<server>

      <id>github</id>

      <username>SEU_USERNAME</username>

      <password>SUA_SENHA</password>

    </server>

Passo 2 – Altere o pom.xml do seu projeto

<!– tell the github site-mavenplugin about the new server –>

<properties>

<!– github server corresponds to entry in ~/.m2/settings.xml –>

<github.global.server>github</github.global.server>

</properties>

<!– Finally, tell the site plugin where the artifact has been deployed –>

<distributionManagement>

<repository>

<id>github</id>

<name>GitHub ${project.artifactId} Repository</name>

<url>https://raw.github.com/camilolopes/${project.artifactId}/mvn-repo</url>

</repository>

</distributionManagement>

 Adicione o plugin site-maven-plugin ao pom.xml

<!– Plugin for GITHUB –>

<plugin>

<groupId>com.github.github</groupId>

<artifactId>site-mavenplugin</artifactId>

<version>0.8</version>

<configuration>

<message>Maven artifacts for ${project.version}</message> 

<noJekyll>true</noJekyll>

<outputDirectory>${project.build.directory}/mvn-repo</outputDirectory>

<branch>refs/heads/mvn-repo</branch>                      

<includes>

<include>**/*</include>

</includes>

<repositoryName>your_repository_name</repositoryName>     

<repositoryOwner>YOURUSERNAME</repositoryOwner>  

</configuration>

<executions>

<execution>

<goals>

<goal>site</goal>

</goals>

<phase>deploy</phase>

</execution>

</executions>

</plugin>

 

Passo 3 – Adicione o plugin de deploy

<!– setting deploy in github artifacts –>

<plugin>

<artifactId>maven-deploy-plugin</artifactId>

<version>2.7</version>

<configuration>

<altDeploymentRepository>internal.repo::default::file://${project.build.directory}/mvn-repo</altDeploymentRepository>

</configuration>

</plugin>

Não se preocupe com a branch mvn-repo, ela será criada automaticamente.

Passo 4 – Execute mvn clean deploy e aguarde o download dos plugins.

Acesse o GitHub e veja que a branch mvn-repo foi criada. É onde ficam os .jars:

githubrepo

Pronto, agora ao executar mvn deploy o .jar já vai automaticamente para o GitHub. Fantástico, não?

 Adicionando dependência em outro projeto

Vamos dizer agora que um projeto X decidiu usar seu .jar via maven. O que fazer? Veja a seguir o que ele precisa adicionar no pom.xml:

 <!– I4JSF –>

                <repository>

        <id>I4JSF-mvnrepo</id>

        <url>https://raw.github.com/camilolopes/I4JSF-API/mvn-repo/</url>

        <snapshots>

            <enabled>true</enabled>

            <updatePolicy>always</updatePolicy>

        </snapshots>

    </repository>

E nas dependências:

<dependency>

       <groupId>com.i4jsf</groupId>

       <artifactId>i4jsf</artifactId>

       <version>1.0.0</version>

     </dependency>

 

githubmvnrepocheckoutmaven

Vou ficando por aqui.

See ya!!! 

Série CI:Build Automatizado com Jenkins e GitHub

Posted by camilolopes | Posted in Git, Java, Jenkins, Series | Posted on 08-08-2013

0

Olá Pessoal,

No último post vimos como conectar o Jenkins com o GitHub. Hoje veremos como automatizar o nosso build, ou seja, se alguma mudança ocorreu no repositório, um novo build é iniciado.

Lets go…

Starting…

Considerando que você tem o cenário do post anterior conforme a imagem a seguir:

 

cijenkinscenario

Clique no projeto MyBookStore e vá em configure.

Em build trigger deixe assim:

buildtriggerjenkins

O que fizemos?

Simples, estamos dizendo que a cada mudança no github vamos precisar rodar um novo build, porém, como estamos rodando localmente o jenkins, não tem como o Github informar ao Jenkins que algo mudou, então faremos o Jenkins verificar a cada 1min se algo mudou no Github. Essa é a forma que temos de fazer isso quando não temos o jenkins em um IP Público.

Feito isso, vá em manage jenkins >> configure system

E em GitHub Web Hook deixamos assim:

githubwebhook

Após inserir seus dados do github e a url do repositório, clique em test credential.

Agora vamos testar e ver se o build vai iniciar automaticamente. Mas antes veremos como estamos:

 

historybookstorebuild

No meu caso tenho o histórico de build acima. É esperado que se algo for alterado no repositório uma nova build seja iniciada, claro que não será de imediato, mas sim cada 1 min.

Vá no seu GitHub e acesse o projeto:

mybookstoregithubjenkins

Aperte a tecla T e você poderá realizar uma pesquisa no GitHub. Procure por store e escolha StoreMatrix.java 

storematrixgithub

É a classe que vamos realizar a alteração e aguardar o Jenkins build. Ao selecionar a classe, clique no botão Edit e adicione o atributo address.

addressaddedstorematrix

Clique no botão commit changes .

Vamos aguardar por 1 min e ver se o jenkins inicia o build. O resultado é como a seguir:

buildqueuejenkinsbookstore

Pronto! Temos agora nosso build automatizado conectado ao jenkins. Simples, não?

Vou ficando por aqui e espero que tenham gostado do post.

Abraços, see ya!!