Taufik Mulyana
Taufik Mulyana
Linux System Administrator, Interested in Linux, Cloud, Containers
January 2, 2019 3 min read

Continuous Integration Golang dengan Gitlab CI

Continuous Integration Golang dengan Gitlab CI, Gitlab menawarkan layanan continuous integration yang telah terbundle dengan layanan repositori gitnya, hal ini sangat memudahkan pekerjaan, karena kita hanya perlu menambahkan berkas .gitlab-ci.yml pada proyek kita. dan ketika ada commit atau push akan otomatis mengeksekusi CI pipeline. lain halnya jika kita menggunakan Jenkins kita perlu memasang jenkins terlebih dahulu, melakukan konfigurasi, menghubungkan dengan version control system yang kita gunakan dll, sangat repot bukan ?

berkas .gitlab-ci.yml akan mengintruksikan Gitlab runner apa yang harus dilakukan dan secara default akan menjalankan pipeline dengan 3 stages: build, test dan deploy, sebenarnya anda tidak perlu menggunakan ketiga stage tersebut, stage yang tidak memiliki tugas akan diabaikan.

kita akan mencoba membuat sebuah aplikasi http sederhana, lagi-lagi sederhana 😀 yang akan dibuat dengan bahasa GO.

buat sebuah berkas dengan nama main.go dalam $GOPATH/src/ketan

pada aplikasi tersebut terdapat 2 endpoint “/” dan “/health“, endpoint “/” akan menampilkan menu dari ketan dalam bentuk json, dan endpoint “/healrh” akan menampilkan status dari aplikasi tersebut, disini saya isi sendiri :D, Health Check ini biasa digunakan untuk mengecek status service aplikasi tersebut dan service yang digunakan aplikasi tersebut seperti database dll, aplikasi tersebut berjalan pada port 8080.

jalankan dan cek apakah kedua endpoint itu dapat diakses dan mengeluarkan output yang sesuai

$ go run main.go

cek menggunakan curl

$ curl localhost:8080 | jq

{
    "Menu": "ketan",
    "Tipe": [
        "bakar original",
        "bakar keju"
    ]
}

$ curl localhost:8080/health | jq

{
    "Status": "good"
}

selanjutnya kita buat unit testnya dengan nama main_test.go

baca juga  Deploy Aplikasi Go ke Docker Container

pada fungsi TestHealthCheck saya mengecek status code dari endpoint /health apabila statusnya 200 dan response bodynya {“Status”:”good”} maka tesnya akan berhasil, dan pada fungsi TestIndex saya hanya mengecek status codenya saja.

lalu bisa anda coba jalankan tes nya

$ go test -v 
=== RUN TestIndex
--- PASS: TestIndex (0.00s)
=== RUN TestHealthCheck
--- PASS: TestHealthCheck (0.00s)
PASS
ok gitlab.com/nothinux/ketan 0.005s

selanjutnya silahkan push ke repository anda di Gitlab.

terakhir membuat berkas .gitlab-ci.yml disini saya hanya melakukan test dan build saja

simpan dan push ke gitlab.

lalu anda bisa cek status test dan build di gitlab pada tab CI/CD > Pipelines

Continuous Integration Golang dengan Gitlab CI

semua kode sumber bisa anda lihat di gitlab.com/nothinux/ketan

Apakah artikel ini membantu anda?

Leave a Reply

Your email address will not be published. Required fields are marked *