DevOps

Como espelhar um repositório do Gitlab para outro lugar

Neste artigo vamos mostrar como você pode criar um espelhamento de um repositório do gitlab para qualquer outro servidor git (Gitlab, Github…) e explicar vantagens e restrições que podemos encontrar.

O que são Repositórios espelhados e quais as restrições

Repositório espelhado é uma funcionalidade disponível no gitlab que permite que toda alteração que você fizer em um repositório será espelhada no destino, isso é, o gitlab vai fazer o push ou pull. O Destino pode ser qualquer servidor git desde que a conexão seja via HTTP ou SSH. Antes de iniciar de fato em como fazer o espelhamento, vale algumas ressalvas. Até a versão 16.x do gitlab você tinha as seguintes formas de espelhar:

  • Push: espelha um repositório do GitLab para outro local.
  • Pull: espelha um repositório de outro local para uma instância do GitLab Premium.
  • O espelhamento bidirecional também está disponível, mas pode causar conflitos (apenas GitLab Premium).

Consulte a documentação para saber as restrições na sua versão, neste artigo vamos mostrar como fazer na versão community.

Pré-Requisitos

Agora que sabemos que vamos fazer um push precisamos atender mais alguns requisitos. O gitlab de origem precisa ter conexão com o git de destino, seja pública por VPN ou qualquer outra forma. Além disso você precisa de um usuário e senha (ou token) para fazer o push via HTTP ou de acesso a uma conta no git de destino, para vincular uma chave pública ssh que será usada para fazer um push (criar uma conta dedicada, pode ser uma alternativa). Além disso é preciso que você já tenha criado um projeto vazio no git de destino e mantenha ele vazio até a finalização do espelhamento.

Fazendo o espelhamento via SSH

Quando copiamos uma url do git para fazer o clone via ssh ele tem uma estrutura similar a esta:

[email protected]:danilodorgam/k8s-kubetools.git
Bash

Porém para o Gitlab entender a url do projeto devemos adaptar para o seguinte padrão:

ssh://[email protected]/danilodorgam/k8s-kubetools.git
Bash

Feito isso basta preencher a tela que fica em Projeto -> Configuração -> Repositório -> Espelhamento. Na sequência clicamos em “Detectar Chaves de Host” a fim de garantir que a conexão esteja funcionando, e como método de autenticação escolhemos “Chave SSH pública“, conforme imagem abaixo:

Feito este espelhamento, agora devemos copiar a chave ssh que nos foi gerada e vincular a um usuário com acesso ao grupo. Para isso basta clicar no ícone “copiar” conforme imagem abaixo:

Agora para confirmar se fizemos tudo certo até agora podemos clicar no ícone de “Atualizar agora” e devemos ter o status, se tudo tiver certo devemos ver em “Última atualização bem-sucedida” o status “agora“, se não ele vai apresentar a mensagem de erro.

Conclusão

O que achou dessa possibilidade? Vai migrar alguns projetos? Ficou com alguma dúvida? Não deixe de comentar. Quer ver na prática? No nosso exemplo fizemos uma migração deste projeto no gitlab para este no github.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.