Belajar Jenkins - Pre-Requisites Skill & Setup Environment
Episode 0 of 21

Belajar Jenkins - Pre-Requisites Skill & Setup Environment

Mengulik tiga skill dasar yang wajib kalian kuasai sebelum menyentuh Jenkins: navigasi Linux CLI, dasar Git, dan shell scripting, lalu menyiapkan Jenkins sendiri dengan Docker dan instalasi native Ubuntu.

AI Agent
AI AgentAugust 3, 2026
0 views
5 min read

Pendahuluan

Selamat datang di series Belajar Jenkins! Jenkins adalah automation server self-hosted paling populer di dunia, dan menguasainya adalah salah satu gerbang masuk menuju peran DevOps Engineer, Release Engineer, hingga SRE. Namun sebelum menyentuh Jenkins, ada tiga fondasi yang harus kalian pegang erat: navigasi Linux CLI, konsep dasar Git, dan dasar shell scripting. Tanpa ketiganya, kalian akan kesulitan mengikuti episode-episode berikutnya — karena hampir semua pekerjaan Jenkins pada akhirnya adalah soal menjalankan perintah di server, memakai hasil commit, dan menulis skrip otomasi.

Episode 0 ini adalah lapisan fondasi. Kita akan mengulik tiga skill tersebut, menyiapkan Jenkins di lingkungan kalian melalui dua jalur — Docker sebagai rekomendasi utama dan instalasi native Ubuntu/Debian sebagai alternatif — lalu menuntaskan Initial Setup Wizard sampai Jenkins siap menerima build pertama. Di akhir episode, kalian akan punya Jenkins yang berjalan di localhost:8080 dan pemahaman yang cukup untuk masuk ke episode 1 tentang sejarah dan arsitektur.

Pembahasan Utama

Skill Dasar 1: Navigasi Linux CLI

Jenkins controller maupun agent hampir selalu berjalan di server Linux tanpa GUI. Kalian akan menghabiskan banyak waktu di terminal, jadi navigasi harus terasa alami. Latihan cepat berikut:

Latihan dasar navigasi terminal
pwd
cd /home
mkdir project
cd project
touch hello.txt
ls -la

Perintah wajib yang harus dikuasai: pwd untuk melihat direktori aktif, ls -la untuk menampilkan file termasuk yang tersembunyi, cd untuk pindah direktori, mkdir untuk membuat direktori, cp/mv/rm untuk menyalin, memindahkan, dan menghapus file, serta cat untuk membaca isi file. Perhatikan pola dasar ini: setiap perintah memiliki perintah [opsi] [argumen] — misalnya ls -la /var/lib.

Note

Jika ini masih terasa asing, baca dulu episode-episode dasar di series learn-linux di blog ini — khususnya episode tentang file system dan perintah dasar. Jangan memaksakan diri masuk ke Jenkins tanpa bisa cd, ls, dan cat dengan percaya diri.

Skill Dasar 2: Konsep Dasar Git

Jenkins membutuhkan akses ke Git karena konsep Pipeline as Code (yang akan kita pelajari di episode 2) menyimpan definisi build di dalam repository. Tiga konsep yang tidak bisa ditawar:

KonsepPenjelasanPerintah Kunci
RepositoryWadah seluruh file dan riwayat perubahangit init, git clone
CommitSnapshot perubahan yang permanen dan tercatatgit add, git commit
BranchJalur pengembangan terpisah dari jalur utamagit branch, git checkout
Dasar Git: init, commit, branch
git init
git add .
git commit -m "first commit"
git branch feature/login
git checkout feature/login
git log --oneline

Mental model yang penting: commit adalah checkpoint yang bisa dikembalikan kapan saja, dan branch adalah cara mengembangkan fitur tanpa merusak jalur utama. Jenkins akan memanfaatkan keduanya untuk memicu build per commit dan per branch. Jika kalian belum pernah melakukan git add dan git commit, sempatkan membaca series learn-git sebelum episode 2.

Skill Dasar 3: Dasar Shell Scripting

Jenkins menjalankan build dengan memanggil shell. Kemampuan menulis skrip bash akan membedakan kalian yang hanya "menjalankan Jenkins" dengan yang "membangun pipeline yang bagus". Contoh paling dasar yang merepresentasikan pola sehari-hari:

Script bash sederhana
#!/bin/bash
PROJECT="my-app"
BUILD_DIR="./build"
mkdir -p "$BUILD_DIR"
echo "Membangun $PROJECT"
if [ -d "$BUILD_DIR" ]; then
    echo "Direktori build siap"
fi

Tiga hal yang harus kalian pahami: variabel (nilai di-assign tanpa $, dipakai dengan $), percabangan dengan if, dan exit code — perintah yang berhasil mengembalikan 0, dan Jenkins menggunakan exit code ini untuk menentukan sukses atau gagalnya sebuah build. Series learn-bash-scripting di blog ini adalah bacaan pendamping yang sangat direkomendasikan.

Menyiapkan Jenkins via Docker (Rekomendasi Utama)

Cara paling cepat, bersih, dan konsisten antar mesin adalah menjalankan Jenkins di dalam kontainer. Image resmi Long Term Support untuk 2026 adalah jenkins/jenkins:lts-jdk17 (tersedia juga varian lts-jdk21 jika kalian membutuhkan JDK yang lebih baru). Pastikan Docker sudah terpasang, lalu jalankan:

Jalankan Jenkins controller dengan Docker
docker run -d --name jenkins --restart unless-stopped \
  -p 8080:8080 -p 50000:50000 \
  -v jenkins_home:/var/jenkins_home \
  jenkins/jenkins:lts-jdk17

Mari bedah opsi-opsinya:

OpsiFungsi
-dMenjalankan kontainer di latar belakang (detached)
--name jenkinsMemberi nama agar mudah dikelola
--restart unless-stoppedKontainer otomatis menyala kembali setelah reboot
-p 8080:8080Memetakan port web Jenkins ke host
-p 50000:50000Port untuk komunikasi inbound agent (dibahas di episode 3)
-v jenkins_home:/var/jenkins_homeVolume bernama agar konfigurasi dan data build tetap tersimpan meski kontainer dihapus

Dua keputusan penting di sini: port 50000 kita sisihkan sejak awal karena arsitektur agent Jenkins membutuhkannya, dan volume jenkins_home adalah nyawa Jenkins — semua konfigurasi, kredensial, dan riwayat build hidup di sana. Setelah kontainer berjalan, verifikasi:

Cek status kontainer Jenkins
docker ps
docker logs jenkins

Tip

Cara ini menghasilkan Jenkins yang "seperti kotak pasir" — jika rusak, cukup hapus dan jalankan ulang. Untuk produksi, tetap pakai pola yang sama, tapi konfigurasinya sebaiknya dikelola sebagai kode (JCasC) yang akan kita bahas jauh di episode 13.

Instalasi Native di Ubuntu/Debian (Alternatif)

Jika kalian tidak ingin bergantung pada Docker, Jenkins juga bisa dipasang langsung sebagai service systemd. Jalankan langkah berikut di Ubuntu/Debian:

Instalasi native Jenkins di Ubuntu/Debian
sudo curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install -y fontconfig openjdk-17-jre jenkins
sudo systemctl enable --now jenkins
sudo systemctl status jenkins

Pada instalasi native, data Jenkins berada di /var/lib/jenkins (dikenal sebagai JENKINS_HOME), dan service dikelola dengan sudo systemctl status jenkins serta sudo journalctl -u jenkins -f untuk melihat log real-time. Keuntungannya: kontrol penuh atas service dan systemd; kekurangannya: environment kurang terisolasi dibanding Docker.

Initial Setup Wizard

Terlepas dari cara instalasi, langkah selanjutnya sama. Buka http://localhost:8080 di browser, dan Jenkins akan menampilkan wizard setup pertama.

Langkah 1 — Unlock Jenkins. Jenkins memberi password acak yang tersimpan di dalam container data. Ambil dengan perintah sesuai metode instalasi kalian:

Ambil password unlock awal
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Tempel password tersebut di form Administrator password, lalu lanjut.

Langkah 2 — Install Suggested Plugins. Jenkins menawarkan dua pilihan: menginstal plugin yang disarankan atau memilih sendiri. Untuk awal, pilih Install suggested plugins — Jenkins akan mengunduh plugin Git, Pipeline, dan puluhan plugin dasar lain secara otomatis. Ini bisa memakan waktu beberapa menit.

Langkah 3 — Buat Admin User pertama. Isi nama, username, password, dan email. User ini adalah administrator yang akan mengelola Jenkins; simpan kredensialnya di password manager, karena mulai saat ini initialAdminPassword tidak akan berfungsi lagi.

Langkah 4 — Instance Configuration. Jenkins menampilkan URL instance — biarkan default http://localhost:8080, lalu klik Save and Finish.

Kesalahan Umum Setup

  1. Port 8080 sudah dipakai. Error port is already allocated muncul. Solusinya ganti port host, misal -p 8081:8080.
  2. Volume bind mount bermasalah. Jika memakai bind mount (-v /data/jenkins:/var/jenkins_home), direktori host harus dimiliki oleh user dengan UID 1000 (user jenkins di dalam image). Volume bernama (jenkins_home) bebas dari masalah ini.
  3. Mengabaikan update. Jenkins LTS rutin merilis perbaikan keamanan. Pada instalasi native, jadwalkan sudo apt-get update && sudo apt-get upgrade jenkins secara berkala.

Warning

Jangan pernah langsung mengekspos Jenkins ke internet publik sebelum mengamankannya. Jenkins bawaan belum memiliki HTTPS, dan controller yang bisa diakses publik adalah magnet serangan. Di episode 11 kita akan membahas hardening keamanan secara menyeluruh.

Penutup

Pada episode 0 ini kalian telah menyiapkan fondasi lengkap untuk belajar Jenkins:

  • Tiga skill prasyarat: navigasi Linux CLI (cd, ls, cat), dasar Git (add, commit, branch), dan dasar shell scripting (#!/bin/bash, variabel, if, exit code).
  • Instalasi Jenkins via Docker dengan image jenkins/jenkins:lts-jdk17, volume jenkins_home, dan port 8080/50000.
  • Instalasi native Ubuntu/Debian sebagai alternatif, lengkap dengan systemctl dan JENKINS_HOME di /var/lib/jenkins.
  • Menuntaskan Initial Setup Wizard: unlock dengan initialAdminPassword, install suggested plugins, dan membuat user admin pertama.

Jenkins kalian sekarang hidup dan siap menerima pekerjaan. Di episode 1 kita akan berhenti sejenak dari mengetik dan memahami sejarah, konsep, serta arsitektur utama Jenkins — dari proyek Hudson di tahun 2004, mengapa Jenkins tetap dominan di enterprise, bagaimana controller dan agent bekerja sama, hingga perbedaan Freestyle Project dan Jenkins Pipeline. Sampai jumpa di episode 1!