Lewati ke isi

Deploy & Rilis

Halaman ini menjelaskan prosedur rilis modul ke produksi. Nama host, nama container, path, nama basis data, dan port sengaja tidak ditulis di sini — situs ini terbuka. Nilai konkretnya ada di RUNBOOK_DEPLOY.md pada repo modul, yang tidak ikut diterbitkan.

Urutan rilis

Setelah MR masuk main:

# 1. Backup basis data — selalu, tanpa kecuali
pg_dump -Fc <db> > <folder-backup>/<db>_pre_<perubahan>_$(date +%Y%m%d_%H%M%S).dump

# 2. Tarik kode di direktori addons
git pull --ff-only origin main

# 3. Upgrade modul
odoo -c <odoo.conf> -d <db> -u edig_strategy_core \
  --stop-after-init --workers=0 --max-cron-threads=0

# 4. HANYA bila ada berkas .py yang berubah
#    restart layanan Odoo

Restart wajib bila .py berubah

odoo -u berjalan di proses terpisah dan hanya memperbarui basis data (view, field, data, terjemahan). Worker yang sudah hidup tetap memegang kode Python lama.

Ini pernah terjadi: rilis F14 tanpa restart membuat peramban memuat JS baru yang mengirim parameter owner_id, sementara server menjalankan get_dashboard lama yang menolaknya — dashboard produksi mati ±25 menit dengan pesan "could not load".

Perubahan yang hanya menyentuh XML/JS/SCSS/CSV/PO cukup dengan langkah 3.

Verifikasi setelah rilis

Dua hal yang dicek, keduanya dari dalam server:

  1. Probe kesehatan /web/health mengembalikan 200.
  2. Hitungan restart container tetap 0 — kalau naik, artinya proses gagal hidup dan mengulang sendiri.

Instance multi-database butuh header Host

Bila odoo.conf memakai dbfilter = ^%h$, basis data dipilih dari nama host permintaan. Probe tanpa header Host yang benar tidak akan tahu database mana yang dimaksud dan gagal meski layanan sehat.

Permintaan dari luar bisa diblok WAF (403). Itu bukan indikator pemadaman — selalu uji dari dalam server.

Deploy key GitLab

Deploy key berlaku per proyek. Mengaktifkannya di satu repo tidak berlaku ke repo lain — harus di-Enable di Settings → Repository → Deploy keys pada proyek yang bersangkutan. Gejalanya saat lupa: git clone/pull ditolak dengan permission denied meski kunci yang sama bekerja di repo tetangga.

Dokumentasi

Sumber situs ini ada di folder docs-site/ repo modul dan disalin ke portal dokumentasi bersama saat rilis. Menyimpan sumber MkDocs di repo membuat isinya ikut terlacak bersama kodenya — dokumentasi berubah dalam MR yang sama dengan fiturnya.

Situs ini terbuka

Jangan menulis nama host, path server, nama basis data, port internal, nama container, atau detail jalur akses di halaman mana pun di docs-site/. Semua itu masuk RUNBOOK_DEPLOY.md di repo.