Top Posts

Série 3 Refactoring e Manutenção de Software

Continue lendo

Troubleshooting Jenkins com repositório privado Github

Posted by camilolopes | Posted in Git, Jenkins | Posted on 14-02-2014

0

 

Olá Pessoal,

Quebrei a cabeça esses dias tentando fazer o jenkins se comunicar com um repositório privado no GitHub. Considerando que o jenkins está em um servidor remoto, deu muito trabalho, gastei umas 12hrs até funcionar.

O Problema:

jenkins github private repository returned status code 128:

Essa é a exceção que recebemos quando o Jenkins tenta conectar ao repositório privado para fazer o clone.

O motivo?

O Jenkins não consegue autenticar para fazer o clone.

O que achei?

Não fui muito feliz achando que era da mesma forma que fazemos com repositório público, que apenas gerar o ssh key e adicionar no github. Mas não é bem assim.

Solução

Para resolver o problema eu tive que adicionar 2 ssh key.

  1. Gerei um ssh específico (algo como id_rsa_meuprojeto);
  2. Peguei o id_rsa que já tinha no meu servidor e adicionei ao github.

Resumindo em steps

1. Passphrase não pode ter password, ou seja,  deixar empty para o id_rsa_meuprojeto

2. Criei um key específico id_rsa_meuprojeto e adicionei no github e dei authorized no servidor pelo painel. No meu caso uso  integrator

3. Adicione o id_rsa do servidor no github

4. No Jenkins usei key do id_rsa_meu projeto

Veja na imagem a seguir:

demoniojenkinsfixed

E no Jenkins informe o repositório assim:

jenkinsconfiggithub

Ou seja, usando git@github.com:youruser/yourproject

Não use Https, porque não vai.

É isso ai, só buildar e ver o clone rolando.

Abraços, see ya!! 

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!!!