- Kendi projelerimi ve web sitemi GitHub'dan Codeberg'e taşırken izlediğim süreç ve sonucu ayrıntılı olarak anlatıyorum
- Forgejo'nun “migrate from GitHub” özelliğini kullanarak depoları, issue'ları, PR'ları, wiki'leri ve release'leri tamamen taşıdım
- Taşıma olgusunu net biçimde göstermek için link yeniden yönlendirmesini ve GitHub depo stub'larının işlenmesini otomatik betikler ile yaptım
- CI/CD geçişinde Codeberg'in Forgejo Actions'ını kullandım ve ortam kısıtlarına göre hafif bir iş akışı kurdum
- Web sitesi git-pages ve Grebedoc ile kesintisiz taşındı; tüm geçişi bir hafta sonu içinde tamamladım
Geçiş özeti
- GitHub Pages'de barındırılan bir siteyi ve 45 depoyu Codeberg'e taşıdım
- Tek bir tıklamayla bitmedi ve birden fazla manuel adım gerekiyordu
- Tüm süreç bir hafta sonu içinde tamamlandı ve sorunsuz gitti
- Bu süreçle diğer geliştiricilerin de kolayca geçiş yapabileceğini göstermeyi hedefledim
1. Aşama: Depo Taşıma
- Codeberg, Forgejo tabanlı bir platformdur ve “migrate from GitHub” özelliği sunar
- GitHub'da Personal Access Token (PAT) oluşturarak issue'lar gibi meta veriler de alınabiliyor
- GitHub API'deki rate limit nedeniyle aynı anda birden fazla depoyu taşımaya çalışınca hata oluşabiliyordu
- Issue'lar, PR'lar, wiki ve release'ler eksiksiz taşındığından GitHub referanslarına gerek kalmadı
2. Aşama: Link Yeniden Yönlendirme
- Yerel depolardaki GitHub bağlantılarını Codeberg adreslerine toplu olarak dönüştürdüm
sed ve find komutlarını kullanarak metin tabanlı otomatik bir değişim yaptım
- Her deponun
git remote URL'sini Codeberg olarak değiştirip tüm depolara push ettim
3. Aşama: GitHub Depo Stub Yönetimi
- GitHub depolarına taşıma duyurusu için README ekledim ve açıklamayı ile ana sayfa bağlantısını Codeberg'e çevirdim
- Bu işlemi birden fazla depoya toplu uygulamak için otomasyon betiği yazdım
gh repo archive komutuyla depoları arşivledim
4. Aşama: CI/CD Geçişi
- Codeberg'in CI dokümanında enerji tüketimini minimumda tutma prensibi vurgulanıyor
- Bu nedenle yalnızca gerçekten gerekli projelerde (web sitesi, dokümantasyon derleme vb.) CI tutuyorum
- Codeberg iki CI seçeneği sunuyor: Woodpecker ve Forgejo Actions
- GitHub Actions'a benzediği için Forgejo Actions'ı seçtim
- Başlıca farklar
- Çoğu Action olduğu gibi çalışıyor
- Yalnızca Linux özelinde runner var, macOS ve Windows sunulmuyor
- Kurulu yazılım az ve kaynaklar kısıtlı
- lazy runners ile yük dengelemesi yapıp daha çevreci çalıştırma mümkün
- CI performansını artırmak için önceden kurulmuş LaTeX içeren bir Docker imajı kullandım ancak sürüm sorunu nedeniyle temel Ubuntu imajına döndüm
5. Aşama: Web Sitesi Yeniden Barındırma
- GitHub Pages'den çalışan siteyi Codeberg Pages'e taşımayı planladım ama bu özellik bakım modundaydı
- Karmaşıklık ve performans sorunları nedeniyle güncellemeler gecikiyor
- Alternatif olarak git-pages ve Grebedoc bulundu ve kullanıldı
- DNS değişikliği öncesi yükleme desteği ile kesintisiz geçiş mümkün oldu
- Sunucu tarafı yönlendirme ve özel başlık desteği
- Mevcut bağlantıyı (
eldred.fr/fortISSimO) koruyarak geçiş tamamlandı
- Codeberg ileride git-pages'e kademeli geçiş planlıyor
- GitHub Pages'ten daha memnunum, bu yüzden git-pages geliştiricisine Patreon'dan destek olmaya başladım
Harcanan Süre
- Depo geçişi (1-3. aşama): Yarım gün
- CI geçişi (4. aşama): Yarım gün
- Web sitesi geçişi (5. aşama): Teknik borç temizliği dahil birkaç gün
- Genel olarak bir hafta sonu içinde tamamlandı, beklenenden daha basit bir iş oldu
Geçiş Sonrası
- Web sitesi işlevlerinde sorun yok, yalnızca GitHub'daki master dalı daraltıldı
- Kalıcı linkler (permalink) hala çalışıyor
- GitHub depolarını silme işlemi, yönlendirme olmaması nedeniyle beklemede
- GitHub hesabı, diğer projelere katkı için tutuluyor
- Codeberg'e taşınırken katkıda bulunan sayısında azalma yaşanabilir; ancak bazı kullanıcılar zaten Codeberg hesabı açıp katkı vermeyi sürdürüyor
Teşekkür
- Catherine ‘whitequark’: git-pages ve Grebedoc operasyonu
- SERVFAIL network ekibi: DNS sağlama
- Codeberg ve Forgejo katılımcıları: geçiş altyapısı sağlama
Henüz yorum yok.