วันนี้มีโอกาสมาแบ่งปันเรื่อง Continuous Delivery with Fastlane
ในงาน iOS Dev Meetup ครั้งที่ 4 จากกลุ่ม iOS Developer Thailand
จึงทำการสรุปสิ่งที่แบ่งปันไว้นิดหน่อย
หัวข้อต่าง ๆ ในงาน meetup ประกอบไปด้วย
- Continuous Delivery with Fastlane
- Redux
- React Native
สรุปสิ่งที่แบ่งปันเรื่อง Fastlane ก่อน
เริ่มด้วยแนวคิดของ Continuous Delivery(CD) ว่าเป็นอย่างไร ซึ่งเน้นไปที่เรื่องของ คุณภาพ (Quality) ที่ต้องอยู่ในทุก ๆ กระบวนการของการพัฒนา software ไม่ว่าจะเป็น web หรือ mobile ก็ตาม โดยแนวคิดเบื้องต้นของ CD คือ Continuous Integration(CI) นั่นคือ ต้องทำการ build -> test -> run อยู่บ่อย ๆ เพื่อทำให้เรารู้ feedback หรือ ผลการทำงานหลังการเปลี่ยนแปลงสิ่งต่าง ๆ ได้อย่างรวดเร็ว แน่นอนว่า การทำงานแบบ manual หรือ ให้คนทำส่วนนี้ จะได้รับ feedback ที่ช้ามาก ๆ และไม่สามารถไม่สามารถทำงานได้บ่อยเท่าที่ต้องการ ดังนั้น จึงต้องสร้างระบบการทำงานแบบอัตโนมัติขึ้นมา (Automation)เมื่อเราสร้างการ build -> test -> run แบบอัตโนมัติ และทำให้เรามีความมั่นใจต่อระบบมากขึ้น นั่นคือระบบงานของเรามีคุณภาพนั่นเอง ทำให้เราสามารถสร้างระบบ Continuous Delivery ขึ้นมาต่อยอดได้ง่าย
ดังนั้นกลับมาที่ iOS app development บ้าง !!
คำถามคือ เราทำการ build -> test -> run กันอย่างไร ? เราทำการ deploy app กันอย่างไร ? คำตอบ คือ แบบ manual ไงล่ะ !! ดังนั้นจึงขอแนะนำเครื่องมือที่ช่วยทำงานสิ่งต่าง ๆ เหล่านี้ เพื่อทำให้การทำงานซ้ำ ๆ มันง่ายขึ้น เพื่อทำให้การทำงานซ้ำ ๆ มันสะดวกขึ้น เพื่อทำให้การทำงานซ้ำ ๆ มาเป็นแบบอัตโนมัติ ทำให้เราสามารถสร้างระบบ CI และ CD ได้ง่ายขึ้น นั่นคือ Fastlane ซึ่งผมแนะนำไว้ที่ blog ทำความรู้จักกับ Fastlane กันหน่อยโดยเครื่องมือใน Fastlane ที่แนะนำ และ demo เป็นดังนี้
- produce ทำการสร้าง App บน iTune Connect และ Apple Developer Portal
- cert ทำการจัดการ certificate
- sign ทำการจัดการ provisioning profile
- gym ทำการสร้างไฟล์ IPA
- pilot ทำการ upload App ขึ้น TestFight
- deliver ทำการ upload ขึ้น AppStore
- scan ทำการ run Unit test
- snapshot ทำการ run UI test และ Snapshot หน้าจอการทำงาน ซึ่งจะเป็น metadata หนึ่งของ app ได้เลย
- สร้าง App
- สร้าง Certificate
- สร้าง Provisioning profile
สังเกตุได้ว่า เราสามารถกำหนด Lane การทำงานของเราได้
นั่นทำให้เราสามารถปรับเปลี่ยนขั้นตอนการทำงานตามที่เราต้องการได้ อีกอย่างหนึ่ง คือ มันเป็นภาษา Ruby ดังนั้น เราจึงสามารถเขียน script ด้วยภาษา Ruby เพื่อเพิ่มความสามารถต่าง ๆ ได้ เช่น- จัดการเรื่อง version ของ app
- จัดการเรื่อง metadata ต่าง ๆ ของ app สามารถดึงมาจากไฟล์ หรือ REST APIs ได้
ใน blog ต่อ ๆ ไปจะเขียนอธิบายการใช้งานในแต่ละ usecase มาเรื่อย ๆ