Mencoba memahami apa yang Travis CI lakukan dan kapan harus digunakan

86

Saya sangat baru mengenal Git dan saya berencana untuk berkontribusi pada beberapa proyek open-source di GitHub setelah menemukan kesalahan kecil di dalamnya. Setelah mem-forkingnya dan memperbaiki kesalahannya, saya bermaksud melakukan pull request dan saya perhatikan ini muncul:

Gagal - Build Travis CI gagal

Melihat detail yang saya temukan itu disebabkan oleh Could not find .travis.yml, yang sangat masuk akal karena saya belum masuk ke Travis Cl dengan dan menambahkan .travis.yml ke repositori.

Ini pertama kalinya saya mendengar tentang Travis dan apa yang disebut integrasi berkelanjutan. Dan kedengarannya sangat keren jadi untuk mempelajari lebih lanjut tentang itu, saya mencarinya di Wikipedia.

Travis CI adalah layanan integrasi berkelanjutan terdistribusi yang dihosting yang digunakan untuk membuat dan menguji project yang dihosting di GitHub. Travis CI secara otomatis mendeteksi ketika komit telah dibuat dan didorong ke repositori GitHub yang menggunakan Travis CI, dan setiap kali ini terjadi, Travis akan mencoba membangun proyek dan menjalankan pengujian . Ini termasuk komit ke semua cabang, tidak hanya ke cabang master.

Pemahaman saya saat ini tentang Travis CI adalah bahwa apa yang dilakukannya secara otomatis mendorong proyek git commit -am ".."dan saya tidak begitu mengerti beberapa bagian darinya.

  1. Dengan membangun proyek dan menjalankan pengujian , pengujian apa yang akan dijalankan? Dan bagaimana itu akan "membangun" proyek? (seperti mengkompilasinya menjadi biner?)

  2. Ini menyatakan bahwa "Ini termasuk komit ke semua cabang" - tetapi bagaimana jika saya tidak ingin berkomitmen ke semua cabang?

  3. Apakah tidak apa-apa jika saya tidak menggunakan Travis Cl sama sekali? Dalam keadaan apa yang terbaik untuk menggunakannya (atau harus digunakan)?

mencoba mencari tahu
sumber

Jawaban:

104

Cara termudah untuk menjelaskan Travis CI adalah bahwa ia menjalankan pengujian program Anda setiap kali Anda berkomitmen pada GitHub (ini dapat dikonfigurasi dengan banyak cara, dan Anda selalu dapat menonaktifkan build di beberapa cabang). Intinya adalah Anda sering kali dapat mengetahui dengan sangat cepat jika komit Anda melanggar sesuatu, dan memperbaikinya sebelum menjadi masalah. Saya akan merekomendasikan menjalankan Travis CI pada setiap repo GitHub yang Anda gunakan untuk pengujian unit dan menggunakan bahasa pemrograman yang didukung oleh Travis CI. Karena menyiapkan Travis CI sangat mudah, saya biasanya tidak melihat alasan yang baik untuk tidak menggunakannya, kecuali jika Anda tidak peduli apakah Anda telah lulus tes dalam program Anda atau tidak. Silakan tinggalkan komentar jika Anda memiliki pertanyaan lebih lanjut. Anda dapat membaca lebih lanjut tentang Travis CI di sini .

joshua-anderson
sumber
1
Ia mengatakan itu "gratis" untuk proyek open source, tetapi mengatakan 100 build pertama Anda gratis. Jadi ... itu tidak gratis? Bahkan mengembangkan sendiri saya bisa mencapai 100 build dengan sangat cepat. Apakah saya salah membaca ini? Tidak dapat menemukan info apa pun di mana pun. @ joshua-anderson
Mark Pieszak - Trilon.io
2
Itu selalu gratis untuk proyek sumber terbuka. Untuk repo pribadi, Anda mendapatkan 100 build gratis sebelum Anda perlu mendaftar untuk paket berbayar.
joshua-anderson
Bukankah alur kerja git biasa menarik komit terbaru dan menggabungkan secara lokal dan menguji lalu mendorong ke jarak jauh?
Ben
Bagaimana dengan orang yang melakukan pengembangan web dengan alat cli untuk Angular, React, atau Vue? Kerangka kerja memberikan transpiling instan dan umpan balik pengujian saat menjalankan server dev. Apakah ada perbedaan antara itu dan Travis CI, atau haruskah saya katakan antara menjalankan pengujian unit sebelum melakukan dan menggunakan CI secara umum?
OzzyTheGiant
Jadi travis tidak masuk akal, saya dapat dengan mudah melepaskan travis dengan menggunakan git commit hooks dan blokir dorongan yang mengembalikan kesalahan dari perintah pengujian.
betoharres
16

Karena Anda telah menemukan apa itu Travis-CI, saya akan langsung menunjukkan pertanyaan yang Anda miliki.

Dengan membangun proyek dan menjalankan pengujian, pengujian apa yang akan dijalankan? Dan bagaimana itu akan "membangun" proyek? (seperti mengkompilasinya menjadi biner?)

Dalam .travis.ymlfile yang Anda tentukan OS Anda, bahasa pemrograman, cabang repo Anda, nama file proyek dan detail lainnya. Dengan membaca file ini, Travis-CI akan menggunakan kompiler spesifik yang diinstal di server mereka untuk mengkompilasi kode kami. Mungkin mereka akan memiliki mekanisme yang sama seperti yang kami miliki untuk Github. Untuk pertama kalinya, mereka mungkin menarik kode [jika kita telah menentukan cabang tertentu, mereka mungkin menarik kode hanya dari cabang tersebut]. Juga, kami telah mengotentikasi untuk menggunakan akun kami dengan Travis-CI, setiap kali kami membuat komit, harus ada beberapa pemberitahuan yang harus diaktifkan ke server Travis-CI sehingga itu akan dikenali sebagai komit dan itu akan mulai dikompilasi.


Ini menyatakan bahwa "Ini termasuk komit ke semua cabang" - tetapi bagaimana jika saya tidak ingin berkomitmen ke semua cabang?

Anda dapat menentukan cabang atau cabang yang berbeda master. Dan itu hanya harus mengkompilasi cabang tertentu yang ditentukan dalam .travis.ymlfile.


Apakah tidak apa-apa jika saya tidak menggunakan Travis Cl sama sekali? Dalam keadaan apa yang terbaik untuk menggunakannya (atau harus digunakan)?

Ya tidak apa-apa. Bukan masalah besar. Tetapi manfaat apa yang akan Anda lewatkan dengan tidak menggunakan mesin yang mudah diintegrasikan ini dengan repo Anda. Setiap kali Anda komit, mungkin saja ia melewatkan sesuatu dan tidak dapat dikompilasi karena sebuah kode. Bagaimana kamu tahu Jadi, Anda harus menggunakan Travis-CI.


Saya telah menulis posting blog yang dapat Anda baca untuk mengetahui, apa itu Travis-CI, Integrasi Berkelanjutan, dan cara menautkan Travis-CI dengan Github Repo Anda. Saya telah menulisnya untuk repositori Swift.

Hemang
sumber
2

Saya pikir saya berada dalam posisi yang sangat baik untuk menjawab pertanyaan Anda karena saat ini saya sedang mempelajari Travis CI. Masalah pertama yang Anda temui di tempat pertama adalah karena proyek yang Anda kontribusikan menggunakan Travis CI untuk menguji dan membangun proyek. Jika proyek tidak menggunakan Travis CI, Anda tidak akan menemukan kesalahan seperti itu.

Solusinya adalah memeriksa situs web Travis CI dan mempelajari cara kerjanya dan bagaimana pengaruhnya terhadap proyek yang Anda kerjakan. Ini akan menempatkan Anda pada posisi yang sangat baik untuk memahami apa yang gagal dalam kode Anda dan cara memperbaikinya.

Untuk menjawab pertanyaan pertama tentang membangun proyek.

Dengan membangun proyek dan menjalankan pengujian, pengujian apa yang akan dijalankan? Dan bagaimana itu akan "membangun" proyek? (seperti mengkompilasinya menjadi biner?)

Ini berarti bagaimana kode sumber diproses sebelum digunakan / diuji. Itu tergantung pada bahasa yang Anda tulis. Misalnya, jika proyek menulis dengan PHP. Ini tidak akan membuat kode saya menjadi file yang dapat dieksekusi seperti kode sumber C / C ++. Ini akan menjalankan kode PHP saya pada juru bahasa PHP dan mengujinya saat melakukannya. Ini masih melalui proses kompilasi normal yang dilalui bahasa pilihan Anda.

Emmanuel
sumber