Hai teman-teman gimana kabarnya nih semoga kalian dalam keadaan baik secara mental maupun fisik.
pada kesempatan kali ini saya akan sharing tentang sedikit config mengenai CI/CD menggunakan pipeline syntax pada jenkins.
lebih tepatnya saya hanya akan membahas CD (Continuous Deployment) pada server webapp, dikasus ini kita “deployement = restart docker-compose “, nextnya saya akan buat tulisan-tulisan singkat mengenai CICD jenkins atau tepatnya konfigurasi pada server jenkins.
Prerequisite
- Server Jenkins Sudah ada, jika belum ada mohon dilihat cara instalasinya DISINI.
- Server yang terdapat WebAppnya dan telah terinstall docker engine dan docker-compose, kalau belum ada coba lihat DISINI
Note : semua server pada tulisan ini menggunakan OS Ubuntu.
Step by step
pertama-tama kita buka jenkins melalui browser, untuk urlnya kita bisa menggunakan url bawaan dari aws.
(Optional)
jika kalian mengalami error saat mengakses jenkinsnya mungkin bisa dicek di security group aws dan allow port 8080 atau 80, terus coba dengan http://(url default aws ):8080, jika ingin menggunakan port 80 maka masuk dengan ssh pada server jenkinsnya kemudian masukan command
$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
(Optional)
jika ada belum merubah password default dari jenkins, anda masuk ssh ke server jenkinsnya dan jalankan command dibawah ini kemudian copy di login page-nya, untuk username defaultnya adalah admin.
$ sudo cat /var/lib/jenkins/secrets/initial/AdminPassword
jika berhasil maka akan muncul login page dari jenkins (jika anda sudah login maka langsung masuk ke halaman dashboard)
Sebelum membuat job baru mari kita install plugin SSH agent, klik Manage Jenkins yang ada pada bagian kiri menu, terus ke manage plugins.
Setelah itu ke tab Available, lalu cari SSH agent dan centang dan pilih download now and install after restart. (pada tulisan ini ssh agentnya telah terinstall sebelumnya )
setelah itu tunggu beberapa saat, maka server akan restart dan login kembali (disarankan refresh untuk melihat progresnya).
Next setelah login kembali, kita buat Job baru pada server jenkins kita.
ke new item lalu pilih pipeline, jangan lupa kasih nama jobnya lalu pilih OK
setelah itu maka kita masuk kehalaman untuk konfigurasi pipeline jenkinsnya.
langsung saja kita ke tab pipeline
kemudian klik pipeline syntax (untuk menggenerate pipeline syntax Jenkins)
pilih sample stepnya sshagent, terus tambahkan credentials baru dan pilih jenkins
setelah anda klik add, maka akan muncul modal seperti ini
Pertama pilih Kind dengan ssh username with private key, selanjutnya isi Id dan description sesuai keinginan anda.
usernamenya diisi sesuai dengan username instance awsnya, dan Private Key Pilih Enter directly -> add -> isi dengan aws keypair (file yang ekstensi .pem) caranya dengan buka file .pemnya dengan text editor lalu copy semua datanya lalu paste di coloum key, untuk passphrasenya dikosongkan saja, jika sudah selesai semua langsung klik add.
Generate Pipeline Script lalu copy scriptnya.
back ke halaman config
dan masuk lagi ke halaman configure
lalu masuk lagi ke tab pipeline dan paste script hasil generate kedalam kolom script.
selanjutnya tambahkan script seperti dibawah ini
Penjelasan
- pada line ke-2 stage itu berfungsi untuk mebedakan nama dari tiap langkah dalam pipeline
- pada line ke-3 adalah script hasil dari generate yang kita lakukan diatas yang ada di dalam kurung siku pasti berbeda-beda.
- pada line ke-4 adalah script untuk mengeksekusi perintah dijenkins server, serta untuk kutip 3 itu berfungsi untuk me-wrap command lebih dari satu baris.
- pada line ke-5, untuk script ini
ssh -o StrictHostKeyChecking=no
copy aja soalnya ini scriptnya default dari jenkinsnya.
selanjutnya, script untuk masuk ke ec2 dengan username dan ip private
<Username EC2 instance >@<IP PRIVATE EC2>
selanjutnya, untuk cicdJenkins/docker-compose.yml adalah path file docker-compose
sudo docker-compose -f cicdJenkins/docker-compose.yml up -d
setelah semua sudah sama dengan script yang diatas maka langsung save saja configure-nya.
Langsung Build Now.
setelah dibuild maka hasilnya akan seperti ini
Jika kita ingin melihat log hasil build maka klik #1 yang ada dibuild history, dan pada menu sebelah kiri pilih console output.
sekian dari tutorial saya, mohon maaf kalau banyak salah dan penjelasan yang kurang baik, karena kesempurnaan hanya milik Allah SWT.
Semoga bermanfaat
Happy Coding and Wasalam :)