fastlane เครื่องมือช่วยให้ชีวิต command line สะดวกขึ้น


fastlane คือเครื่องมือทางเลือกเพื่อให้ mobile dev ส่งแอปฯ ขึ้นสู่ store แต่หากพูดถึงความสามารถของ fastlane ในปัจจุบันนั้น มี plugin มากมายเพื่อทำให้ mobile dev สามารถออกแบบและปรับแต่ง script ได้หลากหลายรูปแบบ 


ตัวอย่างการใช้งานอย่างง่าย

 % fastlane run build_app
ซึ่งเราสามารถค้นหาคำสั่ง fastlane ได้จาก https://docs.fastlane.tools/


ใช้งานแบบซับซ้อนมากขึ้นด้วย Fastfile

โดย lane คือฟังก์ชันที่รวม logic หรือ คำสั่งต่างๆ ไว้ด้วยกัน ซึ่งภาษาที่ใช้จะเป็นภาษา Ruby 

lane :beta do
  increment_build_number
  build_app
  upload_to_testflight
end

lane :release do
  capture_screenshots
  build_app
  upload_to_app_store       # Upload the screenshots and the binary to iTunes
  slack                     # Let your team-mates know the new version is live
end

Automation with fastlane

fastlane มีบทบาทอย่างมากในการทำ automate pipeline สำหรับ mobile dev เนื่องจากวิธีการแบบ manual มักอยู่บน editor เฉพาะทาง เช่น Android Studio หรือ Xcode ถึงแม้ว่าจะสามารถใช้ script ได้บ้าง แต่ก็มักมีความยาวที่ทำให้ไม่สะดวกต่อการ maintenance มากนัก




เราสามารถออกแบบ Fastfile เพื่อให้ง่ายต่อการใช้ command-line เรียบร้อยแล้ว เราสามารถเรียกใช้ lane ของเราได้ง่ายๆ แบบนี้เลย

 % fastlane <YOUR LANE NAME>

ตัวอย่าง
 % fastlane release


Integrate with CI/CD

ถึงแม้ว่า fastlane จะช่วยให้การใช้ command-line ง่ายขึ้นจริง แต่เมื่อเราเริ่มจับกับ CI/CD Tools อย่าง Jenkins หรือ GitHub Actions จำเป็นจะต้องแบ่งแยก lane ให้ดีและแยกให้ชัดว่าการทำงานแบบไหนควรเป็น fastlane หรือใช้ script บน CI/CD ไปเลยโดยไม่ต้องมี fastlane
  • Build, Signing, Deploy ควรใช้ fastlane เพื่อให้ภายในทีมสามารถใช้ได้สะดวก สามารถใช้แทนท่า manual ไปได้เลย
  • Machine Script ควรใช้ CI/CD เพราะหลายครั้ง environment มักไม่ตรงกับเครื่อง dev เช่น unix, linux หรือหากเป็น script ง่ายๆ ก็ไม่จำเป็นต้องทำ fastlane ก็ได้

สุดท้าย fastlane ยังมีความสามารถอีกมาก ซึ่งเราสามารถค้นหาได้ที่ https://docs.fastlane.tools/ เช่น firebase_app_distributionslack เป็นต้น

Facebook Comment

Recent Posts

Popular post of 7 days

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Popular

[Java] Java 8 DateTime ใหม่ ไฉไลกว่าเดิม

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

เรื่องของ ++i กับ i++

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Java] Java Static Variable และ Static Method

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

[Java] การเชื่อมต่อ database ผ่าน Datasource