Мигрируем с self-hosted BitBucket на self-hosted GitLab
// 13 апреля, 2018 // Системы контроля версий (VCS)
В этом посте я расскажу, как можно сделать переезд с BitBucket на GitLab наиболее безболезненным. Делать мы это будем с помощью такой возможности, как зеркалирование репозитариев. Зеркалирование нужно, чтобы у нас были два синхронизируемых репозитария по принципу master -> slave, и потом мы спокойно могли бы сменить remote у наших локальных репозитариев.
Задача
Сделать два репозитария. Первый (на сервере под управлением BitBucket) будет выступать в роли master. Второй (под управлением GitLab) будет выступать в роли slave, т.е. будет получать все коммиты с master.
Решение
Основные процессы BitBucket работают от юзера atlbitbucket. У него по-умолчанию не создана домашняя директория /home/bitbucket. Создаём её:
root@bitbucket# mkdir /home/bitbucket
Даём ему права на свой каталог.
root@bitbucket# chown -R atlbitbucket@atlbitbucket /home/bitbucket
Заходим от него:
root@bitbucket# su atlbitbucket
Генерим ему приватный и открытый ключ.
atlbitbucket@bitbucket: ssh-keygen
Создаём в веб-интерфейсе GitLab юзера altbitbucket с административными (не обязательно) правами. Через кнопку Impersonalize заходим за него и добавляем ему в профиль ssh-ключ, сгенерированный на машине с BitBucket.
Теперь проверяем возможность делать push от имени юзера altbitbucket@bitbucket на сервер gitlab.
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
Спасибо!
Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это: