Мигрируем с self-hosted BitBucket на self-hosted GitLab
В этом посте я расскажу, как можно сделать переезд с BitBucket на GitLab наиболее безболезненным. Делать мы это будем с помощью такой возможности, как зеркалирование репозитариев. Зеркалирование нужно, чтобы у нас были два синхронизируемых репозитария по принципу master -> slave, и потом мы спокойно могли бы сменить remote у наших локальных репозитариев.
Задача
Сделать два репозитария. Первый (на сервере под управлением BitBucket) будет выступать в роли master. Второй (под управлением GitLab) будет выступать в роли slave, т.е. будет получать все коммиты с master.
Решение
Основные процессы BitBucket работают от юзера atlbitbucket. У него по-умолчанию не создана домашняя директория /home/bitbucket. Создаём её:
1 |
root@bitbucket# mkdir /home/bitbucket |
Даём ему права на свой каталог.
1 |
root@bitbucket# chown -R atlbitbucket@atlbitbucket /home/bitbucket |
Заходим от него:
1 |
root@bitbucket# su atlbitbucket |
Генерим ему приватный и открытый ключ.
1 |
atlbitbucket@bitbucket: ssh-keygen |
Создаём в веб-интерфейсе GitLab юзера altbitbucket с административными (не обязательно) правами. Через кнопку Impersonalize заходим за него и добавляем ему в профиль ssh-ключ, сгенерированный на машине с BitBucket.
Теперь проверяем возможность делать push от имени юзера altbitbucket@bitbucket на сервер gitlab.
1 |
atlbitbucket@bitbucket: ssh -vvv git@your.gitlab.com:group/repo.git |
Подтверждаем публичный ключ хоста в консоли. Теперь ssh-сессия должна закрыться при этом не запрашивая пароля. Это значит, то работает авторизация по ключу. Если пароль в консоле запрашивается, значит вы что-то сделали не так.
Ставим на BitBucket плагин Repository Mirror Plugin. Потом заходим в интересующий нас репозитарий -> Settings -> Hooks и рядом с названием плагина (Mirror Hook) нажимаем на карандаш.
В поле Mirror Repo URL вбиваем адрес репозитария git@your.gitlab.com:group/repo.git
Поля логина и пароля оставляем пустыми (т.к. у нас настроена авториация по ключу). И нажимаем на кнопку Enable.
Теперь для проверки сделайте коммит на BitBucket и зайдите на GitLab – вы увидите, что на GitLab он появился автоматически.
Ссылки
Repository Mirror Plugin
Repository Mirror Plugin Docs
Repository Mirror Plugin Wiki