Bir sürü diğer düzenli katkıda bulunan çok büyük bir araştırma liderliğindeki açık kaynaklı proje üzerinde çalışıyorum. Proje artık oldukça büyük olduğu için, projeyi sürdürmek, sürekli entegrasyon (CI) vb. Olmak üzere bir konsorsiyum (iki tam zamanlı çalışandan ve birkaç üyeden oluşur) sorumludur. olsa da katkıları.
Proje yaklaşık yarım milyon ya da daha fazla kod satırından oluşan bir "çekirdek" çerçeveden, konsorsiyum tarafından sürdürülen bir sürü "eklentiden" ve çoğu biz de dahil olduğumuz birkaç harici eklentiden oluşuyor. farkında bile değil.
Şu anda, bizim CI çekirdeği ve sürdürülen eklentileri oluşturur.
Karşılaştığımız en büyük sorunlardan biri, katkıda bulunanların çoğunun (ve özellikle de ara sıra olanların), bakımı yapılan eklentilerin% 90'ını oluşturmamasıdır, bu nedenle çekirdekte yeniden yapılanma değişiklikleri önerdiğinde (bu günlerde oldukça düzenli olarak gerçekleşir), GitHub'a bir çekme isteği yapmadan önce, kodun kendi makinelerinde derlendiğini kontrol ettiler.
Kod işe yarar, mutlu olurlar ve sonra CI inşayı bitirir ve problemler başlar: derleme konsorsiyum tarafından sürdürülen bir eklentide başarısız oldu, katılımcının kendi makinesinde oluşturmadı.
Bu eklenti, örneğin CUDA gibi üçüncü taraf kütüphanelere bağımlı olabilir ve kullanıcı istemez, donanım nedenleriyle bu bozuk eklentiyi nasıl derleyeceğini bilmiyor veya basitçe yapamıyor.
Öyleyse - Ya be-birleşti asla-to-of belirsizlik içinde PR kalır reklam aeternam PRs - Ya katkıda bulunan kırık Eklentinin kaynağında yeniden adlandırılmış değişkeni greps için kod, onun / onu dala iter, bekler değiştirir CI derlemeyi bitirir, genellikle daha fazla hata alır ve CI mutlu olana kadar süreci tekrarlar - Veya konsorsiyumda önceden rezervasyon yaptırmış iki kalıcı üyeden biri yardım eder ve PR'ı makinelerinde tamir etmeye çalışır.
Bu seçeneklerin hiçbiri uygulanabilir değil, ancak nasıl farklı yapılacağını bilmiyoruz. Projelerinizde benzer bir durumla hiç karşılaştınız mı? Ve eğer öyleyse, bu problemi nasıl çözdünüz? Burada görmediğim bir çözüm var mı?