
Jenkins adalah alat otomatisasi alat sumber terbuka untuk menyiapkan seluruh jalur pengiriman perangkat lunak -pengiriman berkelanjutan. Hal ini memungkinkan pengembang untuk mengelola dan mengontrol proses pengiriman perangkat lunak di seluruh siklus hidup seperti untuk membangun, menguji, dan menerapkan perangkat lunak mereka dengan andal.
Jenkins memiliki komunitas yang aktif dan dapat diperluas. Itu ditulis dalam bahasa Jawa. Secara umum, Jenkins berjalan sebagai aplikasi servlet Java bawaan yang berdiri sendiri. Dimungkinkan juga untuk dijalankan dalam wadah servlet Java seperti Apache Tomcat atau GlassFish.
Dalam tutorial ini, kita mempelajari cara mengonfigurasi Jenkins dengan SSL di belakang Nginx di Ubuntu 20.04 .
Prasyarat
- Server Ubuntu 20.04
- Pengguna dengan ketentuan sudo
- Minimum 1 GB RAM
- Oracle JDK 11 atau yang lebih baru diinstal.
Langkah 1:Instal Jenkins di Ubuntu
Paket Jenkins yang tersedia di repositori default Ubuntu kemungkinan besar berada di belakang versi terbaru. Disarankan untuk menginstal Jenkin dari paket pemeliharaan yang diproyeksikan yang tersedia di repositori resmi.
Kami pertama-tama akan menambahkan kunci repositori ke sistem.
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
Saat menulis panduan ini, prosedur akan menginstal versi 2.303.3
dari Jenkins
Selanjutnya, mari tambahkan repositori paket ke sources.list
berkas:
$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
Kita harus memperbarui cache repositori
$ sudo apt update
Sekarang Anda dapat menginstal Jenkins:
$ sudo apt install jenkins
Kemudian mulai layanan
$ sudo systemctl start jenkins
Mari konfigurasikan layanan untuk memulai secara otomatis dengan server
$ sudo systemctl enable jenkins
Anda dapat memeriksa status layanan
$ sudo systemctl status jenkins
Anda dapat memeriksa versinya dengan melihat file /var/lib/jenkins/config.xml
$ cat /var/lib/jenkins/config.xml
<?xml version='1.1' encoding='UTF-8'?>
<hudson>
<disabledAdministrativeMonitors/>
<version>2.303.3</version>
...
...
</hudson>
Langkah 2:Konfigurasi Nginx dengan sertifikat SSL
Sekarang karena kita akan menggunakan Nginx untuk mem-proxy komunikasi, pertama-tama kita harus menginstalnya
$ sudo apt install nginx
Sekarang Anda perlu menyalin sertifikat di folder untuk digunakan. Kami akan menganggap Anda sudah memiliki sertifikat SSL.
Kami akan menyalin sertifikat
$ sudo cp jenkins.domain.com.crt /etc/nginx/certs/jenkins.domain.com.crt
Kemudian salin kuncinya
$ sudo cp jenkins.domain.com.key /etc/nginx/certs/jenkins.domain.com.key
Untuk menghindari konflik dengan konfigurasi default Nginx, kami akan menghapus konfigurasi default dari sites-enabled
direktori
sudo rm /etc/nginx/sites-enabled/default
Sekarang mari kita buat file konfigurasi Jenkins. Jenkins biasanya menggunakan port 8080 untuk menjalankan tetapi karena kami menggunakan Nginx, itu akan mendengarkan pada port 80 dan 443, kemudian dengan informasi nama domain, itu akan mem-proxy komunikasi secara internal pada port 8080 untuk Jenkins.
Konfigurasi yang akan kita atur akan otomatis memaksa semua permintaan HTTP ke HTTPS
$ sudo vim /etc/nginx/sites-available/jenkins.conf
upstream jenkins.domain.com {
server SERVER_IP:8080;
}
server {
server_name jenkins.domain.com;
listen 80 ;
access_log /var/log/nginx/jenkins.log;
return 301 https://$host$request_uri;
}
server {
server_name jenkins.domain.com;
listen 443 ssl http2 ;
access_log /var/log/nginx/jenkins.log;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_certificate /etc/nginx/certs/jenkins.domain.com.crt;
ssl_certificate_key /etc/nginx/certs/jenkins.domain.com.key;
add_header Strict-Transport-Security "max-age=31536000";
location / {
proxy_pass http://jenkins.domain.com;
}
}
Selain konfigurasi Jenkins Nginx, kami telah menambahkan beberapa turunan nginx yang diperlukan. Anda dapat menggunakan dan mengoptimalkan sesuai dengan kebutuhan server web Anda.
Sekarang buat simbol dari file konfigurasi untuk mengaktifkannya
$ sudo ln -s /etc/nginx/sites-available/jenkins.conf /etc/nginx/sites-enabled/jenkins.conf
Sekarang mulai layanan Nginx
$ sudo systemctl start nginx
Kemudian aktifkan saat startup
$ sudo systemctl enable nginx
Sekarang Anda dapat menguji konfigurasi Nginx Anda
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Sekarang restart layanan Nginx untuk mempertimbangkan konfigurasi
$ sudo systemctl restart nginx
Sekarang buka port 80 dan 443 di firewall:
$ sudo ufw allow 80,443/tcp
Juga, pastikan untuk membuka port ssh sebelum mengaktifkan UFW jika tidak, Anda dapat kehilangan koneksi ssh jika terjadi kesalahan
$ sudo ufw allow 'OpenSSH'
Sekarang aktifkan UFW jika belum
$ sudo ufw enable
Langkah 3:Akses dan konfigurasikan Jenkins
Sekarang buka browser Anda dengan URL http://jenkins.domain.com dan kemudian Anda akan melihat halaman Jenkins yang meminta kata sandi Anda

Untuk memiliki kata sandi, Anda harus menampilkan konten file yang ditunjukkan
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
88ba484d8cff4150a90683a07c89ea7c
Kemudian paste password dan lanjutkan ke halaman berikutnya. Anda sekarang akan memiliki halaman yang meminta untuk menginstal plugin default atau memilih yang akan diinstal. Dalam kasus kami, kami akan membiarkan yang default

Kemudian Anda akan melihat proses instalasi

Sekarang Anda perlu membuat pengguna admin.

Sekarang validasi URL Jenkins.

Sekarang Anda dapat mulai menggunakan Jenkins

Kesimpulan
Dalam tutorial ini, kita belajar cara mengkonfigurasi Jenkins dengan SSL di belakang Nginx di Ubuntu 20.04. Anda dapat mulai mengonfigurasi tugas dan alur proses CI/CD Anda.