การทำ cron job ของ CI สำหรับชาว Developer ทั้งหลาย
ยอมรับว่าตอนแรกหลงทางไปไกลว่าจะใช้ตัวอื่น เนื่องจาก พอเราให้เจ้า CI ไปทำงานทุกๆ commit ผลที่เกิดขึ้นคือ ด้วยความที่โปรเจกใหญ่มาก ทำให้ pipeline นั้นทำงานเป็นชั่วโมงเลยหล่ะ แล้วยังทำงานเก่าไม่เสร็จ งานใหม่มาแทรก
จนทำให้มีเมลล์เด้งไปยัง PM เนื่องจาก full limit data นั่นเอง
![](https://cdn-images-1.medium.com/max/2400/1*21CBuf48FRjLGeCJ7RFwqw.png)
เลยต้องลบออก
![](https://cdn-images-1.medium.com/max/1600/1*o3hXbVCla5SIg0-g2M3lcw.png)
ที่คิดไว้จะทำ Cron Job (ที่ไม่ใช่ข้าวโพดเน้อ ถึงจะชื่อคล้ายๆกันก็เถอะ) ให้รันวันละครั้งพอ จุดประสงค์คือ
- ช่วยดูให้หน่อยว่าไม่ build failed นะ
- ถ้ามี Unit Test ก็ช่วยทำให้หน่อยนะ
- ช่วยดู Code Style ด้วย ว่าควร improve อะไรเพิ่มบ้าง และเป็น Kotlin Style หรือไม่
- และอื่นๆ เช่น อาจจะช่วยทำ Firebase App Distribution ได้
ก่อนอื่นไปสร้าง Pipeline กันก่อนเลย ไปที่ CI/CD > Pipelines คลิกที่ New schedule
![](https://cdn-images-1.medium.com/max/1600/1*jRf_YFoUIU8Hm9yTNjhDpw.png)
หรือไปที่ CI/CD > Schedules ก็จะเจอหน้าสร้างเช่นกัน จากนั้นกรอกข้อมูลต่างๆลงไป เราเลือก Timezone Bangkok ไป และสามารถเลือก branch ได้ด้วย
![](https://cdn-images-1.medium.com/max/1600/1*S4lKN-Jv7H8xhLi-RZLXtA.png)
และสิ่งที่น่าสนใจก็คือ การ set เวลาในการทำ Cron Job นั่นเอง เราอยากทำตอน 4 ทุ่ม ในวันจันทร์ถึงศุกร์ เราจะต้อง set อย่างไรกันนะ?
![](https://cdn-images-1.medium.com/max/1600/1*cofOL5hS7GMDR-UDNnnVpA.png)
จากตัวอย่างนั้น เราสามารถสรุปได้ดังนี้
![](https://cdn-images-1.medium.com/max/2400/1*L1hqumNr3doowifxKV4F_A.png)
เมื่อสร้างเสร็จแล้วเราสามารถรอเวลาเพื่อให้ทำงาน Cron Job หรือรีบร้อนก็กด run ไปก่อนได้เลยจ้า
สามารถอ่านเพิ่มเติมได้ที่
และไฟล์ gitlab ci ที่เราใช้นั้น จะเป็นดังนี้จ้า
เพราะเราเป็น Android Developer อ่ะเนอะ และต่อจากบล็อกที่แล้วที่กล่าวถึง ktlint นั่นเอง
![](https://miro.medium.com/max/1200/1*UUfrslgm_gkzHZqE4O7Ifw.png)
มาดูผลกันหน่อยจ้าาาา ว่าจะรอดไหม
- เมื่อ update file ตาม gist ด้านบนแล้ว ให้เริ่มทำงานตาม sehedule ที่ทำไว้ใน cron job พบว่าหลังจาก commit ไฟล์นี้ มันจะไม่เริ่ม run pipeline แล้วนะ เย้~
- ตัว cron job ทำงานตามที่เรากำหนดไว้ด้วยหล่ะ
- แต่ตรง lint มัน error ง่ะ เพราะมันไม่สามารถสร้าง report ของ lint ฝั่ง Android ได้แหะ เลยต้องแก้ path ของมัน
- พอมาอ่านๆดูพบว่า เราสามารถ set crontab ในไฟล์
.gitlab-ci.yml
ได้เลยนะ
สำหรับ gitlab ci สามารถอ่านได้เพิ่มเติมได้เลยที่นี่
สำหรับชาวดรอยโดยเฉพาะแนะนำอ่านอันนี้จ้า
![](https://about.gitlab.com/images/blogimages/yaml-gitlab-ci-android.png)
สุดท้ายฝากร้านกันสักนิด ฝากเพจด้วยนะจ๊ะ
อย่าลืมกด like กด share บทความกันด้วยนะคะ :)
Posted by MikkiPastel on Sunday, 10 December 2017