Github 레포지토리를 Gitea 서버로 자동 미러링하기
요약
본 스크립트는 GitHub 사용자 또는 조직의 레포지토리를 Gitea 서버로 자동으로 미러링하는 도구입니다. 지정된 토큰을 사용하여 원본과 동일한 구조로 레포지토리, 이슈, 스타 레포지토리 등을 완전히 자동 생성할 수 있습니다. private 레포지토리도 지원하며, 환경 변수를 통해 상세하게 설정 가능합니다.
핵심 포인트
- GitHub 레포를 Gitea 서버에 자동으로 미러링하는 스크립트입니다.
- 레포지토리 외에도 이슈, 스타 레포, 조직 구조까지 동기화할 수 있습니다.
- 환경 변수 기반으로 구성하며, Docker 사용이 전제 조건입니다.
Github 레포지토리를 Gitea 서버로 자동 미러링하기
이 프로젝트는 유지보수 모드로 간주되며 버그 수정만 받을 것이고 새로운 기능은 없을 가능성이 높습니다.
대안:
만약 이 프로젝트를 이어받는 데 관심이 있다면 언제든지 저에게 연락 주십시오.
배지 (Badges)
설명 (Description)
이 스크립트는 github-user 또는 github-organization의 레포지토리를 gitea 서버로 자동으로 미러링합니다.
한 번 시작되면, 지정된 토큰을 사용하여 gitea 사용자 계정 아래에 미러링된 레포지토리를 완전히 자동으로 생성할 것입니다.
예시:
Github 사용자 github-user가 공개 레포지토리 dotfiles와 zsh-config를 가지고 있다고 가정합니다. 이 스크립트를 gitea-user 계정의 gitea 토큰으로 시작하면 다음과 같은 미러링된 레포지토리가 생성됩니다:
- github.com/github-user/dotfiles → your-gitea.url/gitea-user/dotfiles
- github.com/github-user/zsh-config → your-gitea.url/gitea-user/zsh-config
미러링 설정은 사용자의 gitea 인스턴스 기본값으로 이루어집니다.
또한, private 레포지토리도 미러링하는 것이 가능하며, 이는 #parameters에서 구성할 수 있습니다. private 레포지토리를 미러링할 경우, gitea 서버에 private 레포지토리로 생성됩니다.
게다가, 이제 다음 항목들도 미러링할 수 있습니다:
- GitHub 레포지토리의 이슈 (레이블 포함)
- GitHub 계정의 스타 레포지토리
- 소속된 조직(organization)의 레포지토리
- 포함하거나 제외할 조직 필터링
- Gitea에서 원본 조직 구조 유지
- 모든 레포지토리가 아닌 단일 레포지토리
- 특정 Gitea 조직으로의 레포지토리
전제 조건 (Prerequisites)
- 레포지토리를 가진 github 사용자 또는 조직
- 설정된 gitea 인스턴스가 실행 중
- 토큰이 생성된 gitea 사용자의 계정 (Settings -> Applications -> Generate New Token)
- Docker 또는 Docker Compose
실행하기 (Running)
구성 (Configuration)
모든 설정은 환경 변수를 통해 수행됩니다. 플래그는 true, TRUE 또는 1일 때 참(true)으로 간주됩니다.
| 매개변수 | 필수 여부 | 유형 | 기본값 | 설명 |
|---|---|---|---|---|
| GITHUB_USERNAME | 예 | string | - | 미러링할 GitHub 사용자 또는 조직의 이름. |
| ... | EXCLUDE | 아니요 | string | |
| SINGLE_RUN | 아니요 | bool | FALSE | TRUE로 설정하면 작업이 단 한 번만 실행됩니다. |
Docker
docker container run \
-d \
--restart always \
...
특정 조직만 미러링하기
docker container run \
-d \
--restart always \
...
구조를 보존하며 조직 미러링하기
docker container run \
-d \
--restart always \
...
단일 리포지토리 미러링하기
docker container run \
-d \
--restart always \
...
Gitea 조직으로 미러링하기
docker container run \
-d \
--restart always \
...
별표 표시된 리포지토리를 전용 조직으로 미러링하기
docker container run \
-d \
--restart always \
...
이 설정은 모든 별표 표시된 리포지토리를 "github"라는 이름의 Gitea 조직으로 미러링하며, 이 별표 표시된 리포지토리들의 이슈는 미러링하지 않습니다.
Docker Compose
version: "3.3"
services:
mirror-to-gitea:
...
개발
전제 조건 (Prerequisites)
- nodejs
- task
- docker
검증 실행 (Execute verification)
task world
로컬에서 실행하기 (Running locally)
최소한 다음 변수들을 포함하는 .secrets.rc 파일을 생성하세요:
export GITHUB_USERNAME='...'
export GITHUB_TOKEN='...'
export GITEA_URL='...'
...
스크립트를 전경(foreground)에서 실행하세요:
task run-local
감사 (Kudos)
모든 기여자분들께 감사를 표합니다! 🙏
<a href="https://github.com/jaedle/mirror-to-gitea/graphs/contributors"> <img src="https://contrib.rocks/image?repo=jaedle/mirror-to-gitea" /> </a>AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기