ไม่ใช้ fastlane อย่าเรียกตัวเองว่า iOS Developer

Wasith T. (Bai-Phai)
odds.team
Published in
2 min readMar 5, 2019

ให้เรียกว่า iOS Engineer แทน #ผิดแล้ว~ ใช่ที่ไหนกันเล่า!!

อารัมภบท

https://fastlane.tools/ เป็นเครื่องมือที่มีมาตั้งแต่สมัยกรุงสุโขทัย (ใช่ที่ไหนกันเล่า!) ทำให้นักพัฒนา iOS อยู่กันอย่างสงบสุขเรื่อยมา

ก่อนจะใช้ fastlane เนื่องจาก fastlane เขียนด้วย ruby และสามารถติดตั้งผ่าน gem ได้ เพราะฉะนั้นถ้าใครจะใช้ gem แล้วยังไม่รู้จัก rvm หรือ rbenv ให้ไปอ่าน เราไม่ควรใช้ “sudo gem” https://medium.com/odds-team/e1c37a0a02e4 ก่อน

จริง ๆ แล้ว fastlane ใช้กับ Android ได้ด้วย แต่มี feature ไม่เท่าใช้กับ iOS ในบทความนี้จะพูดถึงการใช้ fastlane กับ iOS เท่านั้น เพราะฉะนั้น macOS ก็ไม่เกี่ยว

Fastlane’s Logo

ทำอะไรได้บ้าง

เอาที่มันโฆษณาได้ข้างหน้าเว็บมันก่อนเลยนะ

  • Capture screenshots automatically ได้อย่างอัตโนัมติ (แน่นอน หลักจากเรา code ให้มัน capture ได้เรียบร้อยแล้ว 555) ซึ่งสามารถ capture แยกตามละ localization ด้วย (แต่งานในไทยไม่ค่อยมีใช้ใคร localization ที่มากับ iOS เลยทั้งที่มัน powerful มาก ๆ)
  • Distribute beta builds ปล่อยตัวเบต้าไม่ว่าจะผ่าน Crashlytics beta (ซึ่งอนาคตจะถูกย้ายไป Firebase ละ) (Google), HockeyApp (Microsoft), TestFlight (Apple), และตัวอื่น ๆ ไปดูเพิ่มที่ https://docs.fastlane.tools/actions/#beta
  • Publish your app with the push of a button เอา App ขึ้น Store ก็ง่าย ไม่ปวดหัวกับ Error ที่อ่านไม่ออก เพราะ fastlane แปลมาให้เป็นภาษาคนหมดแล้ว
  • Automatic code signing for iOS ปัญหานี้ปวดหัวมากสำหรับชาว iOS สำหรับคนที่ต้องเอาขึ้น AppStore fastlane ก็สามารถทำได้ ตั้งแต่สร้าง Development Certificate, Distribute Certificate, Provisioning Profile ตัว fastlane ก็สามารถทำให้ได้แค่ปลายนิ้วสัมผัส ไม่ก็หันไปบอกให้น้องในทีมจัดการให้หน่อยก็ไม่ยากเหมือนกัน (ใช่ที่ไหนกันเล่า!)

ทั้งนี้ ๆ ถ้าคุณใช้ CI ตัวไหนอยู่ก็ตามก็สามารถเอา fastlane มาแปะได้เลย ไม่ว่าจะเป็น Jenkins, TravisCI, CircleCI, Bitrise ก็สามารถใช้ได้หมดเลย

ติดตั้งยังไง

ก่อนลงต้องรันคำสั่ง xcode-select install ก่อนนะครับ บางครั้งมันหา xcode ไม่เจอก็รัน xcode-select -s <PATH ของ XCODE> เช่น xcode-select -s /Application/Xcode.app

  • ถ้าใครใช้แมคอยู่แล้วก็สามารถลงผ่าน brew ก็ได้ด้วยคำสั่ง brew cask install fastlane ก่อนสั่ง install อย่างลืม brew update ก่อนนะครับ
  • ถ้าใครใช้ bundle ก็เอาไปใส่ไว้ใน Gemfile มีเขียนถึงไว้นิดหน่อยใน อย่าใช้ “sudo gem” https://medium.com/odds-team/e1c37a0a02e4
source "https://rubygems.org"gem "fastlane"

ไว้ได้ประมาณนี้

ถ้าใครไม่ติดเรื่องภาษาอังกฤษ กระโดดไปดูได้เลยที่ https://docs.fastlane.tools/getting-started/ios/setup/

หลังจากติดตั้งเสร็จแล้ว

ใน bash ของเราควรตั้งค่าตามนี้ด้วย

export LC_ALL=en_US.UTF-8 
export LANG=en_US.UTF-8

เพราะว่า fastlane ใช้ UTF-8 ครับ

ถ้าใครที่ขี้เกียจพิมพ์คำสั่งนี้ทุกครั้งให้เอาไปใส่ไว้ใน shell profile ของเราขึ้นอยู่กับว่าใช้ shell ตัวไหน ซึ่งไฟล์ก็จะชื่อประมาณนี้ ~/.bashrc, ~/.bash_profile, ~/.profile หรือ ~/.zshrc

จะใช้งานครั้งแรก

ให้เปิด shell แล้วเข้าที่ path ของโปรเจค iOS ของเราแล้วพิมพ์ว่า fastlane init แล้วเลือกตัวช่วยการตั้งค่าตามต้องการ ใครยังไม่รู้จะเลือกอะไรให้เลือก manual ไปนะครับ แล้วเราจะได้ Appfile กับ Fastfile มา

ซึ่ง Appfileจะเก็บค่าปริยายของโปรเจค (Default Setting File) อ่านเพิ่มได้ที่ https://docs.fastlane.tools/advanced/#appfile

และ Fastfile จะเป็นตัว เก็บชุดคำสั่งที่เราได้เขียนไว้ก่อนหน้าแล้ว

ส่วนถ้าใครไม่ชอบ fastlane แบบ ruby ๆ ก็สามารถเขียนมันแบบ swift ได้ด้วยการใช้คำสั่ง fastlane init swift ได้

.gitignore

แน่นอน fastlane สามารถ generate ของบางอย่างออกมาได้เช่นผลการทดสอบ ซึ่งเราสามารถใส่ไว้ใน .gitignore ไว้ได้ดังนี้

# fastlane specific
fastlane/report.xml

# deliver temporary files
fastlane/Preview.html

# snapshot generated screenshots
fastlane/screenshots/**/*.png
fastlane/screenshots/screenshots.html

# scan temporary files
fastlane/test_output

ซึ่งก็เอามาจาก gitignore.io หนะแหละ ใครไม่รู้จัก gitignore ให้ไปอ่าน “.gitignore ความสามารถของ git และการใช้งานอย่างง่าย” https://medium.com/odds-team/a77d1677a9d3 ก่อนนะครับ

วันนี้พอแค่นี้

ตอนนี้ผมเชื่อว่าทุกคนที่อ่านจะอยู่ใน state ของ acknowledge แล้ว ว่ามี tools ที่ชื่อว่า fastlane อยู่ พอรู้ว่าทำอะไรได้บ้าง ติดตั้งยังไง แต่ยังไม่รู้ว่าใช้งานยังไงซึ่งจะมาเล่าในบลอคถัด ๆ ไปครับ

--

--

Wasith T. (Bai-Phai)
odds.team

ตบมือเป็นกำลังใจให้ผมด้วยนะครับ 😘