Pada tutorial ini, kita akan belajar bagaimana cara untuk membuat automation server pada Ubuntu Server 20.04 menggunakan Jenkins.
Sebelum membahas tentang Jenkins, kita berkenalan dulu dengan Automation Server.
Automation Server adalah komponen perangkat lunak yang berfungsi untuk mengotomatisasi berbagai tugas dalam proses pengembangan perangkat lunak dan pengiriman aplikasi. Automation server ini bertindak sebagai pusat kontrol yang mengelola alur kerja otomatis untuk menjalankan tugas-tugas tertentu sesuai dengan aturan dan skenario yang telah ditentukan.
Fungsi utama automation server adalah mengotomatisasi dan mengkoordinasi berbagai tugas dan aktivitas yang terlibat dalam siklus pengembangan perangkat lunak, termasuk kompilasi kode, pengujian, analisis statik, pengiriman, dan penerapan aplikasi.
Automation server memungkinkan tim pengembang untuk mengatur alur kerja yang kompleks menjadi serangkaian langkah-langkah yang dapat dijalankan secara otomatis, mengurangi kesalahan manusia, meningkatkan efisiensi, dan mempercepat waktu pengiriman aplikasi.
Sekarang kita akan berkenalan dengan Jenkins yang digunakan pada Tutorial Automation Server ini.
Jenkins adalah sebuah sistem otomatisasi tugas open-source yang digunakan untuk membangun, menguji, dan menerapkan perangkat lunak secara otomatis. Jenkins berfungsi sebagai server berbasis Java yang dapat mengintegrasikan berbagai alat pengembangan perangkat lunak dan menyediakan lingkungan yang kuat untuk mengotomatisasi proses pengembangan perangkat lunak.
Jenkins dapat terhubung dengan berbagai alat pengujian, sistem manajemen versi, dan layanan cloud untuk mempermudah pengembangan dan pengiriman perangkat lunak.
Jenkins adalah salah satu dari banyaknya platform Automation Server, beberapa fitur umum dari automation server meliputi :
- Integrasi Alat: Automation server dapat terintegrasi dengan berbagai alat pengembangan perangkat lunak, seperti GIT.
- Konfigurasi Berbasis Skrip: Automation server biasanya menggunakan skrip atau konfigurasi berbasis kode yang akan dijalankan layaknya mengetikan script/kode di terminal.
- Pemantauan dan Pelaporan: Automation server menyediakan tampilan pemantauan yang memungkinkan pengguna untuk melacak status dan hasil dari setiap langkah dalam alur kerja otomatis.
- Skalabilitas: Jenkins dapat dikonfigurasi untuk mengelola proyek-proyek pengembangan perangkat lunak yang kompleks dan skala besar dengan mendukung distribusi tugas ke berbagai mesin.
- Fleksibilitas: Jenkins memiliki fleksibilitas yang tinggi dalam mengkonfigurasi dan mengelola pipeline CI/CD. Pengguna dapat menyesuaikan langkah-langkah, lingkungan, dan alat-alat yang terlibat dalam pipeline sesuai dengan kebutuhan proyek.
Server requirements untuk Jenkins ini sendiri tidak terlalu rumit, yang perlu kita siapkan adalah :
- Linux Server with 2 /4 Core CPU, 4GB RAM, 50GB Storage (Pada tutorial ini, saya menggunakan VirtualBox dengan Ubuntu Server 22.04)
- SSH
- Java 11
- Git
Sebelum masuk ke konfigurasi, pastikan bahwa Ubuntu Server kalian selalu up to date, ketikan perintah dibawah ini untuk memeriksa update yang tersedia :
sudo apt update
Jika terdapat update yang tersedia, ketikan perintah dibawah ini untuk memulai proses update pada server kalian :
sudo apt upgrade
Dibawah ini adalah tahapan yang akan kita lakukan untuk melakukan konfigurasi :
- Setup SSH
- Install Java
- Install Git
- Install Jenkins
- Jenkins Job ; Create Folder on Home Directory
Kita mulai saja proses instalasi & konfigurasi Jenkins Automation Server ini.
1. Setup SSH
Kita mulai dengan melakukan setup ssh pada server automate kita, kalian bisa gunakan perintah :
ssh-keygen
Lalu selanjutnya tekan enter saja sampai proses pembuatan SSH key selesai, kalian bisa melihat file ssh key yang dibuat pada folder .ssh di home direktori. Fungsi dari SSH ini kita gunakan agar kita bisa meremote server lewat terminal, tapi tidak hanya itu saja, fungsi lain dari setup SSH ini akan kita bahas pada tutorial Jenkins selanjutnya.
2. Install Java 11
Selanjutnya kita install Java versi 11 pada server, kalian bisa mengecek versi Java yang tersedia pada Ubuntu Server yang kita gunakan dengan perintah :
javac --version
Output :
Command 'javac' not found, but can be installed with:
sudo apt install default-jdk # version 2:1.11-72, or
sudo apt install openjdk-11-jdk-headless # version 11.0.19+7~us1-0ubuntu1~20.04.1
sudo apt install openjdk-13-jdk-headless # version 13.0.7+5-0ubuntu1~20.04
sudo apt install openjdk-16-jdk-headless # version 16.0.1+9-1~20.04
sudo apt install openjdk-17-jdk-headless # version 17.0.7+7~us1-0ubuntu1~20.04
sudo apt install openjdk-8-jdk-headless # version 8u372-ga~us1-0ubuntu1~20.04
sudo apt install ecj # version 3.16.0-1
Terlihat pada output diatas, pada server yang kita gunakan belum ada Java yang terinstall. Kita bisa menginstal Java menggunakan perintah yang disediakan diatas, disini kita gunakan perintah :
sudo apt-get install openjdk-11-jdk-headless -y
Setelah itu kita tunggu proses instalasi Java 11 ini sampai selesai, kalian bisa mengecek java yang terinstall pada server menggunakan perintah :
javac --version
Output :
java 11.0.19
java 11.0.19
Terlihat pada output diatas, server kita sudah terinstall Java versi 11.
3. Install Git
Kemudian kita install Git pada server kita menggunakan perintah :
sudo apt-get install git
Setelah terinstall, kalian bisa cek versi Git yang terinstall pada server menggunakan perintah :
git --version
Output :
git version 2.34.1
git version 2.34.1
4. Install Jenkins
Pada tutorial ini, kita akan menginstall Jenkins menggunakan WAR (Web Application Resource) File yang bisa kita download di Website Resmi Jenkins.
Disini kita akan menggunakan wget untuk mendownload filenya :
wget https://www.jenkins.io/download/
Ukuran file yang akan di download sekitar 94MB.
Harap diperhatikan : Jenkins menggunakan port default 8080
Setelah file jenkins.war sudah didownload, kita bisa langsung menjalankan Jenkinsnya di background menggunakan perintah :
java -jar jenkins.war &
Tag & digunakan agar Jenkins bisa berjalan di background, jadi meskipun terminal kita close, jenkins tetap akan berjalan di background sistem, kecuali jika Server/Host di Matikan maka kita harus running lagi Jenkinsnya agar bisa diakses lewat Web Browser.
Setelah Jenkins running, kita bisa akses Jenkins melalui Web Browser menggunakan ipserver:8080.
Gambar diatas adalah tampilan awal Jenkins setelah running pertama kali, pada tahap ini kita harus melakukan unlock Jenkins menggunakan Adminstrator Password. Dimana kita bisa mendapatkan password ini?, kalian bisa mendapatkan administrator passwordnya di folder .jenkins yang berada pada home direktori dengan mengetikan perintah :
cat /home/yourusername/.jenkins/secrets/initialAdminPassword
Output :
122f1270799b4f569aa8c6694e24bbc5
122f1270799b4f569aa8c6694e24bbc5
Setelah memasukan password kalian bisa klik tombol Continue.
Selanjutnya, kita bisa melakukan customize pada Jenkins kita dengan menginstall plugin yang disarankan oleh Jenkins dengan memilih Install suggested plugins. Tapi disini kita akan memilih Select plugins to install, artinya kita akan memilih sendiri plugins yang akan kita install. Kemudian pada tampilan saat memilih plugins, saya akan pilih none, jadi seolah-olah Jenkins yang kita install ini bersih dan kita akan setup dan integrasi dari NOL. Terakhir kalian bisa klik tombol Install
Selengkapnya kalian bisa lihat dibawah ini :
Kemudian, kita masuk ke proses create user admin, disini kalian bisa menginput username dan password untuk user admin jenkins kita. Selanjutnya kalian bisa klik tombol Save and Continue.
Terakhir masuk ke proses konfigurasi url untuk Jenkins, pada tutorial ini kita menggunakan port default 8080. Selanjutnya kalian bisa klik tombol Save and Finish.
Sampai pada tahap ini, proses instalasi Jenkins sudah selesai, kita bisa klik tombol Start using Jenkins.
Dibawah ini adalah tampilan Dashboard Jenkins :
5. Create Jenkins Job
Setelah Jenkins sudah berhasil di install dan running pada server kita, selanjutnya kita akan membuat Job pada Server Jenkins kita.Pada tutorial ini kita akan membuat job dasar yaitu membuat folder pada home direktori :
- Klik New Item
- Isikan nama untuk Job Jenkinsya, disini saya isikan dengan nama create-folder
- Pilih tipe project Freestyle Project
- Selanjutnya, pada kolom Deskripsi kalian bisa isikan deskripsi dari job jenkins yang mau dibuat, disini saya isikan dengan create folder home direktori
- Terakhir ke bagian Build Steps, klik tombol add Build Steps dan pilih Execute Command Shell
- Karena job ini akan berjalan pada sistem operasi linux, disini saya mengetikan 2 perintah :
cd /home/arief
mkdir belajar-jenkins - Perintah yang pertama adalah kita akan meminta jenkins masuk ke folder /home/arief, setelah itu buat folder belajar-jenkins.Selengkapnya kalian bisa lihat gambar animasi dibawah ini :
- Terakhir klik Save
Setelah job sudah dibuat, kita bisa klik tombol Build Now yang ada di panel sebelah kiri untuk menjalankan job jenkins yang sudah kita buat tadi.
Setelah job sudah running, kalian bisa melihat console output dari job pada bagian Build History - Console Output.
Pada gambar dibawah ini, terlihat bahwa jobnya sukses berjalan. Jika kita kembali ke server dan mengetikan ls di home folder, maka akan terlihat folder belajar-jenkins yang dibuat menggunakan job dari jenkins ini.
Kesimpulan :
Sekarang ini peranan dari Automation server sangat penting dalam pengembangan perangkat lunak modern karena membantu mengurangi beban kerja manual, meningkatkan kecepatan dan kualitas pengiriman, serta mengurangi human error jika job tersebut berkaitan dengan deployment aplikasi ke production server. Banyak platform automation server yang berbedar saat ini dan Jenkins adalah salah satu dari platform automation server open source yang bebas kita gunakan untuk membuat job automasi.
Masih banyak sekali kegunaan dari Jenkins ini dan bisa kita integrasikan dengan service lain yang akan kita bahas pada tutorial Jenkins selanjutnya.
Seperti itu tadi pembahasan kita tentang cara membuat automation server pada Ubuntu Server 20.04 menggunakan Jenkins. Sekian untuk tutorial kali ini, semoga ilmu yang kalian dapat dari tutorial ini bisa bermanfaat untuk kalian semua. Terima kasih.
0 comments: