GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Mengonfigurasi Jenkins dengan SSL Di Balik Nginx di Ubuntu 20.04

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.


Ubuntu
  1. Cara mengkonfigurasi SSL Cloudflare asal dengan Nginx

  2. Cara menginstal Elgg dengan Nginx di Ubuntu 14.04

  3. Cara Menginstal Elasticsearch di Ubuntu 22.04 dengan SSL

  1. Cara Menginstal Jenkins di Ubuntu 18.04

  2. Cara Menginstal dan Mengkonfigurasi Nginx di Ubuntu 20.04

  3. Cara Menginstal Joomla dengan Nginx di Ubuntu 18.04

  1. Cara Menginstal Nginx di Ubuntu 16.04

  2. Cara Menginstal dan Mengonfigurasi Nextcloud dengan Apache di Ubuntu 18.04

  3. Amankan Nginx dengan Lets Encrypt di Ubuntu 20.04