อั้น Jenkins ให้ run UI test ทีละกล่อง
วันก่อนทีมมาบอกว่า พอ UI test ของ Android กับ iOS มันแย่งกัน run ปุ๊บ มันจะช้ามาก ๆ เลย เราอั้นให้มัน run ทีละกล่องได้ไหม?
ผมลอง search ดูก็ไม่เจอวิธี ปรกติถ้าเป็น job ที่อยู่ใน pipeline เดียวกัน มันจะ block กันอยู่แล้ว แต่ pipeline iOS กับ Android มันไม่เกี่ยวกันนี่สิ…
สุดท้ายก็เลยคิดวิธีเอาเอง โดยมี 3 ขั้นตอนดังนี้
- สร้าง Node ใหม่ขึ้นมาบนเครื่องเดิม แล้วอั้นให้มัน run ได้ทีละ job
- ไปกำหนดให้กล่อง run UI test ของทั้ง 2 platform ให้มัน run บน Node ใหม่นี้เท่านั้น
- ตรวจสอบว่าทั้ง 2 งานมันรอกันแล้ว
ขั้นแรก เรามาสร้าง Node ใหม่ก่อน ผมตั้งชื่อมันว่า turtle และกำหนด label ว่า turtle แล้วให้มัน ssh ไปที่เครื่องตัวเอง (localhost) นี่แหละ
อย่าลืม limit executors ให้เหลือแค่ 1 หล่ะ
เสร็จแล้ว ก็ไปกำหนดใน job “android_ui_test” และ “ios_ui_test” ให้มัน run ด้วย node ที่ถูก label ว่า turtle เท่านั้น
ทีนี้เราก็จะเห็นว่า job ui_test เหล่านี้ มันจะไป run ใน queue ของ Node turtle เท่านั้น
เพียงเท่านี้ UI test ของทั้ง 2 platform ก็ไม่แย่งกัน run แล้ว :)
หวังว่าจะมีประโยชน์นะครับ ขอบคุณที่สละเวลาอ่านครับ ^/\^