Зеркалирование репозитория между хостингами

В предыдущей статье Синхронизация репозитория от GitHub к GitLab я рассказал о том, как организовать синхронизацию между репозиториями GIT на разных хостингах, в частности, между GitHub и GitLab. В итоге, я решил сделать собственный GitHub Action, который позволяет полностью зеркалировать репозитории.

Использование

Для подключения зеркалирования, к примеру, с GitHub на GitLab, необходимо в исходном репозитории создать файл .github/workflows/mirror.yml, в котором указать следующее содержимое:

name: "Repository Mirror"

on:
  - push

jobs:
  mirror:
    runs-on: ubuntu-latest
    name: "Mirror"
    steps:
      - uses: pkgstore/github-action-mirror@main
        with:
          source_repo: "https://github.com/${{ github.repository }}.git"
          source_user: "${{ secrets.MIRROR_SOURCE_USER_GITHUB }}"
          source_token: "${{ secrets.MIRROR_SOURCE_TOKEN_GITHUB }}"
          target_repo: "https://gitlab.com/${{ github.repository }}.git"
          target_user: "${{ secrets.MIRROR_TARGET_USER_GITLAB }}"
          target_token: "${{ secrets.MIRROR_TARGET_TOKEN_GITLAB }}"
  • source_repo - URL исходного репозитория.
  • source_user - пользователь исходного репозитория.
  • source_token - токен пользователя исходного репозитория.
  • target_repo - URL зеркального репозитория.
  • target_user - пользователь зеркального репозитория.
  • target_token - токен пользователя зеркального репозитория.

В этом коде стоит обратить внимание на параметр target_repo. GitLab позволяет автоматически создавать репозиторий при зеркалировании, а так как у меня адреса репозиториев совпадают между GitHub и GitLab, мне гораздо проще выстроить конструкцию https://gitlab.com/${{ github.repository }}.git. Переменная ${{ github.repository }} содержит имя пользователя / организации и название репозитория, и, при настройке зеркалирования репозитория на GitHub’е, зеркало репозитория автоматически создаётся на GitLab’е.

Категории

Meta

  • ID файла
  • UUID
  • Системный путь
  • Тип
  • Количество слов
  • Время чтения (мин.)