BARUTeam, Domain & Bundle
Diskon 30%!
Detail
cicddatabase-branchingpostgresqlneongithub-actionspreview-environment

Database Branching untuk CI/CD: Tutorial PostgreSQL + Neon di Helipod

Tim Helipod

5 menit baca

Setup database branching otomatis untuk CI/CD pipeline dengan Neon dan Helipod. Setiap pull request dapat database branch sendiri secara instan.

Bayangkan setiap pull request di GitHub otomatis punya database branch sendiri — tanpa setup manual, tanpa tunggu menit, tanpa takut ngotorin production.

Itu bukan mimpi. Dengan Neon database branching + Helipod, itu jadi kenyataan.

Kenapa Database Branching untuk CI/CD?

Masalah Tanpa Branching

Developer A push code → Testing di staging → Database conflict!
Developer B push code → Testing di staging → Data campur aduk!

Akhirnya:

  • Manual setup database buat testing
  • Sering lupa cleanup branch lama
  • Staging database sering "kotor" karena dipakai bareng

Solusi: Database Branching

Pull Request #1 → Branch DB pr-1 → Isolated testing
Pull Request #2 → Branch DB pr-2 → Isolated testing
Pull Request #3 → Branch DB pr-3 → Isolated testing

Hasilnya:

  • Setiap PR punya database sendiri
  • Cleanup otomatis saat PR di-merge/ditutup
  • Production database tetap bersih

Cara Kerja Database Branching

Neon menggunakan copy-on-write untuk branching:

main branch (production data)
│
├── pr-123 branch (copy data saat branching)
│   └── Developer A bisa modify tanpa ngaruh main
│
├── pr-124 branch (copy data saat branching)
│   └── Developer B bisa modify tanpa ngaruh main
│
└── staging branch (copy data dari main)
    └── QA testing tanpa ngaruh production

Yang bikin Neon spesial:

  • Branch instan (milidetik, bukan menit)
  • Storage efisien (cuma simpan perbedaan)
  • Scale to zero (branch idle = ga bayar)

Setup CI/CD dengan Database Branching

Langkah 1: Setup Neon + Helipod

  1. Connect Neon ke Helipod (lihat tutorial integrasi)
  2. Aktifkan Branch per environment
  3. Catat naming pattern yang dipakai

Langkah 2: Konfigurasi GitHub Actions

Buat file .github/workflows/preview.yml:

name: Preview Environment

on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  deploy-preview:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Create Neon Branch
        run: |
          # Buat branch database untuk PR ini
          BRANCH_NAME="pr-${{ github.event.pull_request.number }}"
          
          curl -X POST "https://console.neon.tech/api/v2/projects/{project_id}/branches" \
            -H "Authorization: Bearer ${{ secrets.NEON_API_KEY }}" \
            -H "Content-Type: application/json" \
            -d "{\"branch\": {\"parent_id\": \"main\"}, \"name\": \"$BRANCH_NAME\"}"
        env:
          NEON_API_KEY: ${{ secrets.NEON_API_KEY }}

      - name: Deploy to Helipod
        run: |
          # Deploy dengan branch database baru
          helipod deploy \
            --branch ${{ github.event.pull_request.number }} \
            --env DATABASE_URL="postgresql://..."

Langkah 3: Cleanup Otomatis

Buat file .github/workflows/cleanup.yml:

name: Cleanup Preview

on:
  pull_request:
    types: [closed]

jobs:
  cleanup:
    runs-on: ubuntu-latest
    steps:
      - name: Delete Neon Branch
        run: |
          BRANCH_NAME="pr-${{ github.event.pull_request.number }}"
          
          curl -X DELETE "https://console.neon.tech/api/v2/projects/{project_id}/branches/{branch_id}" \
            -H "Authorization: Bearer ${{ secrets.NEON_API_KEY }}"
        env:
          NEON_API_KEY: ${{ secrets.NEON_API_KEY }}

Real Use Cases

Use Case 1: Feature Development

Situasi: Developer sedang buat fitur baru yang butuh schema changes

# 1. Buat branch dari main
git checkout -b feature/new-payment

# 2. Helipod otomatis buat database branch
# Database branch: feature-new-payment

# 3. Jalankan migration
npx prisma migrate dev

# 4. Push kode
git push origin feature/new-payment

# 5. PR dibuat → Database branch siap untuk testing

Use Case 2: Pull Request Testing

Situasi: QA perlu test PR sebelum di-merge

PR #123: Add payment feature
├── Code branch: feature/payment
├── Database branch: pr-123
├── Preview URL: https://pr-123.helipod.app
└── Database: Isolated, safe for testing

Use Case 3: Hotfix Production

Situasi: Bug production, perlu fix sekarang

# 1. Buat hotfix branch
git checkout -b hotfix/critical-bug

# 2. Database branch otomatis dibuat
# Tapi ini dari production data!

# 3. Fix bug
# 4. Test di database branch
# 5. Merge ke main → Auto-deploy ke production

Best Practices

1. Naming Pattern yang Konsisten

# Gunakan pattern yang jelas
pr-{number}        → Pull request branches
staging            → Staging environment
feature-{name}     → Feature branches
hotfix-{name}      → Hotfix branches

2. Limit Branch Count

# Neon free tier: max 10 branches
# Neon pro: max 100 branches

# Pastikan cleanup otomatis jalan
# Delete branch saat PR closed/merged

3. Connection Pooling untuk Branches

# Setiap branch butuh connection pooling
DATABASE_URL="postgresql://[email protected]/dbname?pgbouncer=true"

4. Monitoring

# Monitor branch usage
# Di Helipod dashboard: Settings → Integrations → Neon
# Lihat jumlah branches dan storage usage

FAQ

Berapa biaya Neon untuk CI/CD?

Neon free tier mendukung 10 branches dengan 512MB storage. Untuk kebutuhan CI/CD yang lebih besar, Neon Pro tersedia mulai $19/bulan.

Apakah database branch otomatis cleanup?

Ya! Di Helipod, kamu bisa setup cleanup otomatis saat environment dihapus. Untuk GitHub Actions, tambahkan workflow cleanup seperti yang dijelaskan di atas.

Bagaimana jika butuh production data di branch?

Kamu bisa clone production branch ke feature branch. Data akan di-copy secara instan tanpa downtime.

Bisakah saya pindah dari Supabase/Other ke Neon?

Ya! Lihat tutorial migrasi database ke serverless PostgreSQL.

Checklist Setup CI/CD

  • Setup Neon + Helipod
  • Konfigurasi GitHub Actions workflow
  • Setup cleanup workflow
  • Test dengan PR pertama
  • Monitor branch usage

Kesimpulan

Database branching untuk CI/CD bukan lagi fitur "nice to have" — ini sudah jadi kebutuhan untuk tim development yang serius. Dengan Neon + Helipod, kamu bisa dapat:

  • ✅ Database branch otomatis untuk setiap PR
  • ✅ Cleanup otomatis saat PR di-merge
  • ✅ Isolasi sempurna antar PR
  • ✅ Zero-config setup

Butuh bantuan setup? Hubungi [email protected]

Baca juga:

Siap coba Helipod?

Deploy aplikasi kamu sekarang. Gratis, tanpa kartu kredit.

Mulai Gratis →