Episode ini membahas Groovy scripting untuk Jenkinsfile dan declarative pipeline, termasuk stages, steps, shared libraries, dan agent configuration. Kalian juga akan mengintegrasikan Git, testing, dan deployment automation dalam satu pipeline lengkap.

Jenkins adalah alasan lain mengapa Groovy tetap relevan: seluruh pipeline CI/CD Jenkins ditulis dalam Groovy. Setiap file Jenkinsfile yang kalian lihat adalah kode Groovy yang berjalan di Jenkins.
Episode 13 membahas declarative pipeline, stages dan steps, agent configuration, shared libraries, serta integrasi dengan Git, testing, dan deployment automation.
pipeline {
agent any
stages {
stage("Checkout") {
steps {
checkout scm
}
}
stage("Build") {
steps {
echo "Membangun project"
sh "gradle build"
}
}
stage("Test") {
steps {
sh "gradle test"
}
}
}
}pipeline { agent any stages { ... } } membuka blok pipeline; agent any memakai worker mana pun yang tersedia. Setiap stage mendefinisikan tahapan, dan steps berisi perintah yang dijalankan — semuanya adalah Groovy DSL.
pipeline {
agent any
stages {
stage("Build") {
steps {
sh "gradle build"
}
}
}
post {
success {
echo "Build sukses"
}
failure {
echo "Build gagal"
}
}
}post { success { ... } failure { ... } } menjalankan notifikasi sesuai kondisi akhir. Di sinilah kalian bisa memanggil plugin Slack, email, atau API eksternal untuk melaporkan status build.
pipeline {
agent {
docker {
image "gradle:8-jdk17"
args "-v /root/.gradle:/home/gradle/.gradle"
}
}
stages {
stage("Build") {
steps {
sh "gradle build"
}
}
}
}agent { docker { image "gradle:8-jdk17" } } menjalankan pipeline di dalam container Gradle. Setiap stage bisa menimpa agent dengan agent { label "linux" } untuk menjalankan sebagian pipeline di worker tertentu.
Saat pipeline tumbuh besar, duplikasi kode antar project menjadi masalah. Shared libraries memungkinkan penyimpanan kode Groovy umum di satu repository yang bisa dipakai banyak Jenkinsfile:
// vars/notifikasiKanal.groovy
def panggil(String pesan) {
echo "Notifikasi: ${pesan}"
}
// panggilan dari Jenkinsfile
notifikasiKanal("Deploy dimulai")vars/notifikasiKanal.groovy mendefinisikan method global yang dipanggil dari Jenkinsfile. notifikasiKanal("Deploy dimulai") memanggil method tersebut — ini adalah metaprogramming Groovy yang memungkinkan function tersedia tanpa import eksplisit.
pipeline {
agent any
stages {
stage("Checkout") {
steps {
checkout scm
}
}
stage("Test") {
steps {
sh "gradle test"
}
}
stage("Build") {
steps {
sh "gradle build"
}
}
stage("Deploy") {
when {
branch "main"
}
steps {
sh "deploy-script.sh"
}
}
}
post {
always {
junit "build/test-results/**/*.xml"
}
}
}when { branch "main" } membatasi stage Deploy hanya berjalan di branch utama, dan junit "build/test-results/**/*.xml" mempublikasikan hasil test ke dashboard Jenkins. checkout scm mengambil kode dari Git secara otomatis.
Episode 13 menunjukkan kekuatan Groovy di CI/CD: declarative pipeline dengan stages dan steps, agent configuration termasuk docker, shared libraries untuk reuse kode, serta integrasi Git, testing, dan deployment dalam satu pipeline.
Inti yang harus dibawa pulang:
pipeline, stages, dan steps.agent menentukan worker atau container tempat pipeline berjalan.environment mendefinisikan variabel pipeline.when { branch "main" } mengontrol eksekusi stage secara kondisional.post menjalankan notifikasi dan laporan hasil.Di episode 14 selanjutnya kita akan membahas configuration, secrets, dan environment — mengelola konfigurasi aplikasi dengan Groovy, penanganan secrets yang aman, external config sources, serta behavior per environment dan runtime overrides.