# Setup GitHub + cPanel Git Rumahweb - Step 6

Dokumen ini adalah alur final agar development tidak lagi dilakukan dengan edit manual di File Manager hosting.

## Target alur kerja

```text
Local/Laptop -> GitHub private repository -> cPanel Git staging -> cPanel Git production
```

## Branch standar

| Branch | Fungsi | Deploy ke |
|---|---|---|
| `develop` | pekerjaan harian dan uji coba | staging |
| `main` | versi live yang sudah lulus test | production |

## Setup GitHub private repository

1. Buat repository private di GitHub.
2. Upload isi folder project ini ke repository.
3. Pastikan file `.env` tidak ikut masuk Git.
4. Push awal:

```bash
git init
git add .
git commit -m "Initial clean structure step 6"
git branch -M main
git remote add origin git@github.com:USERNAME/NAMA_REPO.git
git push -u origin main

git checkout -b develop
git push -u origin develop
```

## Setup cPanel Git untuk staging

1. Masuk cPanel Rumahweb.
2. Buka **Git Version Control**.
3. Clone repository dari GitHub.
4. Pilih branch `develop` untuk staging.
5. Deployment path contoh:

```text
/home/USERNAME/public_html/staging-perawat/
```

6. Copy template berikut menjadi `.cpanel.yml`:

```text
deploy/cpanel/cpanel-staging.yml
```

7. Ganti `USERNAME` sesuai username cPanel.
8. Klik **Update from Remote** lalu **Deploy HEAD Commit**.

## Setup cPanel Git untuk production

1. Buat clone kedua di cPanel Git, atau gunakan repository deployment production terpisah.
2. Pilih branch `main`.
3. Deployment path contoh:

```text
/home/USERNAME/public_html/perawat/
```

4. Copy template:

```text
deploy/cpanel/cpanel-production.yml
```

5. Ganti `USERNAME`.
6. Production hanya deploy setelah staging lulus test.

## Perintah wajib setelah deploy pertama

Masuk Terminal cPanel pada folder target staging/production:

```bash
cp deploy/env/.env.staging.template .env
nano .env
php scripts/post_deploy.php
php scripts/preflight.php
php scripts/healthcheck.php
php scripts/migrate.php status
```

Untuk production gunakan:

```bash
cp deploy/env/.env.production.template .env
nano .env
php scripts/post_deploy.php
php scripts/preflight.php
php scripts/healthcheck.php
php scripts/migrate.php status
```

## Catatan penting

- `.env` tidak boleh masuk Git.
- `uploads/` tidak boleh ikut tertimpa deploy.
- `storage/backups/` tidak boleh ikut tertimpa deploy.
- Production wajib backup database dan file sebelum deploy.
