พยายามทำความเข้าใจว่า Travis CI ทำอะไรและควรใช้เมื่อใด


86

ฉันใหม่มากสำหรับ Git และฉันวางแผนที่จะมีส่วนร่วมในโครงการโอเพนซอร์สบน GitHub หลังจากพบข้อผิดพลาดเล็กน้อยในนั้น เมื่อทำการปลอมและแก้ไขข้อผิดพลาดฉันตั้งใจที่จะดึงคำขอและฉันสังเกตเห็นสิ่งนี้ปรากฏขึ้น:

ล้มเหลว - การสร้าง Travis CI ล้มเหลว

เมื่อพิจารณาถึงรายละเอียดที่ฉันค้นพบว่ามันเกิดจากCould not find .travis.ymlสิ่งที่สมเหตุสมผลเนื่องจากฉันไม่ได้ลงชื่อเข้าใช้ Travis Cl ด้วยและเพิ่ม. travis.yml ลงในที่เก็บ

นี่เป็นครั้งแรกที่ฉันได้ยินเกี่ยวกับ Travis และสิ่งที่เรียกว่าการบูรณาการอย่างต่อเนื่อง และมันฟังดูดีมากดังนั้นเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ฉันจึงค้นหาใน Wikipedia

Travis CI เป็นบริการผสานรวมแบบต่อเนื่องที่โฮสต์และกระจายซึ่งใช้ในการสร้างและทดสอบโครงการที่โฮสต์ที่ GitHub เทรวิส CI โดยอัตโนมัติเมื่อมีการกระทำที่ได้ทำและผลักดันให้พื้นที่เก็บข้อมูล GitHub ที่ใช้เทรวิส CI และทุกครั้งที่เกิดเหตุการณ์นี้ก็จะพยายามที่จะสร้างโครงการและเรียกใช้การทดสอบ ซึ่งรวมถึงข้อผูกพันในทุกสาขาไม่ใช่เฉพาะสาขาหลัก

ความเข้าใจในปัจจุบันของฉันเกี่ยวกับ Travis CI คือสิ่งที่ทำคือผลักดันโครงการโดยอัตโนมัติgit commit -am ".."และฉันไม่ค่อยเข้าใจบางส่วนของมัน

  1. การสร้างโครงการและเรียกใช้การทดสอบจะเรียกใช้การทดสอบใด และจะ "สร้าง" โครงการได้อย่างไร? (เช่นการรวบรวมเป็นไบนารี?)

  2. มันระบุว่า "นี่รวมถึงการผูกมัดกับทุกสาขา" แต่ถ้าฉันไม่ต้องการผูกมัดกับทุกสาขาล่ะ

  3. จะเป็นไรไหมถ้าฉันไม่ใช้ Travis Cl เลย? ควรใช้ภายใต้สถานการณ์ใด (หรือต้องใช้)

คำตอบ:


104

วิธีที่ง่ายที่สุดในการอธิบาย Travis CI คือเรียกใช้การทดสอบโปรแกรมของคุณทุกครั้งที่คุณตกลงกับ GitHub (สามารถกำหนดค่าได้หลายวิธีและคุณสามารถปิดการใช้งานบิลด์ในบางสาขาได้ตลอดเวลา) ประเด็นนี้คือคุณมักจะค้นพบได้เร็วมากว่าการกระทำของคุณขัดข้องและแก้ไขก่อนที่มันจะกลายเป็นปัญหา ฉันขอแนะนำให้เรียกใช้ Travis CI ในทุก repo GitHub ที่คุณมีการทดสอบหน่วยและใช้ภาษาโปรแกรมที่รองรับโดย Travis CI เนื่องจากการตั้งค่า Travis CI นั้นง่ายมากฉันจึงไม่ค่อยเห็นเหตุผลที่ดีที่จะไม่ใช้มันเว้นแต่คุณจะไม่สนใจว่าคุณจะผ่านการทดสอบในโปรแกรมของคุณหรือไม่ อย่าลังเลที่จะแสดงความคิดเห็นหากคุณมีคำถามเพิ่มเติม คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเทรวิส CI ที่นี่


1
มันบอกว่า "ฟรี" สำหรับโปรเจ็กต์โอเพนซอร์ส แต่บอกว่า 100 บิลด์แรกของคุณนั้นฟรี งั้น ... มันไม่ฟรีแล้วเหรอ? แม้แต่การพัฒนาเพียงอย่างเดียวฉันก็สามารถไปถึง 100 งานได้อย่างรวดเร็ว ฉันอ่านผิดหรือเปล่า? ไม่พบข้อมูลใด ๆ @ joshua-anderson
Mark Pieszak - Trilon.io

2
โครงการโอเพ่นซอร์สฟรีเสมอ สำหรับ repos ส่วนตัวคุณจะได้รับ 100 บิลด์ฟรีก่อนที่คุณจะต้องสมัครแผนชำระเงิน
joshua-anderson

ไม่ใช่เวิร์กโฟลว์คอมไพล์ทั่วไปที่ดึงคอมมิตล่าสุดและรวมเข้าด้วยกันในเครื่องและทดสอบแล้วกดไปที่รีโมตหรือไม่?
เบ็น

แล้วคนที่พัฒนาเว็บด้วยเครื่องมือ cli สำหรับ Angular, React หรือ Vue ล่ะ? เฟรมเวิร์กจัดเตรียมการแสดงผลและทดสอบข้อเสนอแนะทันทีเมื่อเรียกใช้เซิร์ฟเวอร์ dev มีความแตกต่างระหว่างสิ่งนั้นกับ Travis CI หรือไม่หรือฉันควรพูดระหว่างการทดสอบหน่วยก่อนที่จะกระทำและการใช้ CI โดยทั่วไป?
OzzyTheGiant

ดังนั้น travis จึงไม่สมเหตุสมผลฉันสามารถวาง travis ได้อย่างง่ายดายโดยใช้ git commits hooks และ block push ที่ส่งคืนข้อผิดพลาดจากคำสั่ง test
betoharres

16

ดังที่คุณได้ค้นพบแล้วว่า Travis-CI คืออะไรฉันจะชี้ไปที่คำถามของคุณโดยตรง

การสร้างโครงการและเรียกใช้การทดสอบจะเรียกใช้การทดสอบใด และจะ "สร้าง" โครงการได้อย่างไร? (เช่นการรวบรวมเป็นไบนารี?)

ใน.travis.ymlไฟล์ที่คุณระบุ OS ของคุณภาษาการเขียนโปรแกรมสาขา repo ของคุณชื่อไฟล์โปรเจ็กต์และรายละเอียดอื่น ๆ เมื่ออ่านไฟล์นี้ Travis-CI จะใช้คอมไพเลอร์เฉพาะที่ติดตั้งบนเซิร์ฟเวอร์เพื่อคอมไพล์โค้ดของเรา อาจเป็นไปได้ว่าพวกเขาจะมีกลไกเช่นเดียวกับที่เรามีสำหรับ Github ในครั้งแรกพวกเขาอาจดึงรหัส [หากเราระบุสาขาที่เฉพาะเจาะจงพวกเขาอาจดึงรหัสจากสาขาเหล่านั้นเท่านั้น] นอกจากนี้เราได้ตรวจสอบความถูกต้องเพื่อใช้บัญชีของเรากับ Travis-CI เมื่อใดก็ตามที่เราทำการคอมมิตควรมีการแจ้งเตือนบางอย่างที่ควรเริ่มการทำงานไปยังเซิร์ฟเวอร์ Travis-CI ดังนั้นมันจะได้รับการยอมรับว่าเป็นการกระทำและจะเริ่มรวบรวม


มันระบุว่า "นี่รวมถึงการผูกมัดกับทุกสาขา" แต่ถ้าฉันไม่ต้องการผูกมัดกับทุกสาขาล่ะ

คุณสามารถระบุสาขาที่แตกต่างกันหรือmasterสาขา และควรรวบรวมเฉพาะสาขาเฉพาะที่ระบุไว้ใน.travis.ymlไฟล์


จะเป็นไรไหมถ้าฉันไม่ใช้ Travis Cl เลย? ควรใช้ภายใต้สถานการณ์ใด (หรือต้องใช้)

ใช่ไม่เป็นไร ไม่ใช่เรื่องใหญ่. แต่ประโยชน์ที่คุณจะขาดหายไปคือการไม่ใช้เครื่องมือที่ง่ายต่อการรวมเข้ากับ repo ของคุณ ทุกครั้งที่คุณยอมรับอาจเป็นไปได้ว่ามันพลาดบางอย่างและไม่สามารถรวบรวมได้เนื่องจากรหัส คุณจะรู้ได้อย่างไร? ดังนั้นคุณควรใช้ Travis-CI


ฉันได้เขียนบล็อกโพสต์ที่คุณสามารถอ่านเพื่อทราบ Travis-CI คืออะไรการผสานรวมแบบต่อเนื่องและวิธีเชื่อมโยง Travis-CI กับ Github Repo ของคุณ ฉันได้เขียนไว้สำหรับที่เก็บ Swift


2

ฉันคิดว่าฉันอยู่ในตำแหน่งที่ดีมากที่จะตอบคำถามคุณในขณะที่ฉันกำลังเรียนรู้ Travis CI อยู่ในขณะนี้ ปัญหาแรกที่คุณพบตั้งแต่แรกเนื่องจากโครงการที่คุณร่วมให้ข้อมูลนั้นใช้ Travis CI เพื่อทดสอบและสร้างโครงการ หากโครงการไม่ได้ใช้ Travis CI คุณจะไม่พบข้อผิดพลาดดังกล่าว

วิธีแก้ปัญหาคือชำระเงินที่เว็บไซต์ Travis CIและเรียนรู้วิธีการทำงานและผลกระทบต่อโครงการที่คุณกำลังดำเนินการอยู่ สิ่งนี้จะทำให้คุณอยู่ในตำแหน่งที่ดีมากในการทำความเข้าใจว่าเกิดอะไรขึ้นในโค้ดของคุณและจะแก้ไขได้อย่างไร

เพื่อตอบคำถามแรกเกี่ยวกับการสร้างโครงการ

การสร้างโครงการและเรียกใช้การทดสอบจะเรียกใช้การทดสอบใด และจะ "สร้าง" โครงการได้อย่างไร? (เช่นการรวบรวมเป็นไบนารี?)

หมายถึงวิธีการประมวลผลซอร์สโค้ดก่อนใช้ / ทดสอบ ขึ้นอยู่กับภาษาที่คุณเขียน ตัวอย่างเช่นหากโปรเจ็กต์กำลังเขียนด้วย PHP จะไม่สร้างโค้ดของฉันเป็นไฟล์ปฏิบัติการเช่นซอร์สโค้ด C / C ++ มันจะเรียกใช้โค้ด PHP ของฉันบนตัวแปล PHP และทดสอบตามที่ทำ มันยังคงต้องผ่านกระบวนการคอมไพล์ตามปกติภาษาที่คุณต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.