Tin tức chung·Hacker News·0 lượt xem

Chuyển từ GitHub sang Codeberg, dành cho người lười biếng

Moving from GitHub to Codeberg, for lazy people

AI Summary

Anh em developer, hôm nay có một chia sẻ khá hay ho về hành trình "di cư" từ GitHub sang Codeberg. Ấn tượng là việc import các issues và pull requests sang Codeberg cực kỳ mượt mà nhờ tính năng import có sẵn của họ. Thách thức lớn nhất thực tế nằm ở mảng CI/CD. Vì Codeberg sử dụng Forgejo Actions, anh em sẽ phải tự **self-host runner** cho nó, do không có sẵn các **macOS runner** miễn phí như trên GitHub. Do sự khác biệt về runner availability này, các bạn sẽ cần điều chỉnh lại các **workflow** CI/CD của mình. Bên cạnh đó, cũng nên suy nghĩ về cách quản lý "dấu vết" trên GitHub cũ của mình nữa nhé.

2025-09-06 Tôi mới bắt đầu di chuyển một số kho lưu trữ từ GitHub sang Codeberg. Tôi đã muốn làm điều này từ lâu nhưng đã trì hoãn vì tôi nhận thấy Codeberg chưa sẵn sàng và...

Tôi mới bắt đầu di chuyển một số kho lưu trữ từ GitHub sang Codeberg. Mình đã muốn làm việc này lâu rồi nhưng chưa thực hiện được bởi vì tôi nhận thấy Codeberg chưa sẵn sàng và quá trình di chuyển quá trình này có rất nhiều công việc (nhàm chán).

Hóa ra điều đó chỉ đúng một phần và phụ thuộc rất nhiều vào dự án. Nếu bạn cũng ở hoàn cảnh tương tự như tôi, hy vọng những ghi chú này đóng vai trò là động lực và điểm khởi đầu. Những giải pháp này không phải là điều tôi có thể gắn bó lâu dài, nhưng nhằm vào những gì tôi nghĩ là bắt đầu dễ dàng nhất khi di chuyển từ GitHub.

Đầu tiên là quá trình di chuyển các vấn đề, kéo yêu cầu và phát hành cùng với các hiện vật của họ. Đây thực sự là phần dễ nhất vì Codeberg cung cấp tính năng nhập kho lưu trữ từ GitHub và tất cả đều hoạt động những tính năng này có giao diện người dùng gần giống với GitHub. Việc nhập khẩu giữ nguyên số phát hành, nhãn hiệu, quyền tác giả. Trải nghiệm người dùng rất vượt xa những thủ thuật cực kỳ khó xử mà mọi người sử dụng để nhập từ các trình theo dõi vấn đề khác vào GitHub.

Nếu đang sử dụng Trang GitHub, bạn có thể sử dụng codeberg.page. Có một cảnh báo về nó không cung cấp bất kỳ SLO thời gian hoạt động nào, nhưng tôi không nhận thấy bất kỳ thời gian ngừng hoạt động nào tại tất cả, và bây giờ thì ổn. Bạn đẩy HTML của mình đến một nhánh, rất nhiều giống như các trang GitHub cũ. Cập nhật 22-09-2025: Ngoài ra, bạn có thể thử https://grebedoc.dev hoặc https://www.statichost.eu/

Phần khó chịu nhất là CI. GitHub đã làm rất tốt thu hút mọi người bằng các trình chạy macOS miễn phí và khả năng vô hạn cho kho lưu trữ công khai 1. Bạn sẽ phải từ bỏ cả hai những điều đó. Tôi khuyên bạn nên xem xét việc biên dịch chéo cho ngôn ngữ lập trình và tự tổ chức một người chạy cho Forgejo Actions, để giải quyết các vấn đề đó một cách tương ứng.

Tại sao Forgejo Hành động chứ không phải Woodpecker CI, không phải là Woodpecker trên Codeberg nữa sao ổn định? Có, hoàn toàn ổn định, trên thực tế tài liệu về Forgejo Actions trên Codeberg đã lỗi thời rồi phải không? bây giờ, nhưng sắp tới Forgejo Actions sẽ có cảm giác quen thuộc hơn nhiều từ Hành động GitHub. Cú pháp UI và YAML gần như giống hệt nhau và Hệ sinh thái hành động hiện tại chủ yếu hoạt động như trên Codeberg. Ví dụ, nơi quy trình làm việc Hành động GitHub của tôi sẽ nói sử dụng: dtolnay/rust-toolchain, quy trình làm việc Forgejo Actions của tôi sẽ chỉ thay đổi thành sử dụng: https://github.com/dtolnay/rust-toolchain.

Nếu bạn thực sự cần trình chạy macOS, tôi khuyên bạn nên gắn bó với Hành động GitHub trên kho GitHub, phản ánh tất cả các cam kết từ Codeberg tới GitHub và sử dụng Forgejo Actions để thăm dò API GitHub và đồng bộ hóa trạng thái CI trở lại Codeberg. Tôi chưa thử cái này nhưng tôi đã thử một số nhà cung cấp CI khác cung cấp các bản dựng macOS và tôi không nghĩ rằng việc tích hợp vào Codeberg dễ dàng hơn hoặc sạch sẽ hơn GitHub Hành động.

Cuối cùng, phải làm gì với repo cũ trên GitHub? Tôi vừa cập nhật README và lưu trữ kho lưu trữ.

Bạn có thể yêu cầu Codeberg đẩy các cam kết mới lên GitHub, nhưng điều này cho phép người dùng vẫn gửi PR và nhận xét về các vấn đề cũng như cam kết 2. Một số người đã giải quyết vấn đề này bằng cách vô hiệu hóa các vấn đề trên repo GitHub, nhưng đó thực sự là một sự phá hoại hành động vì nó sẽ xử lý tất cả các vấn đề và không thể tắt yêu cầu kéo. Một số repo như libvirt/libvirt đã viết GitHub Hành động tự động đóng tất cả các yêu cầu kéo.

  1. Bản thân điều này đã gây ra một số hậu quả khủng khiếp cho tự lưu trữ và hệ sinh thái phần mềm rộng lớn hơn, vì mọi người không có khuyến khích tối ưu hóa các bản dựng của họ hoặc tần suất họ tải xuống bản phát hành tarball từ trang web của bạn.↩︎

  2. Bạn vẫn có thể muốn duy trì một máy nhân bản chỉ đọc trong giai đoạn chuyển tiếp hoặc để tiếp tục sử dụng các trang GitHub và GitHub Hành động.↩︎

Tác giả: jslakro

#discussion