Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สรุปสิ่งที่แบ่งปันในงาน iOS Dev Meetup ครั้งที่ 4

$
0
0

fastlane-ios

fastlane-ios วันนี้มีโอกาสมาแบ่งปันเรื่อง 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 ก็ตาม quality โดยแนวคิดเบื้องต้นของ 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 ดังนี้ [gist id="20ee6e9e7e7bfdeb49a16b84d3ab1578" file="Fastfile01"] สามารถใช้งานด้วยคำสั่ง [code]$fastlane provision[/code] ปล. ให้ run เพียงครั้งเดียวเท่านั้นนะครับ 2. ทำการสร้างไฟล์ IPA และ Upload ขึ้น TestFight สำหรับการทำ Beta testing [gist id="20ee6e9e7e7bfdeb49a16b84d3ab1578" file="Fastfile03"] สามารถใช้งานด้วยคำสั่ง [code]$fastlane beta[/code] 3. ทำการสร้างไฟล์ IPA และ Upload ขึ้น AppStore โดยก่อนจะ Upload ขึ้น AppStore สามารถดู preview ของ metadata ได้อีกด้วย [gist id="20ee6e9e7e7bfdeb49a16b84d3ab1578" file="Fastfile04"] สามารถใช้งานด้วยคำสั่ง [code]$fastlane appstore[/code] 4. ทำการ run unit test, ui test, สร้างไฟล์ IPA และ Upload ขึ้น AppStore [gist id="20ee6e9e7e7bfdeb49a16b84d3ab1578" file="Fastfile02"] สามารถใช้งานด้วยคำสั่ง [code]$fastlane all[/code]

สังเกตุได้ว่า เราสามารถกำหนด 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 แบ่งปันอยู่ที่นี่ [slideshare id=60379523&doc=continuous-delivery-for-ios-app-160402085655&w=640&h=480]
ใน blog ต่อ ๆ ไปจะเขียนอธิบายการใช้งานในแต่ละ usecase มาเรื่อย ๆ

Viewing all articles
Browse latest Browse all 1997

Trending Articles