Skip to main content

Migración de los repositorios de GitLab a GitHub

Realice una ejecución de prueba y, a continuación, migre los repositorios de GitLab a GitHub.

Prerequisites

  • Debe haber completado todas las fases anteriores de esta guía.
  • El proyecto de GitLab debe estar habilitado para las exportaciones. Consulte Habilitar la exportación de proyectos y la configuración de Sidekiq para las importaciones en la documentación de GitLab.
  • Asegúrate de comprender los datos que se migrarán y las limitaciones de compatibilidad conocidas del importador. Para obtener más información, consulte Descripción de las migraciones de GitLab a GitHub.
  • Aunque no es necesario, se recomienda detener el trabajo durante la migración de producción. Importer no admite migraciones diferenciales, por lo que los cambios que se produzcan durante la migración no se migrarán. Si decides no detener el trabajo durante la migración de producción, tendrás que migrar manualmente estos cambios.

Realización de una ejecución de prueba

Para ayudar a descubrir problemas que podrían ser únicos para su empresa, se recomienda encarecidamente realizar una ejecución de prueba de la migración. Con una ejecución de prueba, aprenderá lo siguiente:

  • Si la migración de un repositorio determinado se puede completar correctamente.
  • Si puede restaurar el repositorio migrado a un estado operativo.
  • Cuánto tiempo tardará una migración en ejecutarse.

Las ejecuciones de prueba se pueden realizar en cualquier momento y no es necesario detener el trabajo durante la migración. A fin de reducir el tiempo necesario para completar las migraciones de prueba, puedes programar los lotes de las ejecuciones de prueba de manera consecutiva. Después, los usuarios de esos repositorios pueden validar los resultados por su cuenta.

  1. Configura una organización organizativa de prueba para tus migraciones de prueba.

    Puedes usar una sola organización para todas las ejecuciones de prueba, o bien puedes crear una organización de prueba para cada organización de destino prevista. Considera la posibilidad de incluir -sandbox al final de los nombres de la organización, para aclarar que las organizaciones solo están pensadas para la validación de la migración y no para producción. Puedes eliminar las organizaciones de prueba cuando hayas terminado.

  2. Ejecuta las migraciones de prueba.

  3. Confirme que puede completar las tareas de seguimiento en Tareas de seguimiento.

  4. Pide a los usuarios que validen los resultados de las migraciones.

  5. Resuelve las incidencias detectadas por las migraciones de prueba.

  6. Opcionalmente, elimina la organización de prueba.

Migración de un único repositorio

Para migrar un repositorio, use el gh gl2gh migrate-repo comando .

Shell
gh gl2gh migrate-repo \
  --gitlab-server-url GITLAB_SERVER_URL \
  --gitlab-group SOURCE_GROUP \
  --gitlab-project SOURCE_PROJECT \
  --github-org DESTINATION \
  --github-repo NEW_REPO_NAME \
  --use-github-storage

Reemplaza los marcadores de posición del comando anterior por los valores siguientes.

Marcador de posiciónValue
GITLAB_SERVER_URLDirección URL completa de la instancia de GitLab, como https://gitlab.com o https://gitlab.example.com.
SOURCE_GROUPRuta de acceso completa del grupo o espacio de nombres que contiene el proyecto. En el caso de los subgrupos anidados, use la ruta de acceso completa, como parent-group/subgroup.
SOURCE_PROJECTProyecto de GitLab que se va a migrar.
DESTINOOrganización de destino en GitHub.
NEW_REPO_NAMENombre del repositorio en GitHub.

Si no usa GitHub-owned blob storage, consulte Configuración de Blob Storage.

Argumentos adicionales

ArgumentDescription
--target-repo-visibilityEstablece la visibilidad del nuevo repositorio en public, privateo internal. Tiene como valor predeterminado private.
--target-api-url TARGET-API-URLSi vas a migrar a GHE.com, agrega --target-api-url TARGET-API-URL, donde TARGET-API-URL es la dirección URL de la API base para el subdominio de la empresa. Por ejemplo: https://api.octocorp.ghe.com.
--target-uploads-url TARGET-UPLOADS-URLSi va a migrar a GHE.com y usa GitHub-owned blob storage, agregue --target-uploads-url TARGET-UPLOADS-URLtambién , donde TARGET-UPLOADS-URL es la dirección URL de la API de carga base para el subdominio de la empresa. Por ejemplo: https://uploads.octocorp.ghe.com. Este valor predeterminado es https://uploads.github.com.
--no-ssl-verifyDeshabilita la comprobación ssl cuando se comunica con la GL2GH extension instancia de GitLab. Use esto solo si la instancia de GitLab usa un certificado autofirmado. Todos los demás pasos siguen comprobando SSL.
--archive-url URLImporta un archivo exportado previamente desde una dirección URL, en lugar de volver a exportar el proyecto desde GitLab.
--archive-path PATHImporta un archivo exportado previamente desde una ruta de acceso de archivo local, en lugar de volver a exportar el proyecto desde GitLab.
--keep-archiveConserva el archivo de exportación localmente en lugar de eliminarlo después de una carga correcta.

Generación de un script de migración

Si desea migrar varios repositorios a GitHub Enterprise Cloud la vez, use para GitHub CLI generar un script de migración. El script resultante contiene un migrate-repo comando por repositorio.

Para generar un script de migración, ejecuta el comando gh gl2gh generate-script.

Shell
gh gl2gh generate-script \
  --gitlab-server-url GITLAB_SERVER_URL \
  --github-org DESTINATION \
  --output FILENAME \
  --use-github-storage

Reemplaza los marcadores de posición del comando anterior por los valores siguientes.

Marcador de posiciónValue
GITLAB_SERVER_URLDirección URL completa de la instancia de GitLab, como https://gitlab.com o https://gitlab.example.com.
DESTINOOrganización de destino en GitHub.
FILENAMENombre de archivo para el script de migración resultante

Si usas Terminal, utiliza una extensión de archivo .ps1, ya que el script generado necesita que se ejecute PowerShell. Puedes instalar PowerShell para Mac o Linux.

De forma predeterminada, el script incluye todos los proyectos a los que puede acceder el token. Para definir el ámbito del script, agregue --gitlab-group GROUPo --gitlab-group GROUP --gitlab-project PROJECT para un solo proyecto.

Si no usa GitHub-owned blob storage, consulte Configuración de Blob Storage.

Argumentos adicionales

ArgumentDescription
--target-api-url TARGET-API-URLSi vas a migrar a GHE.com, agrega --target-api-url TARGET-API-URL, donde TARGET-API-URL es la dirección URL de la API base para el subdominio de la empresa. Por ejemplo: https://api.octocorp.ghe.com.
--target-uploads-url TARGET-UPLOADS-URLSi va a migrar a GHE.com y usa GitHub-owned blob storage, agregue --target-uploads-url TARGET-UPLOADS-URLtambién , donde TARGET-UPLOADS-URL es la dirección URL de la API de carga base para el subdominio de la empresa. Por ejemplo: https://uploads.octocorp.ghe.com. Este valor predeterminado es https://uploads.github.com.

Revisión del script de migración

Después de generar el script, revisa el archivo y, opcionalmente, edita el script.

  • Si hay repositorios que no quieras migrar, elimina o comenta las líneas correspondientes.
  • Si quieres que los repositorios tengan otro nombre en la organización de destino, actualiza el valor de la marca --github-repo correspondiente.
  • Si desea cambiar la visibilidad de un nuevo repositorio, agregue o actualice la marca correspondiente --target-repo-visibility .

Migración de repositorios

Si la ejecución de prueba se realizó correctamente y pudo completar las tareas de seguimiento, puede continuar con la migración real.

Advertencia

Recomendamos detener cualquier trabajo en los repositorios que esté migrando. Los cambios realizados durante o después de la migración deberán migrarse manualmente.

Ejecute el script que generó. Reemplaza FILENAME en los comandos siguientes por el nombre de archivo que has proporcionado al generar el script.

  • Si usas Terminal, utiliza ./.

    Shell
    ./FILENAME
    
  • Si usas PowerShell, utiliza .\.

    Shell
    .\FILENAME