gitgithubgitlab

How to sync gitlab with github


I have several developers working on a local Gitlab instance. The client requires that their Github repo is kept updated. So our Gitlab repo should push any commits directly to Github. Any commits to Github should likewise be pulled into Gitlab.

I could do the first part (dev --> gitlab --> github) with jenkins or something, but am stuck on the reverse. Our Gitlab and Jenkins run inside our firewall.

Any hints or pointers (or drop in solutions!) would be very appreciated.


Solution

  • It's only in the enterprise edition and on GitLab.com, but GitLab has introduced this feature directly, without any workarounds.

    They've documented pulling/pushing from/to a remote repository in GitLab Docs → User Docs → Projects → Repositories → Mirroring.

    It's in the same section of configuration that you can push, too:

    1. From within a project use the gear icon to select Mirror Repository
    2. Scroll down to Push to a remote repository
    3. Checkmark Remote mirror repository: Automatically update the remote mirror's branches, tags, and commits from this repository every hour.
    4. Enter the repository you want to update; for GitHub you can include your username and password in the URL, like so: https://yourgithubusername:yourgithubpassword@github.com/agaric/guts_discuss_resource.git

    Note that I haven't tried it, but you should be able to push to and pull from the same repository. It's working great for me pulling from a remote repository (drupal.org), and pushing to a different remote repository (gitlab.com).