Files
cpone_midleware/report/xx-build-deploy-cpone-middleware.md

4.0 KiB

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:

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:

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:

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.