DevOps

DevOps di Google Cloud (Part 1): Continuous Integration dan Continuous Deployment

DevOps di Google Cloud (Part 1): Continuous Integration dan Continuous Deployment

Halo semua

Kini ritme pengembangan aplikasi melesat jauh lebih cepat. Beberapa tahun lalu developer merilis versi aplikasi baru dalam hitungan tahun atau beberapa bulan. Kini sebuah aplikasi bisa punya versi baru dalam hitungan minggu bahkan hari.

💻 Mulai Belajar Pemrograman

Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.

Daftar Sekarang

Sebelumnya, proses development (code, build, test) dan operations (deploy, operate, monitor) dijalankan secara terpisah. Sekarang praktik seperti ini sudah mulai ditinggalkan karena kedua proses ini bisa dijalankan secara berkelanjutan dengan apa yang kita kenal sebagai DevOps.

Nah, pada tulisan kali ini, kita akan mempelajari tentang dua contoh praktik DevOps, yaitu Continuous Integration (CI) dan Continuous Deployment (CD).

Continuous Integration atau integrasi berkelanjutan adalah salah satu praktik dari DevOps di mana kita sebagai developer bisa mengintegrasikan kode ke dalam repositori kode seperti GitHub dan menjalankan pengujian secara cepat dan otomatis.

Sedangkan Continuous Deployment atau penyebaran berkelanjutan merupakan praktik setelah kode berhasil terintegrasi, aplikasi kita bisa dibangun lalu rilis secara otomatis.

Nah di implementasi CI/CD kali ini kita akan menggunakan layanan dari Google Cloud. Semua layanan yang akan kita gunakan pun bersifat serverless alias kita tidak perlu menyediakan dan mengkonfigurasi server.

Untuk mengikuti tutorial ini, kita perlu menyiapkan beberapa hal berikut:

  • Akun Google Cloud Platform,
  • Node.js dan npm,
  • git.

Menyiapkan project

  1. Pertama buat sebuah direktori baru kemudian lakukan inisialisasi project node.js.

    Kita bisa membiarkan isian tetap default atau kosong.
  2. Selanjutnya tambahkan dependency library yang akan digunakan.
  3. Buat berkas baru index.js. Lalu tambahkan kode berikut:
  4. Buka berkas package.json lalu tambahkan kode berikut pada object scripts:
  5. Jalankan perintah npm start pada terminal untuk menjalankan aplikasi secara lokal. Buka web browser lalu buka tautan http://localhost:8080/.
  6. Karena kita ingin men-deploy aplikasi pada Google App Engine, maka kita perlu menyiapkan project pada Google Cloud Platform dan juga instance App Engine.Kalau belum punya, silakan buat baru ya
  7. Buat berkas app.yaml. Berkas ini akan berisi konfigurasi aplikasi yang akan dijalankan pada App Engine. Tambahkan baris kode berikut karena kita akan menggunakan runtime environment dari node.js.
  8. Jalankan perintah berikut pada terminal untuk men-deploy aplikasi ke dalam App Engine:
  9. Coba jalankan aplikasi yang telah di-deploy ke App Engine dengan membuka tautan https://[PROJECT-ID].appspot.com pada browser.

DevOps in Action: Membuat CI/CD Pipeline

Jika aplikasi sudah berjalan, selanjutnya kita akan mulai menerapkan CI/CD, di mana kita akan menunggah kode kita ke dalam repository GitHub, lalu setiap ada kode baru yang di-push, aplikasi akan menjalankan testing kemudian melakukan deploy aplikasi secara otomatis. Pipeline CI/CD yang akan kita buat kira-kira akan seperti ini:

DevOps

  1. Pertama hubungkan project dengan GitHub. Jangan lupa untuk push kodenya ke dalam branch master.
  2. Karena kita akan melakukan pengujian aplikasi, maka kita perlu menambahkan library untuk testing.
  3. Lalu buat berkas baru bernama test.js dan tambahkan skenario pengujian yang akan dijalankan.

    Pada kode di atas kita melakukan sebuah pengujian sederhana. Ketika endpoint ‘/’ diakses, aplikasi akan memberikan response code 200.
  4. Buka berkas package.json lalu tambahkan kode berikut ke dalam json object scripts:
  5. Jalankan perintah berikut pada terminal untuk pengujian:

    Hasil pengujian akan ditampilkan pada terminal.
  6. Selanjutnya, buat berkas baru bernama cloudbuild.yaml. Pada berkas inilah kita akan menentukan langkah apa saja yang akan dijalankan ketika proses build.
  7. Tambahkan tiga langkah berikut:

    Kode di atas berarti Cloud Build akan menginstal library lalu menjalankan pengujian sebelum men-deploy ke App Engine.
  8. Lakukan push kembali ke GitHub.
  9. Selanjutnya buka GCP console (https://console.cloud.google.com), lalu buka halaman Cloud Build (Navigation Menu -> Tools -> Cloud Build). Jika baru pertama kali membuka, enable API dulu ya.
  10. Buka halaman Triggers lalu klik Add trigger. Di sinilah kita akan melakukan konfigurasi untuk men-trigger Cloud Build.
  11. Pilih GitHub (atau code repository yang kalian gunakan). Lalu centang persetujuan dan klik Continue.
  12. Setelah proses autentikasi, pilih repository yang telah dibuat tadi. Klik Continue.
    DevOps
  13. Selanjutnya berikan nama trigger dan deskripsinya. Tentukan juga branch mana yang akan menjadi trigger ketika ada push. Pada bagian Build configuration, pilih Cloud Build configuration file dan arahkan ke berkas cloudbuild.yaml yang telah kita buat.
    Pengaturan trigger kurang lebih akan seperti berikut:
    DevOps
  14. Jika sudah, klik Create trigger.
  15. Sampai di sini kita telah mengatur cloud build dan trigger. Mari kita kembali ke editor untuk mengubah kode. Buka berkas index.js lalu ubah ya. Kamu bisa mengubah tampilan pesan jadi Hello Dicoding!.
  16. Simpan perubahan, lalu lakukan commit dan push kode ke GitHub.
  17. Ketika kode berhasil di-push, buka kembali halaman Cloud Build pada GCP console. Kamu akan melihat ada satu proses build yang sedang berjalan.
  18. Pilih proses tersebut untuk melihat detailnya. Pada halaman detail kamu dapat melihat proses build yang sedang dijalankan hingga log dari masing-masing step.
    DevOps
  19. Namun, step terakhir dari build akan mengalami kegagalan (step deploy). Ini disebabkan karena proses deployment dilakukan oleh Cloud Build, sementara Cloud Build tidak memiliki hak akses atau izin untuk men-deploy aplikasi ke App Engine.
  20. Untuk itu, kita perlu menambahkan permission kepada service account dari Cloud Build untuk melakukan deploy aplikasi. Buka halaman IAM (Navigation menu -> IAM & Admin).
  21. Pada daftar member, cari [PROJECT-NUMBER]@cloudbuild.gserviceaccount.com.
  22. Klik ikon pensil, lalu tambahkan role App Engine Admin. Klik Save.

    DevOps

  23. Buka kembali halaman Cloud Build, lalu pilih build yang sebelumnya gagal. Klik Retry.
  24. Kali ini proses build seharusnya sudah berhasil. Jalankan aplikasi pada web browser, maka tampilan aplikasi akan berubah.
  25. Selamat! Kamu telah berhasil telah menerapkan continuous integration dan continuous deployment. Kamu pun bisa menguji dan deploy aplikasi secara otomatis hanya dengan melakukan push ke repositori kode.

Oke, mungkin sekian dulu tulisan kali ini.

Ingin Belajar Lebih Lanjut?

Semoga ada pelajaran yang bisa diambil. Untuk kalian yang ingin belajar lebih dalam tentang produk dan layanan dari Google Cloud, yuk daftar kelas Menjadi Google Cloud Engineer.

DevOps

Ada pertanyaan? Baca beberapa referensi berikut ini:

Boleh juga loh, tanya di kolom komentar. Sampai bertemu di tulisan berikutnya.

DevOps di Google Cloud (Part 1): Continuous Integration dan Continuous Deployment-end

Yuk Baca Artikel Terkait 

DevOps


Belajar Pemrograman Gratis
Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.