Es posible tener un repositorio principal en gitlab y que mantenga copia sincronizada automáticamente en github, o viceversa.

Ambas posibildades requieren que primero cree un testigo de acceso personal en github con el siguiente procedimiento:

  • Diríjase a https://github.com/settings/apps
  • Elija Personal access tokens -> Tokens (classic)
  • Cree uno nuevo con un nombre que le facilite identificarlo, el tiempo de expiración que requiera y por lo menos con los permisos repo (y todos los de este) y workflow
  • Cuando vea el testigo guárdelo pues no volverá a verlo y lo requerirá con cada repositorio que quiera replicar con este token.

1. Mantener repositorio principal en gitlab

En github cree un nuevo repositorio en blanco que recibirá la copia.

Configure el repositorio de gitlab para empujar hacía github así:

  • Diríjase al repositorio de gitlab que va a replicar
  • Elija Configuración -> Repositorio
  • Expanda la sección Replicando repositorios
  • Como URL del repositorio utilice https://testigo@github.com/usuario/repositorio.git
  • La dirección de la replica debe ser push
  • En el campo para usuario ponga el mismo testigo. Deje en blanco el campo de contraseña y presione el botón Replicar Repositorio
  • Verá que se agrega el repositorio al listado Repositorios replicados y podrá presionar el icono de Actualizar para iniciar la replica (la cual podrá confirmar en github).

2. Mantener repositorio principal en github

En gitlab:

  • Cree un nuevo repositorio donde recibirá la copia de github, elija Ejecutar CI/CD para un repositorio externo
  • Desde allí presione el botón de github
  • En Token de acceso personal pegue el testigo que creó en github y que guardó.
  • A continuación gitlab presentará los diversos repositorios que tiene en github y que podría replicar en gitlab para correr integración continua.
  • Elija el que va a replicar y presione Conectar.

Referencias

  • https://stackoverflow.com/questions/30268549/mirroring-from-gitlab-to-github
  • https://docs.gitlab.com/ee/user/project/repository/mirror/index.html