Bagaimana sistem otomatisasi build membantu kami rilis selalu (hampir) bersamaan di Android dan iOS

Fadhil Noer Afif
4 min readFeb 23, 2021
Photo by Christina @ wocintechchat.com on Unsplash

Sudah menjadi rahasia umum di kalangan game developer, kalau mempublikasikan game di platform yang berbeda, akan membutuhkan tantangan yang berbeda pula. Di platform mobile, misalnya. Secara umum, publikasi di iOS biasanya lebih menantang daripada di Android, dikarenakan akses ke Apple Device yang terbatas, langkah build Unity yang lebih panjang, dan lain sebagainya.

Sebagai salah satu studio game yang melantai di platform mobile, tim kami memiliki satu Pilar : selalu berusaha rilis di Android dan iOS secara bersamaan. Disinilah otomatisasi build berperan. Build automation memberikan beberapa manfaat seperti iterasi development menjadi jauh lebih cepat, platform-specific bug akan lebih mudah dideteksi, dan juga mengurangi human error dari proses build itu sendiri.

Berikut adalah beberapa kaidah yang kita gunakan dalam proses build automation.

Daily Build

Setiap malam, setelah semua orang selesai bekerja, build server akan men*-trigger* daily build. Server akan melakukan build pada semua latest commit di branch develop yang ada di setiap project, di Android dan iOS. Build tersebut akan di-upload ke test distribution platform kami.

build “Sandbox” yang di-trigger setiap hari

Dengan adanya daily build, keesokan harinya tim kami dapat mengecek apakah ada error dalam proses build. Selain itu, fitur — fitur yang sudah diimplementasikan di hari sebelumnya, dapat langsung di cek di device, sehingga testing lebih akurat.

Multiple Build Configuration

Testing adalah hal yang selalu kami lakukan setiap harinya, oleh karena itu penting untuk memiliki konfigurasi build yang memiliki tools yang membantu testing. Selain itu, konfigurasi tersebut juga jangan sampai merusak data third-party seperti analytics, ads, dsb. Oleh karena itu, kami menetapkan beberapa konfigurasi build:

  • Sandbox (SBOX). Bertujuan untuk test sehari-hari. Enable cheat, Test server, disable third-party services.
  • Production (PROD). Build untuk release ke user. Disable cheat, production server, enable third-party services.
  • Game Master (GM). Build khusus untuk testing third-party dan video recording. Enable cheat, test server, enable third-party services.

Semua konfigurasi tersebut akan di-trigger di daily build, sehingga server akan build setidaknya 6 konfigurasi untuk 1 project (3 konfigurasi pada 2 platform). Disinilah pentingnya mewujudkan build automation server.

Build dengan berbagai konfigurasi untuk game Rocky Rampage. Didistribusikan melalui Microsoft App Center.

On-Demand Build

Secara umum, daily build sudah cukup untuk melakukan kebutuhan testing sehari-hari. Akan tetapi, terkadang muncul keperluan untuk build di commit atau branch tertentu, seperti misalnya jika ingin mencoba hal eksperimental, atau menambahkan third-party baru, dsb. Build server kami juga mempunyai fitur untuk melakukan hal tersebut. Hal ini sangat berguna terutama ketika ingin melakukan build iOS, karena proses build nya bisa memakan waktu 2 jam lebih. Dengan memindahkan tanggung jawab build di server, programmer tidak harus membuang waktu tersebut untuk melakukan build di komputernya.

Window untuk trigger build di commit pada branch tertentu

Release Build

Di akhir sprint, biasanya kita akan melakukan final testing, dan setelah lolos, maka kita akan melakukan upload build ke Google Play dan App Store. Ini dilakukan juga oleh build server, yang akan mentrigger Deployment Build untuk melakukan Deploy ke store. Server akan melakukan production-ready build, kemudian mengupload nya ke store yang dituju. Dengan adanya automation ini, interaksi manual dari programmer akan diminimalisir, sehingga mengurangi kemungkinan human error (salah branch, salah build number, dsb).

Continous Integration / Continuous Delivery

Sistem build automation yang dikonfigurasi dengan baik sangat membantu kami untuk mencapai prinsip CI / CD. Dengan adanya sistem ini, maka proses iterasi game akan menjadi lebih cepat, bug akan lebih mudah ditemukan, dan human error juga akan terminimalisir. Selain itu, dengan sistem yang baik, akan memungkinkan kita untuk me-rilis build secara simultan di beberapa platform yang kita tuju, sehingga meningkatkan potensi revenue untuk game yang kita buat. Kami percaya bahwa melakukan build automation untuk studio kecil bukanlah hal yang tidak mungkin. Selamat mencoba!

Psst, kami sedang hiring! Cek posisi yang tersedia disini, ya!

--

--

Fadhil Noer Afif

Half-nerd, half-geek. Director at Reima Project, a game development studio.