Pada artikel sebelumnya, penulis telah menjelaskan bagaimana cara melakukan deployment docker ke heroku, akan tetapi cara tersebut bisa dibilang sangat melelahkan ketika kita harus memanage banyak service. Untuk dapat melakukan otomatisasi keseluruhan service maka kita akan menggunakan bantuan CI/CD yang ditawarkan oleh gitlab. Untuk penjelasan mengenai CI/CD, anda dapat membaca artikel Belajar Melakukan Integrasi Jenkins Dan Gitlab Pada Docker. Pada artikel ini, kita akan mencoba membuat CI/CD untuk kebutuhan deployment service yang terdapat pada artikel Belajar Deployment Docker Pada Heroku.
Arsitektur Deployment Dengan Gitlab CI/CD
Berikut adalah arsitektur yang akan kita gunakan untuk CI/CD pada gitlab.
Berikut adalah penjelasan dari gambar diatas.
- Developer akan melakukan pull code terlebih dahulu yang berasal dari gitlab
- Jika telah selesai mengubah atau menambahkan code, maka developer melakukan push code ke gitlab
- Jika terdapat perubahan, gitlab akan melakukan build source code lalu melakukan testing, biasanya trigger perubahan ini dapat dilakukan pada branch tertentu.
- Jika proses build source code dan testing berhasil maka gitlab akan melakukan build docker image, lalu docker image ini akan di push ke docker hub.
- Setelah selesai melakukan push ke docker hub, gitlab akan melakukan deployment ke heroku. Pada saat proses deployment, gitlab akan melakukan pull image terlebih dahulu dari docker hub, lalu image terebut nantinya akan di push ke registry heroku.
- Jika proses push docker image ke registry heroku berhasil, maka heroku akan menjalankan image tersebut.
Import Project Dari Github Ke Gitlab
Salah satu alasan menggunakan gitlab adalah gitlab memberikan banyak fitur terutama untuk penggunaan devops. Untuk melakukan import project dari github ke gitlab, silahkan lakukan langkah - langkah berikut.
- Silahkan login pada website gitlab. Lalu silahkan buat sebuah project, lalu pilih tab import project seperti gambar berikut.
- Lalu pilih import dari github, maka akan muncul output seperti berikut.
Lalu klik authorize sehingga gitlab dapat mengakses repo anda yang ada di github.
- Lalu pilih repo seperti berikut.
- Setelah selesai, silahkan clone kembali repo
Heroku-Container
yang berasal dari gitlab seperti berikut
Membuat Unit Test Pada Spring Boot
Silahkan buka class HerokuContainerApplicationTests
yang terdapat di dalam package org.rizki.mufrizal.heroku.container
. Kemudian silahkan ubah source code nya menjadi seperti berikut untuk kebutuhan testing.
Lalu buat sebuah file application.properties
di dalam folder resources
, lalu tambahkan konfigurasinya seperti berikut.
Maka struktur project akan berubah menjadi seperti berikut.
Setup CI/CD Gitlab
Pada tahapan ini, kita akan mencoba setup CI/CD pada gitlab. Untuk membuat CI/CD pada gitlab sangatlah mudah yaitu dengan membuat sebuah file di dalam root project dengan nama .gitlab-ci.yml
, lalu tambahkan source code berikut
Pada konfigurasi diatas terdapat 3 proses yang akan dijalankan oleh gitlab yaitu
build
yaitu proses test dan build project menjadi file jar, nantinya kita dapat mendownload file jar yang telah dibuild oleh gitlab.publish-image
yaitu proses test build dan juga sekaligus proses push docker image ke docker hub.deploy-heroku-container
yaitu proses deployment docker image ke heroku.
Setelah selesai, tahap selanjutnya adalah kita perlu melakukan konfigurasi Variables
yang dibutuhkan. Berikut adalah variabel yang dibutuhkan untuk konfigurasi gitlab diatas.
DOCKER_USERNAME
yaitu username docker hubDOCKER_PASSWORD
yaitu password docker hubHEROKU_USERNAME
yaitu username heroku biasanya menggunakan emailHEROKU_API_KEY
yaity api key sebagai pengganti password heroku
Untuk melakukan konfigurasi variabel diatas, silahkan akses project di gitlab anda. Lalu pilih menu setting dan pilih menu CI / CD. Lalu expand Secret variables
dan isikan konfigurasi nya seperti berikut.
Untuk melihat API Key nya heroku, silahkan buka dashboard heroku, klik profile lalu pilih menu account settings
, lalu scroll kebawah sehingga akan muncul menu API Key seperti berikut.
Silahkan pilih menu reveal
untuk melihat API Key tersebut.
Mengecek Hasil Deployment
Setelah konfigurasi diatas selesai, silahkan commit lalu push source code anda, jika berhasil maka muncul proses pipeline yang sedang berjalan pada project gitlab anda seperti berikut.
Lalu silahkan pilih menu CI / CD di menu project anda, nantinya akan muncul pipeline yang sedang berjalan seperti berikut.
Jika ingin lebih detail, silahkan klik menu jobs, maka akan muncul seperti berikut.
Pada gambar diatas dapat dilihat bahwa jobs yang pertama yaitu build
telah berhasil dikerjakan dan anda dapat melakukan download artifact jar melalui menu berikut.
Berikut adalah gambar jika pipeline nya berhasil dijalankan
Dan berikut adalah gambar jika semua jobs berhasil dijalankan
Bagi anda yang ingin melihat source code codingan, silahkan lihat di Heroku-Container. Sekian artikel mengenai Belajar Gitlab Continuous Integration Dan Continuous Deployment dan terima kasih :).