วันนี้มีโอกาสมาแบ่งปันเรื่อง 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 ได้เลย
ซึ่งเราสามารถกำหนดขั้นตอนการทำงานในสิ่งที่เรียกว่า Lane
อยู่ในไฟล์ Fastfile ของ Fastlane ดังนี้
1. ทำการ Provisioning ก่อน ประกอบไปด้วย
- สร้าง App
- สร้าง Certificate
- สร้าง Provisioning profile
ถ้าทำแบบ manual มันเหนื่อยพอสมควร
แต่ Fastlane มันทำให้เราง่ายขึ้นด้วย Produce, Cert และ Sigh ดังนี้
สามารถใช้งานด้วยคำสั่ง
$fastlane provision
ปล. ให้ run เพียงครั้งเดียวเท่านั้นนะครับ
2. ทำการสร้างไฟล์ IPA และ Upload ขึ้น TestFight สำหรับการทำ Beta testing
สามารถใช้งานด้วยคำสั่ง
$fastlane beta
3. ทำการสร้างไฟล์ IPA และ Upload ขึ้น AppStore
โดยก่อนจะ Upload ขึ้น AppStore
สามารถดู preview ของ metadata ได้อีกด้วย
สามารถใช้งานด้วยคำสั่ง
$fastlane appstore
4. ทำการ run unit test, ui test, สร้างไฟล์ IPA และ Upload ขึ้น AppStore
สามารถใช้งานด้วยคำสั่ง
$fastlane all
สังเกตุได้ว่า เราสามารถกำหนด Lane การทำงานของเราได้
นั่นทำให้เราสามารถปรับเปลี่ยนขั้นตอนการทำงานตามที่เราต้องการได้
อีกอย่างหนึ่ง คือ มันเป็นภาษา Ruby
ดังนั้น เราจึงสามารถเขียน script ด้วยภาษา Ruby
เพื่อเพิ่มความสามารถต่าง ๆ ได้ เช่น
- จัดการเรื่อง version ของ app
- จัดการเรื่อง metadata ต่าง ๆ ของ app สามารถดึงมาจากไฟล์ หรือ REST APIs ได้
รวมทั้งสามารถ integrate การทำงานกับ Slack หรือระบบอื่น ๆ ได้ง่าย
ปล.
เนื่องจาก Fastlane นั้นมันใหม่มาก ๆ
ดังนั้น จึงทำให้เกิด error ต่าง ๆ พอสมควร
ทั้งเรื่องของ permission
ทั้งเรื่องของ version ของ Xcode command line tool
แต่ก็สามารถเปิด issue ต่าง ๆ ได้จาก Fastlane issue
และได้รับ feedback กลับมาเร็วมาก ๆ
โดยที่ Slide แบ่งปันอยู่ที่นี่
ใน blog ต่อ ๆ ไปจะเขียนอธิบายการใช้งานในแต่ละ usecase มาเรื่อย ๆ