การทำ cron job ของ CI สำหรับชาว Developer ทั้งหลาย
ยอมรับว่าตอนแรกหลงทางไปไกลว่าจะใช้ตัวอื่น เนื่องจาก พอเราให้เจ้า CI ไปทำงานทุกๆ commit ผลที่เกิดขึ้นคือ ด้วยความที่โปรเจกใหญ่มาก ทำให้ pipeline นั้นทำงานเป็นชั่วโมงเลยหล่ะ แล้วยังทำงานเก่าไม่เสร็จ งานใหม่มาแทรก
จนทำให้มีเมลล์เด้งไปยัง PM เนื่องจาก full limit data นั่นเอง

เลยต้องลบออก

ที่คิดไว้จะทำ Cron Job (ที่ไม่ใช่ข้าวโพดเน้อ ถึงจะชื่อคล้ายๆกันก็เถอะ) ให้รันวันละครั้งพอ จุดประสงค์คือ
- ช่วยดูให้หน่อยว่าไม่ build failed นะ
- ถ้ามี Unit Test ก็ช่วยทำให้หน่อยนะ
- ช่วยดู Code Style ด้วย ว่าควร improve อะไรเพิ่มบ้าง และเป็น Kotlin Style หรือไม่
- และอื่นๆ เช่น อาจจะช่วยทำ Firebase App Distribution ได้
ก่อนอื่นไปสร้าง Pipeline กันก่อนเลย ไปที่ CI/CD > Pipelines คลิกที่ New schedule

หรือไปที่ CI/CD > Schedules ก็จะเจอหน้าสร้างเช่นกัน จากนั้นกรอกข้อมูลต่างๆลงไป เราเลือก Timezone Bangkok ไป และสามารถเลือก branch ได้ด้วย

และสิ่งที่น่าสนใจก็คือ การ set เวลาในการทำ Cron Job นั่นเอง เราอยากทำตอน 4 ทุ่ม ในวันจันทร์ถึงศุกร์ เราจะต้อง set อย่างไรกันนะ?

จากตัวอย่างนั้น เราสามารถสรุปได้ดังนี้

เมื่อสร้างเสร็จแล้วเราสามารถรอเวลาเพื่อให้ทำงาน Cron Job หรือรีบร้อนก็กด run ไปก่อนได้เลยจ้า
สามารถอ่านเพิ่มเติมได้ที่
และไฟล์ gitlab ci ที่เราใช้นั้น จะเป็นดังนี้จ้า
เพราะเราเป็น Android Developer อ่ะเนอะ และต่อจากบล็อกที่แล้วที่กล่าวถึง ktlint นั่นเอง

มาดูผลกันหน่อยจ้าาาา ว่าจะรอดไหม
- เมื่อ update file ตาม gist ด้านบนแล้ว ให้เริ่มทำงานตาม sehedule ที่ทำไว้ใน cron job พบว่าหลังจาก commit ไฟล์นี้ มันจะไม่เริ่ม run pipeline แล้วนะ เย้~
- ตัว cron job ทำงานตามที่เรากำหนดไว้ด้วยหล่ะ
- แต่ตรง lint มัน error ง่ะ เพราะมันไม่สามารถสร้าง report ของ lint ฝั่ง Android ได้แหะ เลยต้องแก้ path ของมัน
- พอมาอ่านๆดูพบว่า เราสามารถ set crontab ในไฟล์
.gitlab-ci.yml
ได้เลยนะ
สำหรับ gitlab ci สามารถอ่านได้เพิ่มเติมได้เลยที่นี่
สำหรับชาวดรอยโดยเฉพาะแนะนำอ่านอันนี้จ้า

สุดท้ายฝากร้านกันสักนิด ฝากเพจด้วยนะจ๊ะ
อย่าลืมกด like กด share บทความกันด้วยนะคะ :)
Posted by MikkiPastel on Sunday, 10 December 2017