อยากขอความเห็น / ประสบการณ์เรื่องการจัดการโครงสร้างโปรเจคบน Github แบบที่จะกล่าวต่อไปนี้ โดยต้องเอาไปใช้ได้บน CI/CD ได้ด้วยครับ.
1. ตัวโครงสร้างเป็น Phonegap Application ทั่วๆไปที่ต้องออก package ทั้ง Android และ iOS
2. ต้องออก package ให้หลายๆสาขาใช้ โดยผมจะแยก config.xml, icon, resource ของแต่ละสาขาไปเลย แต่ใช้ source code หลักตัวเดียวกันเป๊ะๆ.
คือถ้าเปรียบเทียบกับวิธี manual เลยคือ
1. ก๊อปปี้ config.xml, icon, resource ของสาขา 1 ไปวางให้ถูกที่ แล้ว build ให้ได้ Android + iOS
2. พอจะ Build สาขา 2 ก็ทำแบบเดิมในข้อ 1 เพียงแต่ resource ที่จะ copy จะเป็นของสาขา 2 เท่านั้นเอง
เลยอยากถามว่าควรมีโครงสร้างโปรเจคและมี workflow ตอน build ยังไงถึงจะเหมาะครับ.
ถ้าไม่แตกต่างกันมาก ผมคงใช้สคริปท์เดียว แต่เขียนให้รับพารามิเตอร์ว่าเป็น build สำหรับสาขาไหน แล้วให้ตัว build ไปดึงเอาไฟล์ที่ถูกต้องมาเอง
อย่าง gradle ก็ใช้ -P ในการส่งพารามิเตอร์เข้าไปใน build task นั้นได้ครับ ใน build task ก็ต้องแก้ให้มันไปใช้ไฟล์ที่ถูกต้องจากแต่ละสาขามา อะไรแบบนี้
ไม่ควรเก็บ config ไว้ใน code ครับ ตาม 12 factors (https://12factor.net/th/)
ผมมองว่า resource ที่พูดถึงก็คือ config ทั้งหมด ที่ควรแยกออกมาใส่ไว้ใน environment variables แยกเป็นชุดๆของแต่ละสาขาที่พูดถึงครับ
ตอน build time ค่อยไปดึง variables มาให้ถูกครับ