feat: add package creation and clone validation
This commit is contained in:
125
report/xx-build-deploy-cpone-middleware.md
Normal file
125
report/xx-build-deploy-cpone-middleware.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# Build & Deploy CPONE Middleware — devcpone.aplikasi.web.id
|
||||
|
||||
## Ringkasan
|
||||
|
||||
Build lokal commit `1ee0cfb` (HEAD) dikirim dan di-deploy ke
|
||||
`one@devcpone.aplikasi.web.id`, lalu service `cpone-middleware.service`
|
||||
di-restart. Service aktif dan endpoint sudah diverifikasi.
|
||||
|
||||
## Hasil Build
|
||||
|
||||
| Item | Nilai |
|
||||
| :--- | :--- |
|
||||
| Target build | `./cmd/server` |
|
||||
| Platform | linux/amd64 |
|
||||
| Flags | `CGO_ENABLED=0 -trimpath -ldflags="-s -w"` |
|
||||
| Ukuran binary | 7,159,992 bytes (statically linked, stripped) |
|
||||
| SHA-256 | `0287e519926ba44c08df0d2a137930ae60028bfb49822139dd3e578864ab008e` |
|
||||
|
||||
Test dan vet sebelum build:
|
||||
|
||||
```text
|
||||
go test ./... -> ok
|
||||
go vet ./... -> ok
|
||||
```
|
||||
|
||||
## Konfigurasi Server
|
||||
|
||||
Build `HEAD` memakai arsitektur baru: database management (`CPONE_DB_*`)
|
||||
plus registry koneksi per rumah sakit, menggantikan koneksi tunggal `DB_*`.
|
||||
Karena itu `.env` server di-update.
|
||||
|
||||
| Kunci lama | Status | Keterangan |
|
||||
| :--- | :--- | :--- |
|
||||
| `DB_HOST/DB_PORT/DB_DATABASE/DB_USERNAME/DB_PASSWORD` | dihapus | Tidak dipakai build baru |
|
||||
| `CPONE_DB_HOST/PORT/DATABASE/USERNAME/PASSWORD` | baru | Management DB lokal MySQL |
|
||||
| `CPONE_BEARER_TOKEN` | tetap | `MYmIZGwkLQUjmFHiL2kgrOjhUyZnk507oBD2BDwM` |
|
||||
| `CPONE_DATABASE_SETTINGS_TOKEN` | tidak diset | Fallback ke bearer token |
|
||||
| `CPONE_DATABASE_CREDENTIAL_KEY` | tidak diset | Fallback ke bearer token |
|
||||
|
||||
Nilai management DB baru di `/home/one/apps/.env`:
|
||||
|
||||
| Kunci | Nilai |
|
||||
| :--- | :--- |
|
||||
| `CPONE_DB_HOST` | `127.0.0.1` |
|
||||
| `CPONE_DB_PORT` | `3306` |
|
||||
| `CPONE_DB_DATABASE` | `cpone_middleware` |
|
||||
| `CPONE_DB_USERNAME` | `admin` |
|
||||
| `CPONE_DB_PASSWORD` | `Sasone!102938` |
|
||||
|
||||
Pada startup, service otomatis membuat database `cpone_middleware` beserta
|
||||
tabel `hospitals` dan `hospital_databases` (user `admin` punya hak
|
||||
`CREATE DATABASE`).
|
||||
|
||||
## Setting Rumah Sakit
|
||||
|
||||
Disamakan dengan environment lokal developer. Di-seed lewat API
|
||||
`POST /api/cpone/database-settings` setelah service jalan:
|
||||
|
||||
| Field | Nilai |
|
||||
| :--- | :--- |
|
||||
| `kode_rs` | `AWALBROS_DEV` |
|
||||
| `nama` | `RS Dev Awalbros` |
|
||||
| `host` | `his.sismedika.online` |
|
||||
| `port` | `3306` |
|
||||
| `database` | `rsabt201107` |
|
||||
| `username` | `remote` |
|
||||
|
||||
Password HIS disimpan terenkripsi (AES-GCM) di tabel `hospital_databases`;
|
||||
response API hanya menampilkan `has_password`.
|
||||
|
||||
## Verifikasi
|
||||
|
||||
| Cek | Hasil |
|
||||
| :--- | :--- |
|
||||
| `GET /healthz` | `{"success":true,"message":"ok","data":null}` |
|
||||
| `GET /api/cpone/hospitals` | Mengembalikan `AWALBROS_DEV` |
|
||||
| `GET /api/cpone/layanan?page=1` + `X-RS-Code` | Data HIS ter-load |
|
||||
| Tanpa `X-RS-Code` | 422 sesuai desain baru |
|
||||
| Service state | `active (running)`, MainPID stabil |
|
||||
|
||||
## Cara Restart (tanpa sudo)
|
||||
|
||||
`sudo systemctl restart cpone-middleware` butuh password (hanya
|
||||
`apache2.service` yang NOPASSWD). Service berjalan sebagai user `one` dan
|
||||
memakai `Restart=always`, jadi restart dilakukan dengan `kill` pada PID
|
||||
utama; systemd otomatis start ulang dengan binary baru:
|
||||
|
||||
```bash
|
||||
kill $(systemctl show cpone-middleware.service -p MainPID --value)
|
||||
```
|
||||
|
||||
## Backup & Rollback
|
||||
|
||||
File cadangan di `/home/one/apps/`:
|
||||
|
||||
| File | Isi |
|
||||
| :--- | :--- |
|
||||
| `cpone-middleware.before-1ee0cfb` | Binary lama (commit 3e5cae4) |
|
||||
| `.env.bak-20260828` | .env lama (koneksi DB tunggal) |
|
||||
|
||||
Rollback:
|
||||
|
||||
```bash
|
||||
cd /home/one/apps
|
||||
cp -p cpone-middleware.before-1ee0cfb cpone-middleware
|
||||
cp -p .env.bak-20260828 .env
|
||||
kill $(systemctl show cpone-middleware.service -p MainPID --value)
|
||||
```
|
||||
|
||||
## Catatan Penting
|
||||
|
||||
Build baru WAJIB mengirim `X-RS-Code` (atau query `?kode_rs=`) pada semua
|
||||
endpoint bisnis. Controller PHP yang memanggil `127.0.0.1:8282/api/cpone`
|
||||
saat ini belum mengirim header tersebut, sehingga akan menerima 422 sampai
|
||||
controller PHP di-update untuk mengirim `X-RS-Code: AWALBROS_DEV`.
|
||||
|
||||
Untuk production, sebaiknya set `CPONE_DATABASE_SETTINGS_TOKEN` dan
|
||||
`CPONE_DATABASE_CREDENTIAL_KEY` dengan nilai berbeda dari bearer token,
|
||||
serta pakai user MySQL khusus (bukan `admin`).
|
||||
|
||||
## Documentation Updates Needed
|
||||
|
||||
### docs/ (tidak ada perubahan perlu; repo tidak punya direktori docs)
|
||||
|
||||
Tidak ada file dokumentasi yang perlu diubah di repository ini.
|
||||
Reference in New Issue
Block a user