2021-06-22 · 2 menit baca
Jenkins adalah automation server open source yang ditulis dengan Java, dan jadi salah satu tool paling umum buat menjalankan CI/CD. Intinya, Jenkins mengotomatiskan tiga hal yang biasanya dikerjakan manual: testing, build, dan deployment, setiap kali ada perubahan kode masuk.
Proses paling gampang adalah lewat script instalasi yang tinggal dijalankan di server:
git clone https://github.com/hiibnu/jenkins-run.git
cd jenkins-run
./test.shScript ini akan menampilkan menu pilihan distro Linux (CentOS 7, Ubuntu/Debian, atau contoh Jenkinsfile). Setelah instalasi selesai, Jenkins bisa diakses lewat http://ip-server:8080 karena port default-nya 8080.
Di first-run, Jenkins minta di-unlock dulu pakai password yang otomatis dibuat:
sudo cat /var/lib/jenkins/secrets/initialAdminPasswordSetelah itu tinggal install "suggested plugins", buat akun admin, dan set Jenkins URL.
Buat job baru bertipe Pipeline. Di tab General, centang "GitHub project" dan isi URL repo-nya. Di Build Triggers, centang "GitHub hook trigger for GITScm polling" supaya setiap push bisa memicu build.
Di tab Pipeline, pilih Git sebagai SCM (Bitbucket juga bisa pakai cara yang sama). Untuk repo publik, kolom credentials boleh dikosongkan; repo privat butuh username/password atau SSH key. Isi juga branch yang mau di-build, dan Script Path — defaultnya mencari file bernama persis Jenkinsfile.
Supaya push benar-benar memicu build otomatis, tambahkan webhook di Settings repo GitHub yang mengarah ke http://ip-jenkins:8080/github-webhook/.
Jenkinsfile declarative sederhana biasanya berisi blok environment, agent, dan beberapa stage:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
sh "ls -lisa"
}
}
stage('Test') {
steps { echo 'Testing...' }
}
stage('Deploy') {
steps { echo 'Deploying...' }
}
}
}Stage Build biasanya dipakai buat mengecek isi workspace dulu sebelum lanjut ke test dan deploy.
Yang dibahas di sini baru dasar-dasarnya. Jenkins sebenarnya bisa jauh lebih jauh, misalnya mengirim notifikasi ke Telegram atau email begitu build selesai — tapi itu cerita lain di lain waktu.