Continuous Integration Engineering Journal¶
Overview¶
Bagian ini mencatat perjalanan engineering fase Continuous Integration (CI) Personal Site, mulai dari persiapan Jenkins hingga pipeline berhasil membangun static site Hugo dan menyimpan artifact ke MinIO.
Technical Note disusun menurut urutan implementasi. Dokumen di bagian ini mempertahankan konteks historis, termasuk kondisi awal, keputusan implementasi, hasil pengujian, dan masalah yang ditemukan selama pembangunan pipeline.
Objective¶
Membangun pipeline CI yang dapat:
- mengambil source code Personal Site dari Gitea;
- menjalankan build Hugo di dalam ephemeral Podman container;
- memvalidasi hasil static site;
- mengemas direktori
public/sebagai immutable artifact; dan - mengunggah artifact ke bucket
personal-sitepada MinIO.
Final Pipeline Flow¶
Gitea
β
Jenkins Controller
β
builder-01
β
Hugo container β public/
β
personal-site-<BUILD_NUMBER>.tar.gz
β
MinIO bucket: personal-site
Implementation Result¶
| Component | Implementation | Status |
|---|---|---|
| Source control | Gitea repository personal-site |
Completed |
| Pipeline definition | personal-site/Jenkinsfile |
Completed |
| Jenkins execution node | SSH agent builder-01 |
Completed |
| Build environment | Rootless Podman and Hugo container | Completed |
| Static-site validation | Require public/index.html |
Completed |
| Artifact format | personal-site-<BUILD_NUMBER>.tar.gz |
Completed |
| Artifact storage | MinIO bucket personal-site |
Completed |
Technical Notes¶
Technical Note sebaiknya dibaca secara berurutan:
-
TN-001 β Initialize Jenkins Controller & Environment
Menyiapkan Jenkins Controller, environment, dan plugin yang diperlukan.
-
TN-002 β Deploy & Configure SSH Agent Node
Menyiapkan
builder-01sebagai execution node untuk pipeline. -
TN-003 β Configure Gitea Repository Access
Menghubungkan Jenkins dengan repository Personal Site pada Gitea.
-
Membuat definisi stage CI sebagai Pipeline as Code.
-
TN-005 β Create Build Pipeline & Execute Initial Test
Membuat Jenkins job dari SCM dan menjalankan pengujian awal.
-
TN-006 β Execute CI Pipeline Initial Test
Memverifikasi build Hugo, artifact packaging, dan publish ke MinIO.
Output of This Phase
Fase CI menghasilkan artifact dengan kontrak berikut:
Object name : personal-site-<BUILD_NUMBER>.tar.gz
Content : public/
Storage : MinIO
Bucket : personal-site
Artifact tersebut menjadi satu-satunya input release bagi pipeline CD. Hugo tidak melakukan build ulang pada fase deployment.
Lessons Learned¶
- Hugo theme yang dikelola sebagai Git submodule harus diinisialisasi sebelum build dijalankan.
- Exit code Hugo saja belum cukup membuktikan artifact layak digunakan;
pipeline harus memastikan
public/index.htmltersedia dan tidak kosong. - Variable yang diteruskan ke ephemeral container harus diekspor secara eksplisit agar nilainya tersedia di dalam container.
- Artifact CI harus memiliki identitas build yang dapat ditelusuri dan menjadi satu-satunya input release untuk pipeline CD.
Related Documentation¶
- Continuous Deployment Engineering Journal
- Personal Site Engineering Journal
- Personal Site CI/CD Artifact Pipeline
Untuk alur yang berlaku saat ini, gunakan dokumentasi CI/CD. Engineering Journal ini digunakan ketika konteks perjalanan implementasi atau riwayat troubleshooting diperlukan.