Fastlane กับ Android
fastlane คือ เครื่องมือที่จะทำให้กระบวนการ Deploy Application กลายเป็นเรื่องที่สะดวกสบายมากยิ่งขึ้น เพราะมันช่วยสร้างระบบการทำงานแบบอัตโนมัติให้กับเรา ในรูปแบบของ Continuous Delivery (CD) นั่นเอง
มาดูกันสักหน่อยว่า Fastlane มีบริการอะไรให้กับ Android บ้าง
Supply เอาไว้ Deploy APK ขึ้น Google Play Store และปรับเปลี่ยนพวก Metadata
Screengrab เอาไว้ทำ Screenshot เพื่อเก็บไว้ดูเอง หรือจะเอาขึ้นเป็น Preview App บน Google Play Store
บทความนี้ขอพาทำในส่วนของ Supply บน macOS นะ ครับ ขั้นตอนแรก ก็ทำการ install Fastlane ก่อนเลยนะครับ
เพื่อความมั่นใจสำหรับ Xcode command line tools นะครับ
$xcode-select --install
ต่อมาก็ลง Fastlane เลยครับ
$brew cask install fastlane
หากใครไม่ได้ ลง brew ก็ให้จัดการตาม Link เลยนะครับ
เมื่อทุกอย่างลงตัวก็จะได้ผลแบบนี้ ใน Terminal
🍺 fastlane was successfully installed!
แต่ก่อนจะทำทุกอย่างผ่าน Fastlane นั่นคุณต้องมี Application นั้นบน Store อยู่ก่อนแล้วนะครับ ไม่งั้นมันจะหา Package name ไม่เจอ First Time ต้องเป็นแบบ Manual เองก่อนนะครับ
ต่อไปก็ทำการ install gem ของ fastlane ก่อนนะครับ
$sudo gem install fastlane
เมื่อ install เสร็จแล้วก็ไปตั้งค่าบน Google Developers Service Account ตาม Document เลยนะครับ
เมื่อเข้าไปทำตาม Document จะได้ Google credential ที่เป็น .json มาเนาะ แล้วให้เอาไปวางไว้ใน Folder ของ Project เลยนะครับ
ทำการเปิด Terminal แล้ว cd ไป Project หรือจะทำผ่าน Terminal ใน Android Studio เลยก็ได้นะครับ โดยใช้คำสั่ง
$fastlane init
ก็จะขึ้นให้เราใส่ package name
เมื่อใส่ package name เรียบร้อยก็จะให้เราใส่ paht ไฟล์ .json ที่เราดาวน์โหลดมา ก็ให้ใส่ชื่อไฟล์ ไปเลย .json ด้วยนะ
แล้วมันก็จะถาม Do you plan on uploading metadata, screenshots and builds to Google Play using fastlane? (y/n) ก็ให้ y ไปเนาะ ก็เป็นอันเสร็จพิธี
เราก็จะได้ Folder fastlane โผล่มาใน Project
Appfile คือ เป็น file ที่ระบุ package name และ path ของ key.json ที่เราระบุไปจากขั้นตอนด้านบน ถ้าอยากแก้ไขก็สามารถมาแก้ตรงนี้เลย
Fastfile คือ file ที่เอาไว้ทำ lane เพื่อสั่งให้มันทำงานต่างๆ เช่น การ Deploy ขึ้น Store นะครับ
โจทย์ของเจ้าของบล็อค คือ สร้าง lane เพื่อทำการ Deploy ขึ้นใน Google Paly Store ในแต่ละ state ได้แก่ Production, Beta และ Alpha นะครับ
เรามาเริ่มจากการสร้าง lane เพื่อ Deploy ขึ้น Beta เลย โดยเข้าไปที่ ไฟล์ที่ชื่อว่า Fastfile นะครับ จะเห็นได้ว่ามันก็มี Example ให้เราเรียบร้อย ก็ให้ทำการสร้าง lane ตามนี้ก่อนนะครับ
desc "Deploy a new version to the Google Play (Beta)"
lane :deploy_beta do
gradle(task: "clean assembleRelease")
supply(track: 'beta')
end
จากตัวอย่าง lane มีชื่อว่า deploy_beta และใช้คำสั่ง gradle คือสั่งให้ Build APK แบบ Release โดยให้อัพขึ้นไปใน state Beta ใน Store สังเกตจากคำสั่ง supply(track: ‘beta’) อยากเปลี่ยนเป็น production หรือ alpha ก็เอาที่สบายใจเลย
มาถึงขั้นตอนการ Deploy แล้วโดยใช้คำสั่ง
$fastlane lane_name ในที่นี้ก็เป็น $fastlane deploy_beta
มาดู ผลลัพธ์กัน บึม
และแล้วมันก็ Fail 5555555555 ให้ไปทำการ genarate keystore ด้วยนะครับ แล้วให้ไป Config ในไฟล์ build.gradle โดยเพิ่ม tag signingConfigs เพื่อทำการ Build แบบ Release โดยผ่านคำสั่งของ gradle ได้ ดังนี้
signingConfigs {
release {
storeFile file("RELEASE_STORE_FILE")
storePassword "RELEASE_STORE_PASSWORD"
keyAlias "RELEASE_KEY_ALIAS"
keyPassword "RELEASE_KEY_PASSWORD"
}
}
แล้วให้ไปเพิ่มคำสั่งใน tag buildTypes ในช่อง release ดังนี้
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
พอทำการ Config ค่าต่างๆ เรียบร้อยแล้วก็ให้ทำการลอง Deploy ใหม่อีกครั้ง ตูม!
เรียบร้อยทุกคน Happy 🎉🎉🎉
สามารถเข้าไปตรวจสอบใน https://play.google.com/apps/publish ขอท่านได้เลยนะครับว่ามันขึ้นใน state BETA TESTING รึเปล่า
fastlane สามารถ plug กับ Slack ได้ด้วยนะโดยเข้าไปใส่ URL ของ webhook ได้ใน Fastfile ใน lane before_all, after_all และ error ดังนี้ (ลบ # ในตัวอย่างออกซะนะ มันมีให้แล้ว)
before_all do
ENV["SLACK_URL"] = "url webhook slack"
endafter_all do |lane|
slack(
message: "Successfully deployed new App Update."
)
end
error do |lane, exception|
slack(
message: exception.message,
success: false
)
end
ผลลัพธ์ใน Slack
สุดยอดคนในทีมเห็นด้วย หล่อ สัสๆ ถ้า Fail มาก็หน้าแหกพอสมควร 555555
ส่วนเรื่องของ state Production และ Alpha ก็ทำ lane เหมือน Beta นะครับแค่เปลี่ยน track ส่วนของ Screengrab และการปรับเปลี่ยน Metadata ก็ลองไปเล่นกันเองนะครับ
สรุป Fastlane ก็เป็นเครื่องมือที่น่าสนใจอีกตัวหนึ่ง ถ้าหากจะนำเข้ามาช่วยพัฒนากระบวนการ Deploy Application ของท่าน เพราะมันอาจจะทำให้มีเวลาเหลือไปชงกาแฟ ยังไงก็ลองใช้ก็ดูนะครับ