Мигрируем с self-hosted BitBucket на self-hosted GitLab

zerkaloВ этом посте я расскажу, как можно сделать переезд с BitBucket на GitLab наиболее безболезненным. Делать мы это будем с помощью такой возможности, как зеркалирование репозитариев. Зеркалирование нужно, чтобы у нас были два синхронизируемых репозитария по принципу master -> slave, и потом мы спокойно могли бы сменить remote у наших локальных репозитариев.

Задача

Сделать два репозитария. Первый (на сервере под управлением BitBucket) будет выступать в роли master. Второй (под управлением GitLab) будет выступать в роли slave, т.е. будет получать все коммиты с master.

Решение

Основные процессы BitBucket работают от юзера atlbitbucket. У него по-умолчанию не создана домашняя директория /home/bitbucket. Создаём её:

Даём ему права на свой каталог.

Заходим от него:

Генерим ему приватный и открытый ключ.

Создаём в веб-интерфейсе GitLab юзера altbitbucket с административными (не обязательно) правами. Через кнопку Impersonalize заходим за него и добавляем ему в профиль ssh-ключ, сгенерированный на машине с BitBucket.

Теперь проверяем возможность делать push от имени юзера altbitbucket@bitbucket на сервер gitlab.

Подтверждаем публичный ключ хоста в консоли. Теперь ssh-сессия должна закрыться при этом не запрашивая пароля. Это значит, то работает авторизация по ключу. Если пароль в консоле запрашивается, значит вы что-то сделали не так.

Settings-Hooks-Screen-Shot

Ставим на BitBucket плагин Repository Mirror Plugin. Потом заходим в интересующий нас репозитарий -> Settings -> Hooks и рядом с названием плагина (Mirror Hook) нажимаем на карандаш.

mirror-hook

В поле Mirror Repo URL вбиваем адрес репозитария git@your.gitlab.com:group/repo.git

Поля логина и пароля оставляем пустыми (т.к. у нас настроена авториация по ключу). И нажимаем на кнопку Enable.

Config-Form

Теперь для проверки сделайте коммит на BitBucket и зайдите на GitLab – вы увидите, что на GitLab он появился автоматически.

Ссылки

Repository Mirror Plugin
Repository Mirror Plugin Docs
Repository Mirror Plugin Wiki

Leave a Comment