Синхронизация репозитория от GitHub к GitLab

Понадобилось мне на днях синхронизировать некоторые свои репозитории между GitHub и GitLab. Сам GitLab имеет встроенные средства зеркалирования репозиториев от себя к другому git-хранилищу. GitHub же не обладает такой функцией. Но эту функцию можно воссоздать при помощи GitHub Actions.

Для начала необходимо создать “секреты” с такими переменными:

  • GITLAB_SYNC_REPO_URL - ссылка на пустой репозиторий GitLab.
  • GITLAB_SYNC_USER_NAME - имя пользователя GitLab.
  • GITLAB_SYNC_USER_TOKEN - токен пользователя GitLab. Токен создаётся в настройках аккаунта GitLab.

Далее, в корне репозитория нужно создать файл .github/workflows/gitlab-sync.yml со следующим содержанием:

name: GitLab Sync

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.GITLAB_SYNC_REPO_URL }}
          # Such as wangchucheng
          target-username: ${{ secrets.GITLAB_SYNC_USER_NAME }}
          # You can store token in your project's 'Setting > Secrets' and reference the name here. Such as ${{ secrets.ACCESS_TOKEN }}
          target-token: ${{ secrets.GITLAB_SYNC_USER_TOKEN }}

На этом всё. Теперь при коммите в репозиторий, GutHub будет запускать Action и автоматически синхронизировать изменения с репозиторием на GitLab.

Категории

Meta

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

Смотрите также