---
title: "Tutorial Semgrep: Setup SAST di CI/CD Pipeline"
description: "Panduan lengkap mengintegrasikan Semgrep SAST ke CI/CD pipeline. Dari instalasi lokal, custom rule, hingga GitHub Actions automation."
author: "Faris Aksa"
author_url: https://devmode.id/farisaksa
url: https://devmode.id/farisaksa/tutorial-semgrep-sast-cicd-pipeline-jj78
published: 2026-06-27T06:47:08.000Z
updated: 2026-06-27T06:47:08.000Z
language: id
tags: ["cybersecurity", "tutorial", "security", "devops"]
publisher: "DEVMODE Community"
---

# Tutorial Semgrep: Setup SAST di CI/CD Pipeline

Oleh [Faris Aksa](https://devmode.id/farisaksa) · 2026-06-27

Keamanan aplikasi dimulai dari kode itu sendiri. Semgrep adalah static application security testing (SAST) tool yang mampu mendeteksi vulnerability di first-party code dengan cepat dan akurat. Artikel ini akan membahas cara mengintegrasikan Semgrep ke dalam CI/CD pipeline agar setiap commit terscan secara otomatis.

## Mengapa SAST Penting di CI/CD?

Menemukan bug keamanan di production sudah terlalu terlambat. Dengan SAST, tim developer bisa mengidentifikasi issue seperti SQL injection, XSS, dan broken authentication sejak di tahap development. Semgrep menonjol karena rule-nya transparan, mudah dikustomisasi, dan mendukung banyak bahasa pemrograman populer.

## Prasyarat

- Repository yang menggunakan Git (GitHub, GitLab, atau Bitbucket)
- Akun Semgrep (bisa gratis dengan Semgrep Community Edition)
- CI/CD runner yang aktif
- Node.js atau Python di environment lokal (opsional, untuk test)

## Langkah 1: Install Semgrep Secara Lokal

Untuk eksplorasi awal, install Semgrep di komputer lokal menggunakan pip:

```
pip install semgrep
```

Atau via Homebrew untuk macOS:

```
brew install semgrep
```

Verifikasi instalasi:

```
semgrep --version
```

## Langkah 2: Menjalankan Scan Pertama

Pindah ke direktori project dan jalankan scan dengan rule dari Semgrep Registry:

```
cd my-project
semgrep --config=auto .
```

Flag `--config=auto` akan otomatis mendeteksi bahasa dan menjalankan rule yang paling relevan. Output akan menampilkan file, baris, dan severity dari setiap finding.

## Langkah 3: Membuat Custom Rule

Semgrep menggunakan pola yang ditulis dalam YAML. Contoh rule untuk mendeteksi penggunaan `eval` di JavaScript:

```
rules:
  - id: detect-eval
    pattern: eval(...)
    languages: [javascript]
    message: "Avoid using eval() due to security risks"
    severity: ERROR
```

Simpan file di `.semgrep/custom-rules.yml` dan jalankan:

```
semgrep --config .semgrep/custom-rules.yml .
```

Kamu juga bisa menambahkan data flow analysis untuk menangkap vulnerability yang lebih kompleks, seperti input user yang tidak tersanitasi sebelum masuk ke query database.

## Langkah 4: Integrasi ke GitHub Actions

Buat file `.github/workflows/semgrep.yml`:

```
name: Semgrep SAST Scan
on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  semgrep:
    runs-on: ubuntu-latest
    container:
      image: semgrep/semgrep
    steps:
      - uses: actions/checkout@v4
      - run: semgrep ci
```

Workflow di atas akan menjalankan Semgrep setiap kali ada push atau pull request ke branch utama. Jika ingin upload hasil ke dashboard Semgrep AppSec Platform, tambahkan environment variable `SEMGREP_APP_TOKEN`.

## Langkah 5: Triase dan Remediasi Finding

Setelah scan berjalan, kamu akan mendapatkan daftar finding dengan kategori severity: ERROR, WARNING, atau INFO. Lakukan triase dengan tim:

- **ERROR**: Wajib diperbaiki sebelum merge
- **WARNING**: Dievaluasi berdasarkan konteks bisnis
- **INFO**: Dokumentasikan sebagai technical debt

Gunakan fitur `// nosemgrep` comment di kode jika sebuah finding adalah false positive, tapi pastikan ada approval dari security lead.

## Tips Optimasi Scan

Untuk project besar, scan bisa dilambatkan oleh banyak file yang tidak relevan. Tambahkan file `.semgrepignore`:

```
node_modules/
dist/
*.test.js
vendor/
```

Semgrep juga mendukung differential scan yang hanya memeriksa file yang berubah dalam satu commit, menghemat waktu CI secara signifikan. Dokumentasi lengkap dan source code tersedia di [repository GitHub Semgrep](https://github.com/semgrep/semgrep).

## Kesimpulan

Mengintegrasikan Semgrep ke CI/CD adalah langkah konkret untuk mengamankan software development lifecycle. Dengan scan otomatis di setiap commit, tim bisa menemukan dan memperbaiki vulnerability lebih awal. Bagi tim developer Indonesia yang ingin meningkatkan security posture tanpa mengorbankan velocity, Semgrep adalah tool yang patut dicoba.

---

Sumber: https://devmode.id/farisaksa/tutorial-semgrep-sast-cicd-pipeline-jj78 (DEVMODE Community)
