Tutorial Penerapan Continuous Delivery React Native Menggunakan Bitbucket Pipeline

source: nativebase.io and confluence.atlassian.com

Oke judulnya terlalu panjang, tapi itulah yang akan kita lakukan pada tutorial kali ini. Sebelumnya, apa sih continuous delivery (CD) itu?

Kalo secara definisi kita langsung saja merujuk ke sini ya. Secara manfaat, penerapan CD yang baik dapat meningkatkan produktivitas tim dengan cara mendelegasikan proses-proses seperti unit testing, build, dan deployment kepada mesin. Daripada pusing, mari kita coba langsung saja.

Pada tutorial kali ini, saya mengasumsikan kita memiliki project React Native (RN) Android yang disimpan di Bitbucket dan server dengan alamat 100.100.100.100.


Hal pertama yang perlu dilakukan adalah mengaktifkan fitur Pipelines di Bitbucket. Pada halaman repository project kita, pilih menu Settings. Aktivasi Pipelines terdapat di sub-menu Settings pada bagian Pipelines.

Aktivasi fitur Pipelines pada Bitbucket

Setelah fitur Pipelines aktif, kita baru bisa mulai menulis konfigurasinya. Untuk itu, kita buat file YAML bernama bitbucket-pipelines.yml pada root project. File ini yang akan menjadi acuan konfigurasi ketika Pipelines dijalankan di Bitbucket. Untuk sekarang, mari kita buat konfigurasi sederhana seperti ini.

Pipelines menggunakan Docker Container sebagai Build Environment dengan spesifikasi Docker Image seperti ini. Kita dapat menggunakan Docker Image yang terdapat pada Docker Hub dengan menyebutkannya pada file konfigurasi. Pada contoh di atas, kita menggunakan Docker Image ini yang di dalamnya telah terpasang Android SDK dan react-native-cli.

Selanjutnya, kita mendefinisikan pipelines apa saja yang kita inginkan. Pada contoh di atas, kita mendefinisikan pipelines default. Pipelines ini akan dijalankan pada branch apapun. Kita akan menjalankan npm install dan npm test pada pipelines ini. Commit file konfigurasi tersebut dan push ke Bitbucket, maka pipelines akan berjalan secara otomatis.


Selanjutnya kita akan mencoba membuat build versi release dari project RN tersebut. Misalkan kita hanya ingin proses build ini dilakukan jika ada proses push ke branch master. Kita perlu mengubah file konfigurasi menjadi seperti berikut.

Berbeda dengan konfigurasi sebelumnya, kali ini kita mendefinisikan bahwa pipeline hanya akan berjalan pada branch master. Script dijalankan pertama kita memasang dependency node modules yang ada, kemudian melakukan proses build menggunakan gradlew. Proses ketiga adalah mengirim apk hasil build ke server kita sendiri. Jangan lupa untuk memasukkan ssh keys pada halaman Settings repository agar kita bisa mengirim file ke server dengan menggunakan scp.


Bisa kita lihat bahwa untuk menghasilkan file apk versi release, kita cukup melakukan push ke branch master dan hasilnya akan secara otomatis dikirim ke server kita (yang selanjutnya bisa diunduh atau diunggah ke Play Store). Dengan begitu, kita dan tim tidak perlu repot untuk melakukan build dan mengirim file apk secara manual.