Зеркалирование репозитория между хостингами
В предыдущей статье Синхронизация репозитория от 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’е.