Sometime, proses deploy itu merepotkan bagi sebagaian orang seperti saya yang bekerja di pursahaan kecil dengan jumlah !>= 20 orang programer
apalagi sekarang jaman2nya microservice yang aplikasinya harus build 3 - 10 project. Klo dulu enak aplikasi yang di deploy cuman 1 war buncit (Monolith) klo sekarang aplikasi udah di pecah2 jadi ya makin banyak project makin banyak juga proses deploynya (jadi makin banyak kerjaannya~ heheh).
Dari pada saya deploy aplikasinya setiap project mending saya buatkan script deployment dengan CI/CD, supaya proses deployment dijalankan otomatis dan terintegrasi dengan Version Controls System (git) dan waktunya bisa untuk main atau explore technology baru. Untuk menggunakan CI/CD, kita harus menyediakan toolsnya diantarnya:
- Gitlab CE
- Gitlab Runner
- Environtment
- OS seperti Linux, Mac or Windows, rekomendasi Linux
- SDK seperti Java, PHP, AndroidSDK dan lain-lain
- Build Tools seperti maven, gradle, composer, npm, gulp dan lain-lain.
Ok, langsung ja kita setup-setup dulu ya. pertama kita harus siapkan dulu environmentnya seperti OS, SDK dan build tools. Karena kita biasanya untuk server menggunakan Linux yang free, maka saya pilih Ubuntu Server dan Untuk development kita biasanya kebanyakan project menggunakan Java jadi didalam OS Ubuntu server kita akan install juga Oracle JDK 8 atau OpenJDK 8 serta buildtoolsnya yang paling mudah yaitu Apache Maven
- How to install Oracle JDK 8 on linux Ubuntu Server
- How to install Apache Maven on linux Ubuntu server
- How to install Gitlab-CE on linux Ubuntu Server
- Setelah semua requiremnt di install, tahap selanjutnya yang kita butuhkan yaitu
- install gitlab-runner, sebagai task executor / listener ketika event tertentu seperti new commit atau new tags.
- create repository, dan setup ci/cd (
.gitlab-ci.yml
)
Install gitlab-runner
Setelah kita menambahkan apt-repository gitlab, curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
kita bisa langsung install gitlab-runner dengan perintah berikut:
apt-get install -y gitlab-runner
Pastikan setelah install service gitlab-runner
telah berjalan dengan perintah:
service gitlab-runner status
Seperti berikut:
Create project, example Java Spring
Sekarang kita buat aja, sample project template yang telah disedikan oleh gitlab yaitu springboot template seperti berikut:
Setelah itu click Use template dengan pilihan Spring maka tampilannya seperti berikut:
Kemudian kita isi aja detailsnya dengan property seperti berikut:
- Project name :
spring-gitlab-ci-example
- Project slug:
spring-gitlab-ci-example
- Project Description (optional):
Belajar gitlab ci/cd dengan springboot v2
- Visibilty project:
Public
- Kemudian click Create project
Setelah projectnya udah di clone oleh gitlab, dan udah jadi. Sekarang kita ke menu Settings -> CI/CD -> Runner seperti berikut:
Di tab Runner kemudian Expanse kemudian cari ci token
seperti berikut:
Register gitlab-runner
Untuk menjalankan build automated kita butuh me-register gitlab-runner ke projectnya dengan menggunakan perintah seeprti berikut:
sudo gitlab-runner register
Setelah itu akan muncul form seperti berikut:
kemudian kita bisa check di gitlabnya dengan me-refresh halaman setting tersebut, kemudian ckeck kemali di tab Runner pastikan lampu indikator berwana hijau seperti berikut:
Setup script deployment
Di gitlab, secara default akan meng-aktifkan auto-devops, tpi saya mau custome contohnya untuk case kali ini sya cuman mau build kemudian di package menjadi jar saja. Jadi sekarang kita buat file dengan nama .gitlab-ci.yml
di root project dengan isi seperti berikut:
variables:
MAVEN_CLI_OPTS: "--show-version"
# Cache downloaded dependencies and plugins between builds.
cache:
paths:
- .m2/repository
building:
stage: build
script:
- 'mvn $MAVEN_CLI_OPTS clean package'
only:
- master
artifacts:
paths:
- target/*.jar
Seperti berikut:
Setelah itu Commit and Push dan setelah itu maka proses build akan berjalan, kita check di menu CI/CD -> Pipeline seperti berikut:
Selain itu juga kita bisa breakdown lebih dalem lagi proses apa yang sedang berjlaan dengan meng-click yang sedang running seperti berikut:
Setelah itu kita juga bisa liat consolenya yang di jalankan di gitlab-runner dengan click Jobs maka seperti berikut hasilnya jika success:
Summery
- Dengan menggunakan gitlab CI/CD kita tidak perlu melakukan build jika ada perubahan coding cukup push perubahan ke branch tertentu maka gitlab ci akan otomatis build
- Effort setiap project harus di daftarkan gitlab-runner tapi hanya sekali setting aja, klo kata pribahasa bahasa Java
write ones execute everytime