ฟีเจอร์ CI

ต่อไปนี้คือฟีเจอร์บางส่วนที่คุณพบได้ในระบบ CI ส่วนใหญ่

สภาพแวดล้อม

คุณควรเลือกและทำความเข้าใจสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ที่ระบบใช้ทำงานตามเวิร์กโฟลว์ ข้อควรพิจารณาที่สำคัญสำหรับแอปพลิเคชัน Android มีดังนี้

  • แพลตฟอร์ม: Linux, Mac, Windows และเวอร์ชันต่างๆ
  • หน่วยความจําที่พร้อมใช้งาน: การสร้างแอปและการเรียกใช้โปรแกรมจําลองอาจใช้ RAM เป็นจำนวนมาก และมักจําเป็นต้องปรับแต่งพารามิเตอร์ เช่น ขนาดฮีปของ JVM เพื่อหลีกเลี่ยงข้อผิดพลาดเกี่ยวกับหน่วยความจําไม่เพียงพอ
  • ซอฟต์แวร์ที่ติดตั้งไว้ล่วงหน้า: ระบบ CI มักจะให้อิมเมจที่มีคอลเล็กชันเครื่องมือจํานวนมาก เช่น Java Development Kit (JDK), Android Software Development Kit (SDK), เครื่องมือสร้าง, แพลตฟอร์ม และโปรแกรมจําลอง
  • สถาปัตยกรรมและชุดคำสั่งของโปรแกรมรันไทม์: ARM, x86 ซึ่งสำคัญเมื่อใช้โปรแกรมจำลอง
  • ตัวแปรสภาพแวดล้อม: ระบบ CI จะตั้งค่าตัวแปรบางอย่าง (เช่น ANDROID_HOME) และคุณตั้งค่าของคุณเองได้ เช่น เพื่อหลีกเลี่ยงการเขียนข้อมูลเข้าสู่ระบบแบบฮาร์ดโค้ดในเวิร์กโฟลว์

คุณควรพิจารณาแง่มุมอื่นๆ อีกมากมาย เช่น จํานวนแกนประมวลผลที่ใช้ได้ และเปิดใช้การจําลองเสมือนเพื่อเรียกใช้โปรแกรมจําลองหรือไม่

บันทึกและรายงาน

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

นอกจากนี้ การสร้างและการทดสอบจะสร้างรายงานที่มักจะจัดเก็บเป็นรายการต่างๆ ของบิลด์นั้นๆ คุณสามารถใช้ปลั๊กอินเพื่อแสดงผลลัพธ์ของรายงานเหล่านั้นเป็นภาพได้ ทั้งนี้ขึ้นอยู่กับระบบ CI

เวลาทำงานของแคชและ CI

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

วิธีปรับปรุงเวลาในการเรียกใช้และความน่าเชื่อถือมีดังนี้

  • โมดูล: ตรวจหาว่าโมดูลใดได้รับผลกระทบจากการเปลี่ยนแปลง และสร้างและทดสอบเฉพาะโมดูลเหล่านั้น
  • ข้ามแคช: หากบิลด์มีสคริปต์ที่นักพัฒนาแอปแก้ไข ให้ละเว้นแคชของบิลด์ การสร้างตั้งแต่ต้นจะปลอดภัยกว่า
  • แยกการทดสอบ: การแยกการทดสอบในอุปกรณ์หลายเครื่องอาจมีประโยชน์อย่างยิ่งสำหรับการทดสอบที่มีเครื่องมือวัด ซึ่งรันเนอร์ Android, Gradle, อุปกรณ์ที่มีการจัดการ และ Firebase Test Lab รองรับการดำเนินการนี้
  • แยกบิลด์: คุณสามารถแยกบิลด์ในอินสแตนซ์เซิร์ฟเวอร์หลายรายการได้
  • แคชระยะไกล: คุณใช้แคชระยะไกลของ Gradle ได้ด้วย

ลองทดสอบที่ล้มเหลวอีกครั้ง

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

การกำหนดค่าการลองอีกครั้งนั้นไม่มีวิธีเดียว เนื่องจากอาจเกิดขึ้นได้หลายระดับ ตารางต่อไปนี้แสดงการดำเนินการที่คุณอาจทำเพื่อตอบสนองต่อการทดสอบที่ไม่สอดคล้องกัน

ไม่สำเร็จ

การทำงาน

โปรแกรมจำลองไม่ตอบสนองเป็นเวลา 1 วินาที ซึ่งทริกเกอร์การหมดเวลา

เรียกใช้การทดสอบที่ล้มเหลวอีกครั้ง

โปรแกรมจำลองบูตไม่สำเร็จ

เรียกใช้ทั้งงานอีกครั้ง

เกิดข้อผิดพลาดในการเชื่อมต่อระหว่างขั้นตอนการชำระค่ารหัส

รีสตาร์ทเวิร์กโฟลว์

คุณควรบันทึกและติดตามว่าส่วนใดของระบบทำงานไม่ถูกต้อง และลงทุนในการรักษา CI ให้เชื่อถือได้และรวดเร็ว โดยไม่อาศัยการลองใหม่เท่านั้น