DEV Community

Cover image for Continuous Integration and Continuous Deployment
Raihan Febriyansah
Raihan Febriyansah

Posted on

Continuous Integration and Continuous Deployment

Pendahuluan

CI/CD atau kependekan dari Continuous Integration dan Continuous Deployment bermula dari banyaknya kemungkinan kegagalan yang terjadi dalam deployment dengan cara tradisional/manual dimana developer melakukan push ke dalam repo lalu developer lain melakukan pull dan melakukan push ke dalam server untuk dilakukan deploy.

Image description

Ide dari CI/CD adalah bagaimana caranya ketika developer melakukan push kedalam repositori, maka source code tersebut akan langsung dilakukan deployment, sehingga tidak perlu melakukan deployment secara manual agar terhindar dari kegagalan.

Lalu bagaimana cara melakukan CI/CD? CI/CD dapat kita lakukan dengan bantuan alat atau framework seperti Jenkins, Circleci, TeamCity, Bamboo, atau juga GitLab. Pada artikel kali ini, saya akan membahas penggunaan GitLab dalam melakukan CI/CD. GitLab merupakan layanan seperti Github yang menyediakan manajemen project dengan git repositori yang juga memiliki fitur Runner yang merupakan service atau worker yang berfungsi untuk build image, push image atau bahkan melakukan deploy image dimana kita dapat mendefinisikan nya pada file.

Image description

disini akan coba dengan gitlab dengan repository yang kosong

Image description

bahwa untuk memindahkan tanggung jawab manual task orang menuju ke gitlab runner atau Gitlab CI-CD maka kita harus mendefinisikan terlebih dahulu task apa yang harus dilakukan, hal tersebut sebenarnya bisa kalian baca terkait dengan gitlab CI pada docs, Apa yang harus dilakukan mulai dari kode itu siap ter-push atau sampai kode itu di deploy

sederhananya, kita bisa dengan melihat beberapa hal dari gitlab CI:

  1. yang pertama kita harus mendefinisikan stagenya, stage apa yang sebenarnya akan kita lakukan contohnya stage pertama dalam melakukan build terhadap sebuah docker image
  2. Kemudian stage yang kedua yaitu untuk membuat atau mendeploy docker image

ketika kita melakukan build apa sih yang harus dilakukan untuk build sebuah docker image? kita lanjutkan bab selanjutnya

pembuatan CD (Continous Delivery)

namun perlu diketahui untuk kita bisa melakukan push terhadap docker register ini kita harus membuat akses token terlebih dahulu karena Runner dari gitlab itu perlu mengautentikasikan dirinya dan mengautorize dirinya bahwa kita bener diperbolehkan untuk melakukan push images pada repositori tersebut, caranya seperti apa?

  • klik profile > edit profile

Image description

  • lanjut klik Access Token lalu isikan data yang tertera

Image description

dan perlu diperhatikan pada bagian select scopus setting sesuai keinginan, runner itu bisa melakukan apa saja, seperti pada gambar yang saya contohkan di bawah ini

Image description

saya membuat 3 select scopus yaitu:

  1. read_repository yang berarti runner bisa membaca repositori.
  2. read_registry yang berarti bisa membaca atau mengakses pada private project
  3. write_registry yang berarti runner bisa melakukan push images

setelah itu akan mendapatkan token yang dimana token tersebut digunakan untuk autentikasi nantinya maka jangan lupa untuk di save/copy

Image description

  • setelah itu lanjut kedalam repositori yang sudah dibuat tadi setelah itu settings > CI/CD

Image description

  • setelah itu kita akan menyimpan value dari token yang sudah di copy tadi ke sebuah variabel

Image description

  • Token sudah dibuatkan variabel maka dari sini proses pembuatan CD (Continous Delivery) sudah selesai, karena ini digunakan untuk melakukan push images ke sebuah registry

Image description

Studi Kasus

kita mulai dengan sebuah studi kasus sederhana, pada gambar dimana kita user/developer itu push html kedalam sebuah repo maka akan dibuatkan image docker yang akan di push kedalam sebuah registry

  • pada repo yang sudah dibuat sebelumnya, kita buat file terlebih dahulu dengan klik "web IDE"

Image description

  • setelah itu buat folder dan file seperti pada gambar berikut:

Image description

  • mendefinisikan images yang akan di build, dengan cara create file lalu pilih dockerfile

Image description

buat deskripsi seperti berikut:

Image description

  • setelah itu buat file baru dengan .gitlab-ci.yml

Image description
dan buat deskripsi sebagai berikut:

Image description

  • setelah semua sudah selesai lalu lakukan commit, kembali ke repositori awal, ketika pada repositori terdapat icon seperti ini:

Image description

yang menandakan pipeline sudah running

Image description

  • lalu pada bagian gambar dibawah ini digunakan untuk mengetahui proses yang sudah dikerjakan itu sampai mana, tunggu hingga proses selesai.

Image description

  • jika proses sudah selesai lalu menuju CI/CD > pipeline, maka akan ada keterangan seperti ini, tandanya sudah berjalan

Image description

  • ketika kita masuk kedalam container registry maka akan ada hasil dari docker build dan docker push nya

Image description

Continous Deployment

setelah sudah selesai melakukan tahapan sebelumnya kita lanjut pada deploy

  • kembali pada file .yml yang sudah dibuat pada repositori, lalu tambahkan pada stages yaitu "deploy", setelah itu definisikan deploy tersebut seperti yang di lingkari, lalu commit

Image description

  • setelah itu pada repositori, menuju menu CI/CD > pipeline, dan akan terlihat status running yang berarti proses sedang berjalan

Image description

  • pada bagian deploy di klik, dan akan terlihat proses nya seperti pada gambar

Image description

ketika awal docker images hanya ada 1 images di server, lalu ketika melakukan pull lagi, docker images menambah 1

Image description

maka selesai tutorial dari Continous Integration dan Continous Deployment Docker dengan Gitlab CI/CD

Top comments (0)