Overview
이번 글에서는 GitLab의 Repository Mirroring 기능을 활용하여 저장소 간 동기화(Push 방식)를 설정하는 방법에 대해 다룬다.
GitLab은 기본적으로 원격 저장소와의 Push 또는 Pull 기반 미러링 기능을 지원하며,
이를 통해 외부 저장소로의 자동 복제, 백업, 다중 GitLab 환경 간 소스코드 동기화 등을 효율적으로 수행할 수 있다.
특히 Pull 방식은 GitLab Premium 이상의 유료 플랜에서 제공되며,
일반 사용자나 커뮤니티 에디션에서는 Push 기반의 일방향 미러링이 대표적으로 사용된다.
이 글에서는 GitLab → GitLab 미러링 구성을 예시로, 실습 순서, 설정 화면, Outbound 네트워크 허용, 주의사항까지 상세히 설명하고 실시간 로그 확인 방법도 함께 정리하였다.

📅 관련 글
2023.04.20 - [IaC/CI CD Tool] - 1. GitLab이란? / 개념 및 설치
2023.04.23 - [IaC/CI CD Tool] - 2. GitLab이란? / GitLab Runner 개념 및 설치
2023.04.24 - [IaC/CI CD Tool] - 3. GitLab이란? / GitLab CI/CD
2023.08.08 - [IaC/CI CD Tool] - 4. GitLab 버전 업그레이드
2023.08.08 - [IaC/CI CD Tool] - 5. GitLab ArgoCD 연동
2024.05.28 - [IaC/CI CD Tool] - 6. Gitlab CI Build(with GCP Artifact Registry, Harbor)
2024.06.18 - [IaC/CI CD Tool] - 7. Gitlab CI Template 활용
2025.01.09 - [IaC/CI CD Tool] - 8. Gitlab Repository Mirroring 방법
Gitlab Repository Mirroring 이란?
Gitlab 에는 Repository Mirroring 기능이 있다. 간단하게 A Gitlab에 B 라는 저장소에서 C Gitlab의 D 라는 저장소로 Mirroring(Push 방식) 가능하다. 또한 외부 소스와 미러링하여 주고받을 수 있다.
여러 여러 가지 미러링 방법이 있다.
- Push: GitLab에서 다른 위치로 리포지토리를 미러링한다.
- Pull: 다른 위치에서 저장소를 미러링한다. 프리미엄 및 얼티밋 티어로 제공된다.
- Bidirectional(양방향) 미러링도 사용할 수 있지만 충돌을 일으킬 수 있다.
Mirroring 작업순서 (Push 방식)
작업 순서는 간단하다. 아래는 A GitLab의 Repo 에서 B GitLab Repo로 Push 방식을 사용해 미러링 할 경우의 예시이다.
- B GitLab 에서 repo 생성
- A GitLab 에서 미러링 설정
- Repository → Settings → Repository → Mirring Repositories
- Git Reposiroy URL : B GitLab Repo 주소
- Push, Password, Password 에는 B Repo의 admin access token
- 다시 B GitLab에서 Outbound Request 허용
- Admin Area → Settings → Network → Outbound Request → Allow requests to the local network from system hooks 체크 후 → A GitLab의 주소 또는 IP를 적어줘야 허용이 된다.
A GitLab 에서 미러링 설정
Project → Settings → Repository

다시 B GitLab에서 Outbound Request 허용

그럼 성공적으로 미러링 되는걸 볼 수 있다. 만약 잘 되지 않는다면 아래의 로그들을 확인하면 된다.
# 기본 로그 위치
/var/log/gitlab/
# 주요 로그 파일들
/var/log/gitlab/gitlab-rails/production.log # Rails 애플리케이션 로그
/var/log/gitlab/nginx/access.log # Nginx 접근 로그
/var/log/gitlab/nginx/error.log # Nginx 에러 로그
# Rails 로그 실시간 보기
sudo gitlab-ctl tail
# 특정 서비스의 로그만 보기
sudo gitlab-ctl tail gitlab-rails
sudo gitlab-ctl tail nginx
주의할 점
주의할점은 아래와 같다.
gitlab protect branch 해제
- projects → settings → repostiroy → protecd branch 해제
Network Inbound 설정
- admin-area → network outbound 설정
cicd disable
- settings → cicd → auto devops 해제
- settings → general → visibility,project features, permissions -> cicd disable
마무리
GitLab의 Repository Mirroring 기능은 멀티 GitLab 환경이나 외부 시스템과의 코드 동기화 자동화에 매우 유용한 도구이다. 특히 다음과 같은 환경에 효과적이다.
- 온프레미스 GitLab과 외부 GitLab.com 간 코드 백업이 필요할 때
- 개발/운영 환경이 분리된 구조에서 코드 통합을 유지해야 할 때
- 프로젝트를 외부 공개와 내부 운영으로 나누어 관리할 때
다만, 아래의 설정들은 반드시 확인해야 한다.
- Protected Branch 해제: 대상 저장소의 브랜치 보호 설정을 해제하지 않으면 Push가 거부됨
- Outbound Request 허용: GitLab 인스턴스 간의 네트워크 요청을 명시적으로 허용해야 함
- CI/CD 설정 확인: 자동 DevOps 또는 CI 파이프라인이 자동 실행되지 않도록 필요한 경우 비활성화
정상적으로 설정이 완료되면 GitLab이 자동으로 주기적인 Push를 수행하며, 변경사항이 감지되면 대상 저장소로 실시간 반영된다.
향후에는 양방향 미러링(Bidirectional), SSH 기반 미러링 구성, GitHub ↔ GitLab 연동 자동화 등도 함께 고려해보면 GitOps 및 DevOps 관점에서 더욱 안정적인 코드 관리 체계를 구축할 수 있을 것이다.
Reference
'IaC > CI CD Tool' 카테고리의 다른 글
10. Github Action Hosted Runner 생성 (0) | 2025.02.17 |
---|---|
Github Changelog 자동화 (0) | 2025.02.10 |
9. Github Action Steps Context 활용법 (0) | 2024.11.10 |
8. Github Action Template 생성후 MarketPlace 등록하기 (2) | 2024.07.01 |
7. Gitlab CI Template 활용 (0) | 2024.06.27 |