Is it possible to have gitlab setup to automatically sync (mirror) a repository hosted at another location?
At the moment, the easiest way I know of doing this involves manually pushing to the two (gitlab and the other) repository, but this is time consuming and error prone.
The greatest problem is that a mirror can resynchronize is two users concurrently push changes to the two different repositories. The best method I can come up with to prevent this issue is to ensure users can only push to one of the repositories.
The best option is not to use post-receive hooks, but deployments commands that perform synchronisation via rsync, using Capistrano if you like Ruby, using Shipit if you prefer Javascript (Grunt).
A quick summary of configure mirroring repositories with GitLab and GitHub
public_repo
Push
https://username@github.com/username/repo.git
Push
Password
your_token
Pull
https://github.com/username/repo.git
Pull
leave_empty
Official GitLab documentation