Les exécuteurs partagés Bitbucket ou GitLab sont plutôt lents et notre utilisation de la partie CI/CD étant plutôt intense. Nous avons décidé d'héberger notre propre instance GitLab, car nous en hébergions et opérions déjà pour quelques-uns de nos clients.
Voici donc comment nous avons procéder pour conserver l'historique des contributions, à savoir les pull-requests et leurs commentaires, les issues et les wikis.
Autoriser l'accès à Bitbucket
Première étape pour importer des projets venant de Bitbucket Cloud, il faut créer une application GitLab dans la section Gestion des accès > OAuth des paramètres Bitbucket :
Avec les bons droits :
Puis, il suffit d'ajouter la clé et le secret à la configuration GitLab (/etc/gitlab/gitlab.rb) :
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_providers'] = [
{
"name" => "bitbucket",
"app_id" => "****",
"app_secret" => "****",
"url" => "https://bitbucket.org/"
}
]
Avant de le reconfigurer, ce qui le redémarrera compte tenu des modifications :
gitlab-ctl reconfigure
Migrer vos projets
Pour simplifier l'opération de migration, vu que l'import conserve les pull-requests en cours ainsi que les commentaires actifs. Vous pouvez choisir une date/heure pour migrer les projets, plutôt que d'attendre que toutes les pull-requests soient fusionnées.
Pour être certain qu'il n'y ait pas de modifications perdues pendant le temps de la migration. Coupez les droits d'écritures sur Bitbucket. Dans notre cas, c'est très simple, puisque nous gérons les accès par groupes d'utilisateurs (Administrateurs, Mainteneurs, Développeurs, Rapporteurs). Il nous suffit de mettre tous les groupes à la permission lire dans la section Gestion des accès > Groupes d'utilisateur des paramètres Bitbucket :
Lançons les imports, ajoutez un projet, onglet import a project, choisissez Bitbucket Cloud :
Là, Bitbucket vous demande de confirmer l'autorisation d'accès à votre compte en listant les autorisations. Puis vous laisse choisir le ou les projets compatibles (git) à migrer.
Si les dépôts sont volumineux, avec beaucoup d'historique, l'import peut prendre quelques minutes. Pendant ce temps là, créez les utilisateurs et/ou attribuez les droits utilisateurs, de préférence, en passant par les groupes ou directement sur les projets si vous abez besoin de plus de granularité.
Il ne reste plus qu'à modifier les remotes dans les configurations git locales :
# renommez l'ancien remote
git remote rename origin bitbucket
# ajoutez le nouveau remote
git remote add origin git@hexack.nuajik.io:<group>/<project>.git
# mettez à jour *les* branches
git branch <branch> -u origin/master
Et commencer à utiliser GitLab, validez les merge-requests, ajoutez les intégrations nécessaires, écrivez votre .gitlab-ci.yml, etc.