Bagaimana Membangun CI/CD Sederhana Menggunakan Bitbucket dan Firebase Distribution App di Android

Irfan I. Sukirman, S.Kom.
Feb 6 · 5 min read

Assalaamu’alaykum Warahmatullahi Wabarakaatuh

Halo semua.. pada kesempatan kali ini, saya akan memberikan tutorial singkat bagaimana menggunakan tools CI/CD untuk membantu memudahkan dan mempercepat proses testing, build APK, dan deployment dalam satu kali proses di android. Semua ini tentunya berawal dari masalah yang saya alami. Saat ini saya masih menggunakan cara tradisional ketika sebuah tiket telah selesai dikerjakan dan dimerge kedalam branch develop, lalu setelah itu melakukan build apk secara manual. Jika digambarkan secara visual akan seperti ini:

Proses Deliver APK Secara Tradisional

Tentunya jika cara ini dilakukan secara terus menerus tidak akan efektif dan efisien. Contoh kasus ketika seorang QA membutuhkan APK untuk melakukan pengetesan maka developer harus menunda terlebih dahulu pekerjaannya dan beralih kepada pekerjaan lainnya yaitu membuat APK. Untuk sya sendiri tidak mudah untuk masuk lagi pada “Focus Zone” ketika harus berpindah-pindah pekerjaan secara bersamaan. Maka dari itu saya berinisiatif menggunakan CI/CD untuk mengubah cara tradisional menjadi otomatis. Di era pengembangan aplikasi android modern dan perusahaan-perusahaan besar di Indonesia seperti Tokopedia, Traveloka, Bukalapak, dan lainnya untuk penggunaan CI/CD sendiri merupakan suatu hal keharusan karena proses yang ada didalamnya sudah sangat besar dan banyak. Bayangkan saja jika semua itu masih dilakukan secara manual.

Apa itu CI/CD?

Wikipedia menjelaskan

Singkatnya, CI/CD itu merupakan dua proses yang digabung menjadi satu kesatuan yaitu Continuous Integration dan Continuous Deployment. CI/CD akan menjembatani antara sisi pengembangan dengan sisi operasi yang setidaknya ada beberapa aktifitas akan bekerja diantaranya test dan deployment untuk kebutuhan release. Secara scope pekerjaan masing-masing dapat dilihat perbedaannya melalui visualisasi dibawah ini:

Proses CI/CD Secara Umum

Bagaimana Implementasinya?

Sebelumnya ada beberapa hal yang harus kita persiapkan diantaranya:

  • Membuat project di console firebase (jika belum memiliki) disini.
  • Lakukan konfigurasi plugin dan dependencies firebase app distribution di gradle project dan gradle app module. Untuk caranya dapat dilihat disini.

Setelah dua hal diatas selesai selanjutnya kita memerlukan token yang dibuat oleh firebase. Buka terminal dan tuliskan perintah berikut:

Setelah berhasil cek kembali terminal tersebut. Maka firebase akan memberikan sebuah link yang mana kamu harus menekan link tersebut dan akan diarahkan kepada browser untuk melakukan verifikasi. Apabila berhasil maka firebase akan men-generate token di terminal seperti ini:

Generating Firebase Token

Sebelum kita bisa menggunakan CI/CD di bitbucket perlu kita ketahui terdapat sebuah file konfigurasi berekstensi .yml yang mana didalam file tersebut berisikan script untuk mengatur alur proses pipeline yang akan berjalan nanti. Untuk lebih dalamnya silahkan pelajari apa dan bagaimana file tersebut dapat bekerja dengan pipeline bitbucket disini. Berikut contoh script yang akan digunakan pada kesempatan kali ini:

Perlu diketahui bahwa default nama file tersebut harus bitbucket-pipelines.yml agar pipeline CI/CD dapat bekerja sebagaimana mestinya. Pada script diatas terdapat 4 langkah yang akan dijalankan ketika proses berjalan yaitu:

Proses Pipeline CI/CD

Untuk menjalankan setiap proses tersebut kita akan memanfaatkan file shell script. Kurang lebih ada 5 file yang akan kita buat diantaranya:

Test shell script

Test Script

Debug shell script

Debug Script

Release shell script

Release Script

Deploy shell script

Deploy Script

Licences shell script

Licences Script

Untuk licences sendiri sifatnya opsional. Karena ketika tutorial ini dibuat penulis mendapatkan error di pipeline perihal lisensi android. Untuk lokasi lisensi tersebut dapat dilihat dimana SDK berada lalu masuk folder licences => android-sdk-licences.

Buka file gradle app module dan lakukan konfigurasi seperti berikut ini:

Gradle App Module

Selanjutnya kita akan membuat sebuah unit test sederhana dengan menggunakan Mockk. Buka direktori test dan buatlah sebuah file yang akan kita uji dengan contoh sebagai berikut:

Test Factory

Didalam class TestFactory.kt terdapat 3 class yang mana class Doc1 dan class Doc2 menjadi dependencies bagi class SystemUnderTest. Terdapat sebuah fungsi yang akan mengkalkulasi dua buah nilai. Jika sudah, maka buat sebuah file test baru dengan nama SimpleUnitTest.kt dan tuliskan barisan kode berikut:

Selanjutnya kita perlu mendaftarkan nilai-nilai seperti STORE_PASSWORD, ALIAS_NAME, KEY_PASSWORD, dan FIREBASE_REFRESH_TOKEN kedalam environment variable di repo bitbucket seperti berikut:

Environment Variable Bitbucket

Gunanya agar ketika proses CI/CD berjalan dapat membuat file APK mode release dan otomatis firebase akan mengirimkan file APK kepada tester yang sudah didaftarkan sebelumnya. Semua konfigurasi sudah selesai dilakukan. Sekarang dilakukan uji coba dengan melakukan push kode kedalam branch develop. Apabila semua konfigurasi sudah sesuai masuk kedalam menu pipeline dan pilih branch develop. Pilih proses yang sedang aktif maka tampilannya akan seperti ini:

Pipeline Memulai Proses

Jika semua step sudah selesai maka tampilannya akan seperti ini:

Pipeline Menyelesaikan Proses

Lalu akan ada invitasi masuk kedalam email dari firebase seperti berikut:

Email Invitasi Dari Firebase

Itulah sedikit tutorial bagaimana caranya kita mengimplementasikan sistem otomatis dengan CI/CD di android. Jika ada yang masih kurang paham atau ada masukan yang bagus jangan sungkan untuk melaporkan melalui kolom komentar. Semoga bermanfaat.

Wassalaamu’alaykum Warahmatullahi Wabarakaatuh…

Easyread

Easy read, easy understanding.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store