GIT + Jenkins + GIT, mantendo sincronizado

Como uma boa curva de rio, só pego esse tipo de coisa…

A alguns dias eu me deparei com um problema, eu precisava deixar sincronizado um repositório git que ficava em um servidor duvidoso com um meu no bitbucket.

A forma que eu consegui gerenciar isso foi criando um job dentro do Jenkins e nem foi tanto gato assim hehe.

Para a demonstração, criei esses dois repositórios:

Configurações de ambiente:

  • Marque “Delete workspace before build starts”, essa opção vem com o plugin Workspace Cleanup Plugin, isso é necessário pois o “git remote add” dará erro se tentar adicionar duas vezes a mesma URL;
  • Você também vai precisa do SSH Agent e uma chave ssh no git, isso é por conta de, no primeiro repositório você pode acessar com login ou chave, mas para o segundo só vai com chave ssh. No meu caso, eu precisei fazer o gato das primeiras linhas, isso ocorre por conta do Jenkins dentro do docker.

No parâmetros de build selecione executar shell e use esse aqui.

Para conferir o trabalho, ta ai o log.

Há duas formas de manter a sincronia entre os repositórios, a primeira delas é criar um hook na origem, a outra forma é configurar o “polling scm” no Jenkins, ai ele vai de tempos em tempos pegar esse código novo. Cada uma tem a sua vantagem e desvantagem vai de vocês 🙂

E foi assim que tudo acabou bem.