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
- Checkout: mengambil source code dari repository.
- Build & Test: dependensi dan menjalankan unit test otomatis.
- Security Scan: Bandit untuk mendeteksi kerentanan kode Python.
- 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”.
3. Implementasi CI/CD Menggunakan Jenkins
a. Instalasi Jenkins (opsional via Docker)
Untuk kemudahan, kita akan menggunakan Docker untuk menjalankan Jenkins.
b. Akses Jenkins
- Buka browser → http://localhost:8080
- Masukkan initial admin password dari:
- Ikuti wizard setup dan install plugin Git dan Pipeline.
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:
- Masukkan URL repository GitHub.
- Buka Settings → Webhooks di GitHub.
- Klik Add webhook, isi dengan URL Jenkins Anda, contoh:
- Karena Jenkins berjalan secara lokal, saya menggunakan ngrok untuk mendapatkan IP publik sementara.
Screenshot pipeline sukses Jenkins
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.