Belajar CI/CD Jenkins #1: Instalasi Jenkins Server

sumber

CI/CD merupakan teknologi yang sangat membantu dalam proses pengembangan sebuah aplikasi, dimana dalam proses integrasi dan deployment sebuah aplikasi dapat dijalankan secara automatis sehingga akan memberikan proses yang lebih cepat dan efisien. Saat ini kita akan mempelajari bagaimana menerapkan CI/CD menggunakan sebuah tools yaitu Jenkins.

1. Instalasi Jenkins Server

Untuk menerapkan CI/CD menggunakan Jenkins, kita memerlukan Jenkins server sebagai eksekutor ataupun sebagai penghubung antara repository dan server target lokasi aplikasi akan dideploy. Dalam uji coba kali ini dilakukan pada server Ubuntu 18.04 dengan kapasitar CPU 2 core 4 GB. Proses instalasinya cukup mudah yaitu dengan menjalankan beberapa command berikut (Jenkins Debian packages lainnya dapat dilihat disini) : 
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install openjdk-8-jdk -y
sudo apt-get install jenkins -y
kemudian cek hasil instalasi dengan menjalankan command berikut:
sudo systemctl status jenkins
dan jika instalasi berjalan dengan baik dan benar maka akan hasil pengecekan diatas adalah sebagai berikut:
vagrant@ubuntu-bionic:~$ sudo systemctl status jenkins
jenkins.service - LSB: Start Jenkins at boot time
   Loaded: loaded (/etc/init.d/jenkins; generated)
   Active: active (exited) since Wed 2020-05-20 18:38:27 UTC; 1h 4min ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 0 (limit: 4703)
   CGroup: /system.slice/jenkins.service

May 20 18:38:21 ubuntu-bionic systemd[1]: Starting LSB: Start Jenkins at boot time...
May 20 18:38:21 ubuntu-bionic jenkins[27628]: Correct java version found
May 20 18:38:21 ubuntu-bionic jenkins[27628]:  * Starting Jenkins Automation Server jenkins
May 20 18:38:25 ubuntu-bionic su[27676]: Successful su for jenkins by root
May 20 18:38:25 ubuntu-bionic su[27676]: + ??? root:jenkins
May 20 18:38:25 ubuntu-bionic su[27676]: pam_unix(su:session): session opened for user jenkins by (uid=0)
May 20 18:38:26 ubuntu-bionic su[27676]: pam_unix(su:session): session closed for user jenkins
May 20 18:38:27 ubuntu-bionic jenkins[27628]:    ...done.
May 20 18:38:27 ubuntu-bionic systemd[1]: Started LSB: Start Jenkins at boot time.
selanjutnya jenkins sudah dapat diakses dengan IP server dan port 8080, dan pada saat pertamakali mengakses membutuhkan password yang bisa didapat dengan menjalankan command berikut ini pada jenkins server:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword

2. Optional Mengatur SSL untuk Domain Jenkins

Pada point ini merupakan optional apabila kita ingin mengakses jenkins menggunakan domain yang telah dimiliki. Sebelumnya mohon untuk menyesuaikan beberapa parameter berikut:
DOMAIN.COM --> sesuai dengan domain yang dimiliki
EMAIL@MU.COM --> sesuaikan dengan email yang digunakan untuk membuat ssl
Dan berikut beberapa command yang dapat dijalankan:
sudo apt install nginx software-properties-common -y
sudo rm -rf /etc/nginx/sites-enabled/default
sudo add-apt-repository ppa:certbot/certbot -y
sudo apt update
sudo apt install certbot -y
sudo certbot certonly --standalone --non-interactive -d DOMAIN.COM --email EMAIL@MU.COM --agree-tos
sudo mkdir /etc/nginx/ssl/
sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
sudo service nginx stop
selanjutnya buat configurasi nginx dengan menjalankan command berikut:
sudo nano /etc/nginx/sites-enabled/DOMAIN.COM
kemudian input dengan teks berikut ini:
server {
  listen 80;
  server_name DOMAIN.COM;
  return 301 https://$host$request_uri;
}
server {
  listen 443 ssl default deferred; server_name DOMAIN.COM;
  ssl on;
  ssl_certificate /etc/letsencrypt/live/DOMAIN.COM/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/DOMAIN.COM/privkey.pem;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 1440m;
  ssl_prefer_server_ciphers on;
  ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_dhparam /etc/nginx/ssl/dhparam.pem;
  add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_trusted_certificate /etc/letsencrypt/live/DOMAIN.COM/fullchain.pem; 
  resolver 8.8.8.8 8.8.4.4 valid=300s;
  resolver_timeout 5s;
  access_log /var/log/nginx/DOMAIN.COM.access.log; 
  error_log /var/log/nginx/DOMAIN.COM.error.log; proxy_buffers 16 64k;  proxy_buffer_size 128k;
    location / {
        proxy_pass  http://localhost:8080;  proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr; 
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto https; } 
}
kemudian kita dapat lakukan sinkronisasi dan pengecekan dengan command berikut:
sudo ln -s /etc/nginx/sites-available/DOMAIN.COM /etc/nginx/sites-enabled/DOMAIN.COM
sudo certbot certonly --standalone --non-interactive -d DOMAIN.COM --email EMAIL@MU.COM --agree-tos
sudo nginx -t
sudo systemctl restart nginx
Kemudian lakukan konfigurasi domain pada hostingan yang telah dimiliki.

Sampai disini kita telah belajar menginstal Jenkins server yang dapat digunakan untuk menjalankan CI/CD. Untuk pembahasan lainnya mengenai Belajar CI/CD Jenkins dapat dilihat pada link berikut:
Source: Hasil belajar dan ngulik bareng para suhu : Mas Estu & Mas Huda

Best Regards,
Heri Sulistiyo

Komentar