Fastlane กับ Android

Jedsada Tiwongvorakul
20Scoops CNX
Published in
4 min readFeb 9, 2017
https://goo.gl/CVdbIx

fastlane คือ เครื่องมือที่จะทำให้กระบวนการ Deploy Application กลายเป็นเรื่องที่สะดวกสบายมากยิ่งขึ้น เพราะมันช่วยสร้างระบบการทำงานแบบอัตโนมัติให้กับเรา ในรูปแบบของ Continuous Delivery (CD) นั่นเอง

มาดูกันสักหน่อยว่า Fastlane มีบริการอะไรให้กับ Android บ้าง

https://fastlane.tools/

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 เลยนะครับ

https://github.com/fastlane/fastlane/tree/master/supply

เมื่อเข้าไปทำตาม 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://goo.gl/Dg6GJ3

สามารถเข้าไปตรวจสอบใน 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"
end
after_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 ของท่าน เพราะมันอาจจะทำให้มีเวลาเหลือไปชงกาแฟ ยังไงก็ลองใช้ก็ดูนะครับ

--

--