Rencana Build (Dockerfile & zbpack)
Layanan Git dibangun di mesin build Zenavo dengan BuildKit. Cara sebuah layanan dibangun adalah rencana build-nya, yang bisa Anda pratinjau sebelum deploy.
Dockerfile
Jika direktori root layanan berisi Dockerfile, file itu dipakai apa adanya. Atur path lain di Advanced Settings → Dockerfile path saat menambahkan layanan, atau nanti di tab Settings layanan → Dockerfile (misalnya deploy/api.Dockerfile, relatif terhadap direktori root).
zbpack
Tanpa Dockerfile, zbpack mendeteksi bahasa dan framework lalu membuatkannya. zbpack mendukung Node.js, Bun, Deno, Python, Go, PHP, Ruby, Java, Rust, .NET, situs statis, dan lainnya. zbpack juga dipakai bila repositori punya file zbpack.json, atau layanan punya variabel lingkungan ZBPACK_*, yang mengatur zbpack (misalnya perintah build dan start-nya).
Image yang dibangun zbpack mendengarkan di port 8080, jadi itulah port HTTP layanan kecuali Anda mengatur yang lain.
zbpack options
Di tab Settings layanan → Build → zbpack options, masukkan satu KEY=value per baris:
- Kunci yang diawali
ZBPACK_, sepertiZBPACK_BUILD_COMMAND=npm run buildatauZBPACK_START_COMMAND=node dist/server.js, diteruskan ke zbpack sebagai variabel. Kunci ini lebih diutamakan daripada variabelZBPACK_*di tab Variables. - Kunci lain ditulis ke
zbpack.<service>.jsondi direktori root, sama seperti filezbpack.jsondi repositori. Nilai yang ditulis sebagai JSON ({…},[…],true, ataufalse) mempertahankan tipenya.
Mengatur opsi zbpack apa pun membuat layanan dibangun dengan zbpack, bahkan bila direktori root punya Dockerfile.
Argumen build
Di tab Settings → Build → Build arguments, masukkan satu KEY=value per baris. Masing-masing diteruskan ke build: Dockerfile Anda sendiri membacanya dengan baris ARG bernama sama, dan di Dockerfile buatan zbpack, Zenavo menambahkan baris ARG itu ke setiap stage yang menjalankan perintah. Variabel di tab Variables tidak otomatis diteruskan ke build; untuk memakainya, rujuk dengan ${KEY}, misalnya VITE_API_URL=${API_URL}.
Nilainya disembunyikan di log build, tetapi sebuah nilai bisa dibaca dari riwayat image yang dibangun bila stage yang mendeklarasikannya ada di image akhir, dan dari output bila build menuliskannya di sana. Teruskan rahasia sebagai argumen build hanya bila build membutuhkannya.
Direktori root
Untuk monorepo, atur Root Directory ke folder layanan, seperti /apps/api, saat menambahkan layanan atau nanti di tab Settings. Build memakai folder itu sebagai konteksnya, baik untuk Dockerfile maupun zbpack. Folder itu harus berada di dalam repositori.
Untuk men-deploy ulang hanya saat folder itu berubah, atur watch paths layanan.
Di manifest
Tab Settings menyimpan field berikut dari source layanan di manifest proyek; Anda juga bisa mengaturnya di manifest yang diekspor atau diimpor:
"source": {
"git": "https://github.com/acme/mono",
"ref": "main",
"context": "apps/api",
"dockerfile": "Dockerfile",
"build_args": { "NODE_ENV": "production" },
"zbpack": { "ZBPACK_BUILD_COMMAND": "npm run build" },
"auto_deploy": true,
"watch_paths": ["apps/api/", "packages/shared/"]
}Build Plan Preview
Pratinjau meng-clone branch dan melaporkan apa yang akan dipakai build, tanpa membangun atau menjalankan apa pun:
| Baris | Contoh |
|---|---|
| Provider | Dockerfile, go, nodejs, python… |
| Versions | Go Version 1.26.1, Node.js Version 22 |
| Port | Dari EXPOSE Dockerfile, atau 8080 untuk zbpack |
Batas
Build berbagi mesin build Zenavo dan masuk antrean saat mesin sibuk. Satu build, termasuk clone, boleh berjalan selama batas build terlama paket: 15 menit di Free, 30 di Dev, dan 60 di Pro, Team, dan Enterprise; clone sendiri dibatasi 10 menit. Build yang mencapai batas dihentikan, deploy gagal, dan menitnya tetap dihitung. Lihat Penggunaan & Tagihan untuk menit build per paket.