88032023006 | ZICO

...

Praktik Minggu 3 DevSecOps

Implementasi CI/CD Pipeline Menggunakan GitHub Actions dan Jenkins dalam DevSecOps

1. Pengantar CI/CD dan DevSecOps

CI/CD (Continuous Integration/Continuous Deployment) adalah pendekatan modern dalam pengembangan perangkat lunak yang memungkinkan proses build, test, security scan, dan deployment dilakukan secara otomatis setiap kali ada perubahan kode.

  • Continuous Integration (CI) → fokus pada proses integrasi kode secara otomatis setelah push ke repository.
  • Continuous Deployment (CD) → proses otomatis untuk merilis aplikasi ke lingkungan staging atau production.

Dalam konteks DevSecOps, CI/CD bukan hanya soal otomatisasi, tetapi juga menyisipkan proses security scanning di dalam pipeline sehingga kerentanan dapat terdeteksi lebih awal.

2. Implementasi CI/CD Menggunakan GitHub Actions

a. Struktur File

Pertama, buat struktur direktori seperti berikut pada repository Anda:

b. Isi File cicd.yml

c. Penjelasan Tahapan

  1. Checkout: mengambil source code dari repository.
  2. Build & Test: dependensi dan menjalankan unit test otomatis.
  3. Security Scan: Bandit untuk mendeteksi kerentanan kode Python.
  4. Deploy: simulasi proses deployment ke staging.

d. Hasil Eksekusi

  • Ketika melakukan push ke branch main, pipeline akan otomatis berjalan.
  • Jika semua tahap sukses ✅, status pipeline akan “passed”.
Image1 Image1

3. Implementasi CI/CD Menggunakan Jenkins

a. Instalasi Jenkins (opsional via Docker)

Untuk kemudahan, kita akan menggunakan Docker untuk menjalankan Jenkins.

b. Akses Jenkins

  1. Buka browser → http://localhost:8080
  2. Masukkan initial admin password dari:
  3. Ikuti wizard setup dan install plugin Git dan Pipeline.
Image1

c. Buat Pipeline Baru

  • Klik New Item → pilih Pipeline.
  • Masukkan Jenkinsfile (atau tulis langsung di pipeline script).

d. Contoh Jenkinsfile

e. Integrasi dengan GitHub

Agar pipeline otomatis berjalan setiap ada push:

  1. Masukkan URL repository GitHub.
  2. Buka Settings → Webhooks di GitHub.
  3. Klik Add webhook, isi dengan URL Jenkins Anda, contoh:
  4. Karena Jenkins berjalan secara lokal, saya menggunakan ngrok untuk mendapatkan IP publik sementara.

Screenshot pipeline sukses Jenkins

Image1 Image1

4. Perbandingan GitHub Actions vs Jenkins

Aspek GitHub Actions Jenkins
Instalasi Tidak perlu (cloud native) Perlu server sendiri atau Docker
Kemudahan Setup Sangat mudah, langsung di repo Perlu konfigurasi manual
Skalabilitas Terbatas oleh GitHub Fleksibel, bisa integrasi ke banyak tools
Cost Gratis untuk repo publik Gratis (self-host), tapi perlu infrastruktur
Integrasi Security Scan Native di workflow YAML Bisa pakai plugin dan script custom

5. Refleksi: CI/CD dalam SSDLC

Penerapan CI/CD menjadi bagian penting dari Secure Software Development Life Cycle (SSDLC) karena:

  • Mendeteksi bug dan kerentanan lebih awal.
  • Meningkatkan kecepatan rilis tanpa mengorbankan keamanan.
  • Menjamin konsistensi build dan deployment.
  • Membantu tim DevOps dan Security bekerja lebih kolaboratif.

Dengan memasukkan proses security scanning otomatis seperti Bandit ke dalam pipeline, organisasi dapat menghemat biaya perbaikan bug keamanan di tahap akhir.

Kesimpulan

Implementasi CI/CD dengan GitHub Actions cocok untuk tim kecil atau proyek open-source karena mudah digunakan dan tidak memerlukan infrastruktur tambahan. Sementara Jenkins cocok untuk tim besar yang membutuhkan fleksibilitas tinggi dan kendali penuh atas pipeline.

Keduanya berperan penting dalam mendukung prinsip DevSecOps dan meningkatkan keamanan aplikasi sejak awal siklus pengembangan.