Jenkins merupakan sebuah perangkat lunak otomatisasi server berbasis Java (open source) yang menawarkan cara mudah untuk mengatur integrasi yang berkelanjutan (Continuous Integration) dan pengiriman (Continuous Delivery) pipeline yang berkesinambungan (CI/CD Pipeline).
Apa itu CI dan apa itu CD?
Continuous Integration (CI) adalah sebuah praktek DevOps di mana anggota tim secara teratur melakukan commit pada perubahan kodingan mereka ke repositori kontrol, tentunya setelah proses build dan testing dilakukan.
Sedangkan Continuous Delivery (CD) merupakan serangkaian praktek di mana perubahan kodingan dibuat, diuji, dan digunakan untuk level produksi secara otomatis.
Persyaratan
Pastikan kalian memiliki sudo atau root access pada server kalian.
Instalasi Aplikasi
- Instalasi OpenJDK 8
Karena Jenkins merupakan sebuah aplikasi berbasis Java, maka tahap pertama yang harus dilakukan adalah instalasi Java. Berikut ini adalah perintah untuk melakukan instalasi paket OpenJDK 8:yum install java-1.8.0-openjdk-devel
Instalasi OpenJDK 8 Jenkins juga sudah mendukung OpenJDK 11. Jadi kalau kalian memiliki aplikasi lain yang membutuhkan Java11 di dalam satu server yang sama dengan Jenkins, kalian bisa menggunakan OpenJDK 11.
- Mengaktifkan repositori
Tahap berikutnya adalah mengaktifkan repositori Jenkins. Untuk melakukannya, impor GPG Key dengan menggunakan perintah curl berikut:curl --silent --location http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo | sudo tee /etc/yum.repos.d/jenkins.repo
enable repository Dan tambahkan repositorinya ke sistem kalian dengan perintah:
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
Menambahkan repositori - Install versi stabilnya
Usai repositori diafktifkan, instal versi stabilnya dengan mengetikkan perintah:sudo yum install jenkins
Proses instalasi - Jalankan service
Setelah proses instalasi selesai, jalankan service-nya dengan mengetikkan perintah:sudo systemctl start jenkins - Periksa service
Untuk memeriksa apakah service-nya sudah berjalan dengan baik, jalankan perintah:systemctl status jenkins
Starting and checking the service - Mengaktifkan secara penuh
Untuk mengaktifkan service-nya secara penuh (bila sistem operasinya di-restart, aplikasi otomatis akan menyala), jalankan perintah:sudo systemctl enable jenkins
Enable it - Membuka Port
Jika kalian menjalankan Jenkins pada sebuah remote server yang port 8080-nya diproteksi oleh sebuah firewall, jalankan perintah ini untuk membuka port tersebut:sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp sudo firewall-cmd --reload

membuka port 8080
Pengaturan Jenkins
- Untuk membuat pengaturan atas instalasi yang baru saja dilakukan, buka browser kalian dan ketikkan alamat domain atau IP yang diikuti dengan port 8080. Halaman seperti ini akan muncul:

Halaman awal yang muncul - Gunakan perintah berikut untuk memunculkan password di terminal:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword - Copy hasil tersebut ke dalam text box yang tersedia tadi:

Copy Administrator Password - Pada tahap selanjutnya, kalian akan diberi pilihan untuk menginstal dengan plugin yang disarankan atau kalian memilih plugin secara manual. Pilih saja install suggested plugins dan proses instalasi akan dimulai secara otomatis.

Install suggested plugins 
proses sedang berjalan - Setelah instalasi komplit, kalian akan diminta untuk memasukkan pengguna administratif yang pertama. Isi informasi tersebut lalu tekan save & continue:

User admin yang pertama - pada halaman berikutnya, kalian kana diminta untuk memasukkan URL untuk aplikasi ini. URL akan terisi secara otomatis

URL terisi secara otomatis Untuk menyelesaikan prosesnya, tekan save & finish
- Dengan menekan tombol start using Jenkins, kalian sudah siap untuk menggunakan aplikasi tersebut.

Aplikasi sudah siap 
Halaman admin
Jika kalian sudah mencapai titik ini, berarti kalian sudah sukses melakukan instalasinya di CentOS.
Tambahan
Untuk me-redirect dari port 8080 ke 80 dan untuk memasang SSL di Jenkins, cara yang saya gunakan adalah dengan memasang web server nginx di depan Jenkins. Berikut adalah tahapannya:
- Instalasi nginx
Untuk melakukan instalasi nginx di CentOS, jalankan perintah berikut:
instalasi nginx - Ubah konfigurasinya nginx agar membuatnya menjadi reverse proxy.
location / { proxy_pass http://127.0.0.1:8080; 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 $scheme; }
- Untuk mengaktifkan SSL dan me-redirect port 80 ke 443, ubah konfigurasi nginx menjadi:
upstream jenkins { server 127.0.0.1:8080 fail_timeout=0; } server { listen 80; server_name <nama_server_kalian>; return 301 https://<nama_server_kalian>$request_uri; } server { listen 443 ssl; server_name <nama_server_kalian>; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED"; add_header Strict-Transport-Security "max-age=31536000"; ssl_certificate /etc/letsencrypt/live/<nama_server_kalian>/cert.pem; ssl_certificate_key /etc/letsencrypt/live/<nama_server_kalian>/privkey.pem; gzip on; gzip_types text/plain text/css application/javascript application/json; gzip_vary on; location / { proxy_set_header Host $host:$server_port; 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 $scheme; proxy_redirect http:// https://; proxy_pass http://jenkins; # Required for new HTTP-based CLI proxy_http_version 1.1; proxy_request_buffering off; proxy_buffering off; # Required for HTTP-based CLI to work over SSL # workaround for https://issues.jenkins-ci.org/browse/JENKINS-45651 add_header 'X-SSH-Endpoint' '<nama_server_kalian>:50022' always; } }

konfigurasi nginx Sertifikat yang saya gunakan pada contoh di atas berasal dari Let’s Encrypt dengan Certbotnya. Untuk instalasinya bisa kalian lihat DI SINI
- Jika instalasi usdah selesai, nyalakan service-nya, aktifkan dan periksa statusnya dengan perintah:
sudo systemctl enable nginx sudo systemctl start nginx sudo systemctl status nginx

enable, start, and check nginx status - Jika service sudah berjalan dengan baik, sekarang waktunya untuk mengizinkan traffic masuk ke port 80 dan 443. Caranya:
sudo firewall-cmd --zone=public --permanent --add-service=http sudo firewall-cmd --zone=public --permanent --add-service=https sudo firewall-cmd --reload

allow traffic
