И GitHub, и Gitlab — это отличные способы размещения ваших репозиторий Git онлайн. У них оба имеют отличные инструменты для управления вашим проектом, будьте его открытым исходным или личным кодом. Я не собираюсь сравнивать обе службы в глубине, так как многие направляющие уже делают это. Для меня общее разницу между Github и Gitlab — Gitlab, ориентирован на больше усилий по трубопроводам и инструментам CI/CD для компаний, в то время как GitHub больше сосредоточен на сообществе и создает платформу, чтобы поделиться с открытым исходным кодом. Оба могут быть использованы для любого сценария … что делает его действительно трудно выбрать между ними!
Но что, если я сказал вам, вам не нужно было выбирать O_O?
Почему я хочу использовать как gitlab, так и github
Просто быстрый отказ от ответственности, это метод, который я использую. Это работает для меня, но не может работать для всех. Я рекомендую экспериментировать с вещами для себя, выполните некоторые тесты. Я делюсь своим опытом, потому что я чувствую, что это может быть полезно для кого-то в той же позиции, что и я.
Мне нравится уметь организовать свои репозитории в проекты (или группы в GitLab). К сожалению, GitHub не делает этого. Я также хочу иметь возможность достичь как можно больше людей с моим репозиториями, Github имеет наибольшее сообщество. Черт возьми, я застрял, хочу функции обоих провайдеров.
К счастью для меня, Gitlab имеет две вещи, которые делают симбиоз между двумя возможными инструментами:
- Репозиторий Github Import. Это делает импорт репозитория из GitHub Super легко
- Синхронизация репозитории от GitLab -> Github (бесплатно) Это позволяет мне использовать Gitlab в качестве основного источника истины, но также иметь хранилище на GitHub. Я могу использовать выпуск Github Tracker, Wiki и Forum (дискуссия GitHub)
- Great Ci/CD (хорошо, я солгал, когда я сказал две вещи)
Этот простой. Вы можете настроить некоторые CI/CD сами. Но Gitlab автоматически сделает это для вас.
- Перейдите в «Настройки> Репозиторий> Репозитории зеркалирования»
- Введите репо GitHUB с вашим именем пользователя перед
https://<имя пользователя github> @ github.com/путь/к/ваше/refo.git
- В поле Пароль введите токен GitHub
- Выберите толчок (Это требует подписки)
- Нажмите зеркальный репозиторий
Отныне изменения в Gitlab будут отражаться на Github
Есть два способа сделать это (оба эквивалентны только с противоположных платформ)
- Либо вы устанавливаете CI/CD-трубопровод на GitHub, который вызывает, используя веб -ook (на запросах на push и pull).
- Либо вы устанавливаете CI/CD-трубопровод на GitLab, которые триггеры используют веб -ook (на запросах на push и pull). Оказывается, это на самом деле премиум … Вы не можете использовать Thult Webhook, не платя сейчас
Я лично решил сделать это с стороны GitHub, поскольку метод GitHub свободен
Метод 1 GitHub CI/CD
- Создайте следующие секреты в вашем репозитории GitHUB
Target_url.
Значение: URL-адрес хранилища GitLabTarget_token
ценность: Gitlab TokenTarget_username
ценность: Username gitlab.
- Создайте действие GitHub для вашего репозитория следующим кодом:
name: GitlabSync on: - push - delete jobs: sync: runs-on: ubuntu-latest name: Git Repo Sync steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - uses: wangchucheng/git-repo-sync@v0.1.0 with: # Such as https://github.com/wangchucheng/git-repo-sync.git target-url: ${{ secrets.TARGET_URL }} # Such as wangchucheng target-username: ${{ secrets.TARGET_USERNAME }} # You can store token in your project's 'Setting > Secrets' and reference the name here. Such as ${{ secrets.ACCESS\_TOKEN }} target-token: ${{ secrets.TARGET_TOKEN }}
- Убедитесь, что ветвь, которую вы нажатием в GitLab, не защищены или допускают нажим
Способ 2 Gitlab CI/CD (требуется GitLab Premium)
Обратите внимание, что если у вас есть подписка с GitLab, вы также можете сделать это за несколько кликов в одном ашпионе, что и настроив синхронизацию от GitLab в Github.
Перейдите в «Настройки> Репозиторий> Репозитории зеркалирования»
- Введите репо GitHUB с вашим именем пользователя перед
https://<имя пользователя github> @ github.com/путь/к/ваше/refo.git
- В поле Пароль введите токен GitHub
- Выберите Pull (это требует подписки)
- Нажмите зеркальный репозиторий
Ручная настройка
Настройка веб-капонов
Если вы создали проект GitLab через инструмент импорта GitHub, вы можете полностью пропустить этот шаг.
- В вашем репозитории GitHub перейдите в «Настройки> веб-кавказки»
- Создать новый веб -ook
- Путь полезной нагрузки:
https://gitlab.com/API/V4/projects/
(Идентификатор проекта можно найти в «Настройках> Общие»)>/Зеркало/Pull - Тип содержимого:
Приложение/JSON
- Проверение SSL: выключенный
- Только отправить для: толкать и тянуть
- Путь полезной нагрузки:
Активировать
В проекте GitLab перейдите в «Настройки> веб-кавказки»
Выберите Толкать события из репозитория и введите репозиторий GitHUB (с токеном, если он является частным)
Настройка переменных CI/CD
- В проекте GitLab Перейдите в «Настройки> CI/CD> Переменные»
Создайте переменную с помощью ключа:
Access_Token
и значение: (сделать его скрытым, потому что это чувствительно)- Создайте переменную с помощью ключа:
Remote_Repository_url
и ценность:<Ваш токен GitHub> @ <ваш репозиторий URL>
(Сделай его скрытым, потому что это чувствительно)
- Создайте переменную с помощью ключа:
Настройка CI/CD
- Создайте трубопровод, иду на «CI/CD> Editor» или создавая файл
.gitlab-ci.yml
В вашем корневом проекте и добавьте следующий контент:
sync-with-github: before_script: - git config --global user.name "${GITLAB_USER_NAME}" - git config --global user.email "${GITLAB_USER_EMAIL}" script: - git remote add github $REMOTE_REPOSITORY_URL - git checkout master - git pull origin master - git pull github master - git status - git push http://root:$ACCESS_TOKEN@$CI_SERVER_HOST/$CI_PROJECT_PATH.git HEAD:master
Это не приходит без нисходящих. Вот несколько я нашел при тестировании этой настройки.
- Вики, проблемы, обсуждения, доски и т. Д. Не будут синхронизироваться между двумя провайдерами хостинга. Это будет только синхронизировать, что в вашем хранилище. Есть способы синхронизации Wikis (Wiki по существу является скрытым хранилищем .git, а github, и gitlab используют один и тот же формат wiki)
- Это может быть запутано иметь два удаленных репозитория одновременно
- Они могут выйти из синхронизации, если несколько коммитов происходят в двух местах одновременно и создают конфликты (я использую это только на репозиториях, которые я и только использую)
Оригинал: «https://dev.to/brunorobert/github-and-gitlab-sync-44mn»