GitHub에서 Codeberg로: 나의 경험

1 week ago 4

  • 개인 프로젝트와 웹사이트를 GitHub에서 Codeberg로 이전한 과정과 결과를 구체적으로 설명
  • Forgejo의 “migrate from GitHub” 기능을 이용해 저장소, 이슈, PR, 위키, 릴리스를 완전하게 이전
  • 링크 재지정과 GitHub 저장소 스텁 처리를 자동화 스크립트로 수행해 이전 사실을 명확히 표시
  • CI/CD 이전에서는 Codeberg의 Forgejo Actions를 활용하고, 환경 제약에 맞춰 경량화된 워크플로를 구성
  • 웹사이트는 git-pages와 Grebedoc을 이용해 무중단으로 이전, 전체 마이그레이션을 주말 내 완료

마이그레이션 개요

  • GitHub Pages에서 호스팅하던 사이트와 45개의 저장소를 Codeberg로 이전
    • 단순 클릭으로 끝나지 않고 여러 단계의 수작업이 필요했음
    • 전체 과정은 주말 동안 완료되었으며, 불편함 없이 진행됨
  • 이 과정을 통해 다른 개발자들도 쉽게 이전할 수 있음을 보여주려는 목적

1단계: 저장소 이전

  • Codeberg는 Forgejo 기반으로, “migrate from GitHub” 기능을 제공
    • GitHub에서 Personal Access Token(PAT) 을 생성해 이슈 등 메타데이터를 함께 가져올 수 있음
    • GitHub API의 rate limit 때문에 동시에 여러 저장소를 가져오면 실패할 수 있었음
  • 이슈, PR, 위키, 릴리스가 완벽히 이전되어 GitHub 참조가 불필요해짐

2단계: 링크 재지정

  • 로컬 저장소 내의 GitHub 링크를 Codeberg 주소로 일괄 변환
    • sed와 find 명령어를 이용해 텍스트 기반으로 자동 치환
  • 각 저장소의 git remote URL도 Codeberg로 변경 후 모든 저장소에 푸시

3단계: GitHub 저장소 스텁 처리

  • GitHub 저장소에 이전 공지용 README를 추가하고, 설명과 홈페이지 링크를 Codeberg로 수정
    • 자동화 스크립트를 작성해 여러 저장소에 일괄 적용
    • gh repo archive 명령으로 저장소를 아카이브 처리

4단계: CI/CD 이전

  • Codeberg의 CI 문서에서 에너지 소비 최소화 원칙을 강조
    • 이에 따라 CI가 꼭 필요한 프로젝트(웹사이트, 문서 빌드 등)만 유지
  • Codeberg는 WoodpeckerForgejo Actions 두 가지 CI를 제공
    • GitHub Actions와 유사한 Forgejo Actions를 선택
  • 주요 차이점
    • 대부분의 Actions가 그대로 작동
    • Linux 전용 러너만 제공, macOS·Windows는 비제공
    • 설치된 소프트웨어가 적고 자원이 제한적
    • lazy runners를 사용하면 부하 분산과 친환경적 실행 가능
  • CI 성능 향상을 위해 LaTeX 사전 설치 Docker 이미지를 사용했으나 버전 문제로 기본 Ubuntu 이미지로 복귀

5단계: 웹사이트 재호스팅

  • GitHub Pages에서 운영하던 사이트를 Codeberg Pages로 옮기려 했으나, 해당 기능이 유지보수 모드 상태
    • 복잡성과 성능 문제로 업데이트가 지연 중
  • 대안으로 git-pages와 Grebedoc을 발견해 사용
    • DNS 변경 전 업로드 지원으로 무중단 전환 가능
    • 서버 측 리디렉션커스텀 헤더 지원
    • 기존 링크(eldred.fr/fortISSimO)를 유지하면서 이전 완료
  • Codeberg는 향후 git-pages로 점진적 이전을 계획 중
  • GitHub Pages보다 만족도가 높아 git-pages 개발자 Patreon 후원 참여

시간 소요

  • 저장소 이전(1~3단계): 반나절
  • CI 이전(4단계): 반나절
  • 웹사이트 이전(5단계): 기술 부채 정리 포함 며칠 소요
  • 전체적으로 주말 내 완료, 예상보다 간단한 작업

마이그레이션 이후

  • 웹사이트 기능 이상 없음, GitHub의 master 브랜치만 축소
    • 영구 링크(permalink)는 여전히 작동
  • GitHub 저장소 삭제는 리디렉션 부재로 보류 중
  • GitHub 계정은 타 프로젝트 기여를 위해 유지
  • Codeberg로 옮기며 기여자 수 감소 가능성은 있으나, 일부 사용자가 이미 Codeberg 계정을 생성해 지속 기여 중

감사 인사

  • Catherine ‘whitequark’ : git-pages 및 Grebedoc 운영
  • SERVFAIL network 팀: DNS 제공
  • Codeberg 및 Forgejo 기여자들: 마이그레이션 기반 제공

Read Entire Article