
หลังจากทำรวมรู้จักกับ GitHub Actions และลงทะเบียนขอใช้งานไปวันนี้ก็รับ email แจ้งว่า สามารถเข้าลองใช้งานได้แล้ว เมื่อไปดูใน repository ของเราที่ GitHub ก็จะมี menu ชื่อว่า Actions ขึ้นมาดังนี้
อ่านบทความเรื่อง Rapid release at massive scale จาก Facebook แล้วไปเจอ paper ที่ทาง facebook เขียนไว้คือ Continuous Deployment of Mobile Software at Facebook (Showcase) ตามจริงมี paper ที่เกี่ยวข้องอีกหลายฉบับเลย ใน paper ฉบับนี้มีความน่าสนใจในเรื่อง Release cycle ของ mobile app ทั้ง iOS และ Android การจัดเก็บข้อมูลต่าง ๆ ที่เกี่ยวกับการ release และ deployment การทดสอบระบบงาน มีการสรุปข้อมูลต่าง ๆ ของการพัฒนาอีกด้วย ดังนั้นมาดูกันนิดหน่อย
แนวคิด Continuous Integration และ Continuous Delivery/Deployment นั้น เป็นสิ่งที่สำคัญมาก ๆ สำหรับการพัฒนา software มันไม่ใช่เรื่องของ process เพียงอย่างเดียว มันไม่ใช่เรื่องของ tool เพียงอย่างเดียว มันไม่ใช่เรื่องของ culture เพียงอย่างเดียว มันไม่ใช่เรื่องของทีมพัฒนาเพียงอย่างเดียว แต่มันคือเรื่องของการเปลี่ยนจาก requirement มาเป็นสิ่งที่อยู่ในคนใช้หรือสร้างคุณค่าให้กับลูกค้าและบริษัทนั้น ๆ อย่างต่อเนื่องและมีคุณภาพ
สิ่งที่น่าสนใจในการพัฒนา software คือ เราทำการเตรียม environment ต่าง ๆ เช่น ทั้ง Dev, Test/QA, UAT, Staging, Pre-Prod และ Prod กันตอนไหน ? ที่สำคัญคือ แต่ละ environment นั้นเหมือนหรือต่างกัน ? ซึ่งสิ่งต่าง ๆ เหล่านี้มันสะท้อนความสัมพันธ์ระหว่าง Development team และ Pre/Production team ว่าเป็นอย่างไร
ในการสร้างระบบ Continuous Integration และ Continuous Delivery สำหรับ Mobile นั้น มีหลายสิ่งอย่างที่ควรคำนึงถึง ไม่ว่าจะเป็น จำนวนของ device ที่แตกต่าง การออกแบบของแต่ละ platform การพัฒนา โครงสร้างของ code การทดสอบ การ deploy การ release โดยสิ่งที่เราต้องการคือ feedback loop ที่รวดเร็ว แน่นอนว่ามันย่อมรวดเร็วกว่าระบบอื่น ๆ อย่างมาก ดังนั้นสิ่งที่เราควรต้องทำการวางแผนงาน จากนั้นลงมือทำและสร้างมันขึ้นมาดังนี้
วันนี้นั่งสรุปการนำ Fastlane มาใช้กับการพัฒนา Android application โดยในตอนนี้จะมีชุดเครื่องมืออยู่ 2 ตัวคือ Supply สำหรับการแก้ไข Android app บน Google Play เช่น APK และ metadata ต่าง ๆ Screengrab สำหรับการบันทึกรูป screenshot การทำงานของ app ซึ่งทำงานร่วมกับ Espresso หรือ UI Testing ดังนั้น เราลองนำเครื่องมือทั้งสองมาใช้งานร่วมกันดีกว่า
เรามักจะได้ยินคำว่า Fail Fast Lea[r]n Fast ในการพัฒนา software แบบ incremental และ interactive นั้นเราต้องการ feedback ที่รวดเร็วที่สุดเท่าที่จะทำได้ เพื่อทำให้เรารู้ว่า สิ่งที่ทำอยู่นั้นมันถูกต้อง และ เป็นสิ่งที่ต้องการ ในการพัฒนา software เราต้องการรู้สิ่งต่าง ๆ เหล่านี้อย่างรวดเร็ว สิ่งที่เราสร้างทำงานได้อย่างถูกต้อง ? สิ่งที่คนอื่นสร้างทำงานได้อย่างถูกต้อง ? เมื่อ deploy ระบบงานแล้วยังทำงานได้ ? สิ่งที่พัฒนานั้นมันตรงกับความต้องการของลูกค้า ? ทำให้ business มันดีขึ้น ? ดังนั้นเรามาตอบคำถามต่าง ๆ เหล่านี้กันดีกว่า
Fastlane คืออะไร ? เป็นกลุ่มของเครื่องมือ สำหรับช่วยทำให้สิ่งต่าง ๆ เหล่านี้ง่ายขึ้น ขั้นตอนการ deploy และ release app สร้างระบบการทำงานแบบอัตโนมัติ สร้างระบบการพัฒนาระบบงานแบบอัตโนมัติ ถูกสร้างมาตามแนวคิด Continuous Delivery (CD) นั่นเอง ซึ่งแต่ละขั้นตอนของทำงาน หรือ การ build นั้น เราสามารถจัดเรียงลำดับการทำงานได้เอง โดยจะเรียกว่า Lane