Deploy & Publish¶
Panduan proses build, tagging, dan auto deploy dokumentasi ke production.
Alur Deploy¶
Edit Konten → Git Push → Auto Build → Tag Version → Auto Deploy
| Step | Aksi | Trigger |
|---|---|---|
| 1 | Edit file markdown | Manual |
| 2 | Git commit & push | Manual |
| 3 | Docker image build | Otomatis (setiap push) |
| 4 | Buat tag version | Manual |
| 5 | Deploy ke production | Otomatis (saat tag dibuat) |
Step 1: Edit & Commit¶
Setelah melakukan perubahan, commit dan push:
# Cek perubahan
git status
# Stage file yang berubah
git add docs/path/ke/file.md
# Commit
git commit -m "deskripsi perubahan"
# Push ke repository
git push origin main
Jangan push file besar tanpa perlu
Hindari commit file video (.mp4) atau gambar besar (>1MB) kecuali memang diperlukan. Ini akan memperbesar ukuran repository.
Step 2: Build Otomatis¶
Setelah push, GitLab CI/CD otomatis akan:
- Build Docker image dengan MkDocs
- Push image ke container registry
Proses ini berjalan di background dan tidak perlu intervensi.
Step 3: Deploy ke Production¶
Deploy hanya terjadi saat membuat tag dengan format v*.*.*:
# Buat tag versi baru
git tag v0.3.0
# Push tag
git push origin v0.3.0
Format Versi¶
Gunakan Semantic Versioning:
v[MAJOR].[MINOR].[PATCH]
| Tipe | Kapan Digunakan | Contoh |
|---|---|---|
| MAJOR | Perubahan besar / redesign | v1.0.0 |
| MINOR | Tambah app baru / modul baru | v0.3.0 |
| PATCH | Fix typo, update konten kecil | v0.2.08 |
Cek Tag Terakhir¶
git tag -l --sort=-version:refname | head -5
Step 4: Verifikasi¶
Setelah deploy, cek site production:
- Buka docs.garudea.com
- Pastikan perubahan sudah tampil
- Cek navigasi dan gambar
Waktu Deploy
Deploy biasanya memakan waktu 2-5 menit setelah tag di-push, tergantung ukuran image dan kecepatan server.
Testing Lokal Sebelum Deploy¶
Selalu test secara lokal sebelum push:
Preview dengan MkDocs¶
mkdocs serve
Build Strict (mendeteksi error)¶
mkdocs build --strict
Jika ada warning atau error, perbaiki sebelum push.
Test dengan Docker (opsional)¶
docker build -t garudea-docs-test .
docker run -d -p 8080:80 garudea-docs-test
# Buka http://localhost:8080
Troubleshooting¶
Build gagal¶
ERROR - Config value 'nav': ...
Penyebab: Path file di nav: salah atau file tidak ada. Solusi: Cek path file dan pastikan file .md sudah ada di lokasi yang benar.
Gambar tidak tampil¶
Penyebab: Nama file gambar tidak sesuai dengan referensi di markdown. Solusi: Pastikan nama file gambar sama persis (case-sensitive) dengan yang ditulis di markdown.
Warning MkDocs 2.0¶
WARNING – MkDocs 2.0 is incompatible with Material for MkDocs
Status: Ini hanya informasi, bukan error. Build tetap berhasil. Abaikan untuk saat ini.
Push gagal: "could not read Username"¶
fatal: could not read Username for 'https://repo.nusatek.id': No such device or address
Penyebab: Git belum menyimpan login untuk repo.nusatek.id. Solusi: Buat Personal Access Token di https://repo.nusatek.id/-/user_settings/personal_access_tokens (scope write_repository), lalu simpan sekali di terminal:
git config --global credential.helper store
git push # masukkan username, dan token sebagai password
Setelah itu push berikutnya tidak perlu login lagi. Login tersimpan di ~/.git-credentials dalam bentuk teks biasa, jadi jangan salin atau commit file tersebut. Jika token kedaluwarsa, hapus baris repo.nusatek.id di file itu lalu ulangi langkah di atas.
Pastikan push berhasil sebelum membuat tag
Jika git push gagal, jangan lanjut membuat tag. Tag yang dibuat sebelum commit masuk ke remote akan men-trigger deploy tanpa perubahan terbaru.
Pipeline gagal: "tag does not exist" saat docker push¶
WARNING: No output specified with docker-container driver. Build result will only remain in the build cache.
...
tag does not exist: .../garudea/docs:v3.3.0
Penyebab: Runner GitLab memakai docker buildx dengan driver docker-container. Tanpa opsi --load, hasil build hanya tersimpan di cache dan tidak bisa di-push. Solusi: Pastikan perintah build di .gitlab-ci.yml memakai --load:
- docker buildx build --load . -t ${DOCKER}
Opsi ini sudah ditambahkan sejak v3.3.1. Jika error ini muncul lagi, cek apakah --load masih ada.
Deploy sebuah tag gagal¶
Status pipeline bisa dilihat di repo.nusatek.id/garudea/docs/-/pipelines.
Jika pipeline sebuah tag gagal karena masalah di repository (misalnya .gitlab-ci.yml):
- Perbaiki masalahnya, lalu commit dan push ke
main - Tambahkan entry versi PATCH baru di
docs/references/releasenotes.mdpada bagian### Fixed - Buat dan push tag baru (misalnya
v3.3.0gagal →v3.3.1)
Jangan pindahkan tag yang sudah di-push
Menjalankan ulang (retry) pipeline tag lama tidak akan membantu, karena pipeline tetap memakai .gitlab-ci.yml dari commit tag tersebut. Buat tag baru daripada menghapus dan membuat ulang tag lama.