Travis CI'nin ne yaptığını ve ne zaman kullanılması gerektiğini anlamaya çalışmak


86

Git'te çok yeniyim ve küçük bir hata keşfettikten sonra GitHub'daki bazı açık kaynaklı projelere katkıda bulunmayı planlıyorum. Çatalladıktan ve hatayı düzelttikten sonra, bir çekme isteği yaptım ve bunun ortaya çıktığını fark ettim:

Başarısız - Travis CI yapısı başarısız oldu

Could not find .travis.ymlTravis Cl'ye giriş yapmadığım ve depoya .travis.yml eklemediğim için bunun neden olduğunu keşfettiğim ayrıntılara baktığımda mükemmel bir anlam ifade etti.

Bu, Travis ve bunun sürekli entegrasyon olarak bilinen şey hakkında ilk kez duyduğum şey. Ve kulağa oldukça havalı geliyor, bu yüzden hakkında daha fazla şey öğrenmek için Wikipedia'ya baktım.

Travis CI, GitHub'da barındırılan projeleri oluşturmak ve test etmek için kullanılan, barındırılan, dağıtılmış bir sürekli entegrasyon hizmetidir. Travis CI, bir commit yapıldığını ve Travis CI kullanan bir GitHub deposuna gönderildiğini otomatik olarak algılar ve bu her seferinde , projeyi oluşturmaya ve testleri çalıştırmaya çalışır . Bu, yalnızca ana şubeye değil, tüm şubelere yapılan taahhütleri içerir.

Benim Travis CI hakkındaki şu anki anlayışım, yaptığı şeyin otomatik olarak projeye itilmesi ve git commit -am ".."bunun bir kısmını tam olarak anlamadığım.

  1. By projeyi kontrol ediyorlar bina ne testler çalıştırmak olacak? Ve projeyi nasıl "inşa edecek"? (ikiliye derlemek gibi?)

  2. "Bu, tüm branşlara yapılan taahhütleri içerir" diyor - ama ya tüm şubelere taahhüt etmek istemiyorsam?

  3. Travis Cl kullanmazsam sorun olur mu? Hangi koşullarda kullanmak en iyisidir (veya kullanılması gerekir)?

Yanıtlar:


104

Travis CI'yı açıklamanın en basit yolu, GitHub'a her taahhüt verdiğinizde programınızın testlerini çalıştırmasıdır (bu, birçok şekilde yapılandırılabilir ve bazı dallarda derlemeleri her zaman devre dışı bırakabilirsiniz). Bunun amacı, taahhüdünüzün bir şeyi bozup bozmadığını genellikle çok hızlı bir şekilde keşfedebilir ve bir sorun haline gelmeden önce onu düzeltebilirsiniz. Birim testleriniz olan ve Travis CI tarafından desteklenen bir programlama dili kullandığınız her GitHub repo'sunda Travis CI çalıştırmanızı tavsiye ederim. Travis CI'yi kurmak çok kolay olduğundan, programınızda testleri geçip geçmediğinizi umursamadığınız sürece, normalde kullanmamak için iyi bir neden görmüyorum. Başka sorunuz varsa yorum bırakmaktan çekinmeyin. Sen Travis CI hakkında daha fazla bilgi bulabilirsiniz burada .


1
Açık kaynaklı projeler için "ücretsiz" olduğunu söylüyor, ancak ilk 100 yapınızın ücretsiz olduğunu söylüyor. Yani ... o zaman ücretsiz değil mi? Tek başına geliştirirken bile çok hızlı bir şekilde 100 yapıya ulaşabilirim. Bunu yanlış mı okuyorum? Hiçbir yerde herhangi bir bilgi bulamıyorum. @ joshua-anderson
Mark Pieszak - Trilon.io

2
Açık kaynaklı projeler için her zaman ücretsizdir. Özel depolar için, ücretli bir plana kaydolmanız gerekmeden önce 100 ücretsiz derleme elde edersiniz.
joshua-anderson

Tipik git iş akışı, en son commit'i alıp yerel olarak birleştirip test edip sonra uzaklara zorlamıyor mu?
Ben

Angular, React veya Vue için cli araçlarıyla web geliştirme yapan kişiler ne olacak? Çerçeveler, dev sunucusu çalıştırılırken anında aktarım ve test geri bildirimi sağlar. Bu ve Travis CI arasında herhangi bir fark var mı, yoksa genel olarak CI taahhüt etmeden ve kullanmadan önce birim testlerini çalıştırmak arasında bir fark var mı?
OzzyTheGiant

Yani travis mantıklı değil, git commit kancalarını kullanarak travileri kolayca bırakabilirim ve test komutundan hata döndüren itmeleri engelleyebilirim.
betoharres

16

Travis-CI'nin ne olduğunu zaten keşfetmiş olduğunuz gibi, doğrudan sahip olduğunuz sorulara işaret edeceğim.

Projeyi oluşturarak ve testler yaparak hangi testleri çalıştıracak? Ve projeyi nasıl "inşa edecek"? (ikiliye derlemek gibi?)

Gelen .travis.ymlbir dosyaya size OS, programlama dili, sizin Repo dalı, proje dosya adını ve diğer ayrıntıları belirterek ediyoruz. Bu dosyayı okuyarak, Travis-CI, kodumuzu derlemek için sunucularında kurulu olan belirli derleyicileri kullanacaktır. Muhtemelen Github için sahip olduğumuz mekanizmaya sahip olacaklar. İlk defa, kodu çekebilirler [eğer belirli dalları belirlediysek, kodu yalnızca bu dallardan çekebilirler]. Ayrıca, hesabımızı Travis-CI ile kullanmak için doğruladık, ne zaman bir taahhütte bulunduğumuzda, Travis-CI sunucusuna bir bildirimde bulunmalı ve böylece bir taahhüt olarak kabul edilecek ve derlenmeye başlayacaktır.


"Bu, tüm branşlara yapılan taahhütleri içerir" diyor - ama ya tüm şubelere taahhüt etmek istemiyorsam?

Farklı şubeler veya şubeler belirtebilirsiniz master. Ve yalnızca .travis.ymldosyada belirtilen belirli dalları derlemelidir .


Travis Cl kullanmazsam sorun olur mu? Hangi koşullarda kullanmak en iyisidir (veya kullanılması gerekir)?

Evet, sorun değil. Önemli bir şey değil. Ancak bu kolay entegre motoru deponuzla kullanmayarak ne gibi faydalar kaçıracaksınız? Her taahhüt ettiğinizde, bir şeyi gözden kaçırması ve bir kod nedeniyle derlenememesi olasıdır. Nasıl bileceksin Bu nedenle Travis-CI kullanmalısınız.


Travis-CI nedir, Continuous Integrations nedir ve Travis-CI ile Github Repo arasında nasıl bağlantı kurulacağını öğrenmek için okuyabileceğiniz bir blog yazısı yazdım . Bunu bir Swift deposu için yazdım.


2

Şu anda Travis CI öğreniyor olduğum için sorunuzu yanıtlamak için çok iyi bir konumda olduğumu düşünüyorum. İlk başta karşılaştığınız ilk sorun, katkıda bulunduğunuz projenin projeyi test etmek ve inşa etmek için Travis CI kullanıyor olmasıdır. Proje Travis CI kullanmıyorsa, böyle bir hatayla karşılaşmazsınız.

Çözüm, Travis CI web sitesini kontrol etmek ve nasıl çalıştığını ve üzerinde çalıştığınız projeyi nasıl etkilediğini öğrenmek. Bu, kodunuzda neyin başarısız olduğunu ve nasıl düzeltileceğini anlamak için sizi çok iyi bir konuma getirecektir.

Projeyi inşa etmekle ilgili ilk soruyu cevaplamak.

Projeyi oluşturarak ve testler yaparak hangi testleri çalıştıracak? Ve projeyi nasıl "inşa edecek"? (ikiliye derlemek gibi?)

Kullanmadan / test etmeden önce kaynak kodun nasıl işlendiği anlamına gelir. Yazmakta olduğunuz dile bağlıdır. Örneğin, proje PHP ile yazıyorsa. Kodumu C / C ++ kaynak kodu gibi çalıştırılabilir bir dosyada oluşturmayacak. PHP kodumu PHP yorumlayıcı üzerinde çalıştıracak ve bunu yaptığı gibi test edecek. Hala tercih ettiğiniz dilin geçtiği normal derleme sürecinden geçer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.