GitHub에서 Codeberg로 이전하기, 게으른 사람들을 위한 방법

4 hours ago 1
  • 일부 프로젝트를 GitHub에서 Codeberg로 옮기며, 최소한의 노력으로 이전을 시작하는 방법을 정리
  • Codeberg의 저장소 가져오기 기능을 통해 이슈·PR·릴리스까지 포함한 완전한 이전이 가능하며, UI와 워크플로가 GitHub과 유사
  • 정적 페이지 호스팅은 codeberg.page로 대체할 수 있고, grebedoc.devstatichost.eu 같은 대안도 존재
  • 가장 큰 어려움은 CI 환경 구축으로, GitHub의 macOS 러너와 무료 실행 용량을 포기해야 하며 Forgejo ActionsWoodpecker CI로 대체 가능
  • 이전 후에는 GitHub 저장소를 읽기 전용 아카이브로 유지하거나 미러링해, 오픈소스 생태계와의 연결을 완전히 끊지 않는 방식이 제시됨

GitHub에서 Codeberg로의 이전 과정

  • 일부 저장소를 GitHub에서 Codeberg로 이전하기 시작한 경험을 기반으로, 실제 마이그레이션 과정의 난이도와 편의성을 설명
    • Codeberg가 충분히 준비되지 않았다고 생각해 미뤄왔지만, 프로젝트에 따라 이전이 의외로 간단할 수 있음
    • 목표는 완벽한 설정이 아니라 가장 쉽게 이전을 시작할 수 있는 방법을 찾는 것에 있음
  • 저장소 및 이슈 이전

    • Codeberg는 GitHub 저장소 가져오기(import) 기능을 제공하며, 이슈·PR·릴리스와 그 아티팩트를 함께 이전 가능
      • 이 과정에서 이슈 번호, 라벨, 작성자 정보가 그대로 유지됨
      • Codeberg의 UI는 GitHub과 거의 동일하며, 다른 이슈 트래커에서 GitHub로 옮길 때 필요한 복잡한 절차보다 훨씬 간단한 경험 제공
  • 정적 페이지 호스팅

    • GitHub Pages를 사용하던 경우 codeberg.page를 대체로 사용할 수 있음
      • 공식적인 가용성 보장(SLO) 은 없지만, 실제로는 다운타임을 경험하지 않았다고 언급
      • HTML을 브랜치에 푸시하는 방식으로, GitHub Pages와 유사한 구조
      • 대안으로 grebedoc.dev 또는 statichost.eu도 사용 가능
  • CI(지속적 통합) 환경의 어려움

    • 마이그레이션 중 가장 까다로운 부분은 CI 환경 구축
      • GitHub는 무료 macOS 러너공개 저장소 무제한 실행 용량을 제공하지만, Codeberg에서는 이를 포기해야 함
      • 해결책으로 언어별 크로스 컴파일Forgejo Actions 러너의 셀프 호스팅을 활용 가능
    • Forgejo Actions vs Woodpecker CI

      • Codeberg에서는 Woodpecker CI가 더 안정적이지만, Forgejo Actions가 GitHub Actions 사용자에게 더 익숙한 환경 제공
      • UI와 YAML 문법이 거의 동일하며, 기존 GitHub Actions 워크플로 대부분이 그대로 작동
      • 예시로 GitHub Actions에서 uses: dtolnay/rust-toolchain을 사용하던 부분을 Forgejo Actions에서는 uses: https://github.com/dtolnay/rust-toolchain으로 변경하면 됨
      • 현재 Codeberg의 Forgejo Actions 문서는 최신 상태가 아니며, 관련 PR이 존재함
    • macOS 러너가 필요한 경우

      • macOS 빌드가 꼭 필요하다면 GitHub Actions을 계속 사용하고, Codeberg 저장소에서 GitHub로 커밋을 미러링하는 방법 가능
      • Forgejo Actions가 GitHub API를 폴링하여 CI 상태를 Codeberg로 동기화하도록 설정 가능
      • 다른 macOS 빌드 제공 CI 서비스도 시도했으나, Codeberg와의 통합이 GitHub Actions보다 단순하지 않음
  • GitHub 저장소의 처리 방식

    • 이전 후 GitHub 저장소는 README를 수정하고 아카이브 처리
      • Codeberg에서 GitHub로 커밋을 푸시하도록 설정할 수도 있지만, 이 경우 사용자가 여전히 PR 작성 및 이슈 코멘트 가능
      • 일부는 GitHub 저장소의 이슈 기능을 비활성화하지만, 이 경우 모든 이슈가 404로 사라지고 PR은 비활성화 불가
      • 예시로 libvirt/libvirt 저장소는 모든 PR을 자동으로 닫는 GitHub Action을 사용
    • 이러한 접근은 자체 호스팅 및 오픈소스 생태계 전반에 부정적 영향을 줄 수 있음
      • 사용자가 빌드 최적화나 릴리스 파일 다운로드 빈도를 개선할 동기를 잃게 됨
      • 전환기 동안에는 읽기 전용 미러 유지GitHub Pages·Actions 병행 사용도 고려 가능
Read Entire Article