Skip to content

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-site pada MinIO.

Final Pipeline Flow

Personal Site CI Pipeline

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:

  1. TN-001 β€” Initialize Jenkins Controller & Environment

    Menyiapkan Jenkins Controller, environment, dan plugin yang diperlukan.

  2. TN-002 β€” Deploy & Configure SSH Agent Node

    Menyiapkan builder-01 sebagai execution node untuk pipeline.

  3. TN-003 β€” Configure Gitea Repository Access

    Menghubungkan Jenkins dengan repository Personal Site pada Gitea.

  4. TN-004 β€” Create Jenkinsfile

    Membuat definisi stage CI sebagai Pipeline as Code.

  5. TN-005 β€” Create Build Pipeline & Execute Initial Test

    Membuat Jenkins job dari SCM dan menjalankan pengujian awal.

  6. 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.html tersedia 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.

Untuk alur yang berlaku saat ini, gunakan dokumentasi CI/CD. Engineering Journal ini digunakan ketika konteks perjalanan implementasi atau riwayat troubleshooting diperlukan.