TN-005 β Implement Production-Ready CI Pipeline for Tomcat Diagnostic Event Collector¶
| Field | Value |
|---|---|
| Status | Completed |
| Activity Type | Implementation |
| Record Type | Live |
| Project | Tomcat Monitoring |
| Phase | Continuous Integration and Deployment |
| Activity Date | 2026-09-12 |
| Recorded Date | 2026-09-12 |
| Owner | Eddy Wiyatno |
| Working Mode | Write |
| Authorization Status | Approved |
| Approved By | Eddy Wiyatno |
| Approval Date | 2026-09-12 |
π― Objective¶
Mengimplementasikan berkas pipeline (alur otomasi pengiriman) deklaratif Jenkinsfile berstandar Enterprise Production-Ready pada repositori tomcat-diagnostic-event-collector guna mengotomatisasi siklus Continuous Integration (CI) daemon (layanan latar belakang sistem) pengawas event kontainer host (Bash 5.0, Podman events stream, dan skema JSON event-record-v1) sesuai arsitektur TM-ADR-0024, desain CI/CD TN-001, dan standarisasi repositori TN-003.
Target Utama & Kriteria Keberhasilan:
- Deklarasi Pipeline as Code: Menyusun berkas
Jenkinsfileberbasis Declarative Pipeline Syntax yang mengeksekusi tahapan CI secara terstruktur pada dedicated build agent (agen pekerja build khusus) berlabelbuilder(berbasis Rootless Podman / DooD β Docker-out-of-Docker via Podman socket). - Gerbang Mutu Bertingkat (Quality Gates): Mengintegrasikan 4 tahapan quality gates (gerbang pengujian mutu bertingkat) berurutan secara otomatis mencakup Checkout Source Code, Verifikasi Non-Root Build Agent, Static Lint & ShellCheck Governance (
scripts/validate.sh), dan Spool Lifecycle & Pruning Test (test/test-collector.sh). - Penyelarasan Tata Kelola Repositori: Memperbarui validator tata kelola
scripts/validate.shuntuk mewajibkan keberadaan berkasJenkinsfiledalam arrayrequired_files. - Pembersihan Bersih (Post-Build Workspace Hygiene): Penegakan direktif
cleanWspada blokpost.alwaysuntuk menjamin workspace hygiene (kebersihan ruang kerja pasca-build) tanpa meninggalkan artefak sementara di build agent.
π Background¶
Pada tahapan perancangan arsitektur TN-001 dan standarisasi repositori TN-003, seluruh skrip operasional pada tomcat-diagnostic-event-collector telah distandarisasi untuk mendukung pengujian headless (tanpa antarmuka grafis) yang deterministik serta penegakan batas retensi spool host (Zero Unbounded Spool).
Sebelumnya, pengembang harus menjalankan perintah validate.sh dan test-collector.sh secara manual di terminal workstation. Dengan mengimplementasikan berkas Jenkinsfile deklaratif ini, setiap commit (rekaman perubahan) atau pull request (pengajuan penggabungan kode) pada repositori tomcat-diagnostic-event-collector akan diverifikasi secara otomatis, deterministik, dan bebas intervensi manual oleh Jenkins Controller melalui gerbang pengujian berlapis (fail-fast quality gates).
π Scope¶
Pekerjaan implementasi pipeline CI ini mencakup:
- Pembuatan Berkas Pipeline as Code:
- Penulisan berkas deklaratif
Jenkinsfilepada root repositoritomcat-diagnostic-event-collector. - Penyelarasan Validator Tata Kelola:
- Pendaftaran berkas
Jenkinsfilepada daftarrequired_filesdiscripts/validate.sh. - Verifikasi Lokal Seluruh Tahapan:
- Eksekusi simulasi seluruh tahapan (Stages 1 s.d. 4) pada lingkungan build agent untuk memastikan kelulusan 100%.
- Exclusions:
- Pendaftaran fisik job multibranch pada antarmuka web Jenkins Controller (dijadwalkan pada TN-007).
- Implementasi pipeline CD untuk stack orchestrator
tomcat-monitoring(dijadwalkan pada TN-006).
π Prerequisites¶
- Runtime Podman rootless aktif pada agent eksekusi (
builder). - Toolchain
bash($\ge 5.0$),python3, danpodmantersedia pada lingkungan agent. - Repositori
tomcat-diagnostic-event-collectordalam status bersih (clean working tree) pasca-standarisasi TN-003. - Persetujuan Implementation Scope untuk penulisan berkas CI pipeline.
βοΈ Execution Decision¶
Mengadopsi keputusan arsitektur TM-ADR-0024:
- Memilih model Decoupled Component CI untuk repositori mikrokomponen host daemon tomcat-diagnostic-event-collector agar memberikan fast feedback loop (siklus umpan balik pengujian cepat dalam hitungan detik) secara mandiri tanpa membebani repositori orkestrator stack.
- Menggunakan pola Docker-out-of-Docker (DooD) via Rootless Podman Socket pada agent pekerja (builder) untuk menjamin keamanan tanpa hak akses sudo atau eskalasi hak istimewa (privilege escalation).
π§ Implementation Plan¶
| Tahap | Rencana |
|---|---|
| Create Declarative Jenkinsfile | Menulis berkas deklaratif Jenkinsfile dengan 4 tahapan (stages) quality gates dan penanganan post-build workspace hygiene. |
| Update Repository Governance Validator | Mendaftarkan berkas Jenkinsfile ke dalam daftar required_files pada scripts/validate.sh. |
| Verify Local Pipeline Stage Execution | Mengeksekusi seluruh tahapan pipeline secara lokal untuk memastikan kelulusan deterministik 100% dan mencatat commit ke Git. |
βοΈ Implementation¶
flowchart TD
subgraph CI_Pipeline["Event Collector CI Pipeline (Jenkinsfile)"]
S1["Stage 1: Checkout Source<br/>(Git SCM & Core Files)"]
S2["Stage 2: Verify Agent<br/>(Rootless: true)"]
S3["Stage 3: Static Lint<br/>& ShellCheck (validate.sh)"]
S4["Stage 4: Spool Lifecycle<br/>& Pruning Test (test-collector.sh)"]
P1["Post Actions:<br/>cleanWs & Notification"]
S1 --> S2 --> S3 --> S4 --> P1
end
Create Declarative Jenkinsfile¶
Membuat berkas deklaratif Jenkinsfile pada root repositori tomcat-diagnostic-event-collector:
- Menentukan agen target:
- Mendefinisikan variabel lingkungan:
- Menyusun blok tahapan eksekusi (stages) mencakup checkout dan verifikasi berkas kunci, verifikasi lingkungan agent rootless, validasi tata kelola statis & ShellCheck, serta pengujian siklus hidup dan pemangkasan direktori spool host.
- Menambahkan blok pembersihan pada
post.always:
Expected Result
Berkas Jenkinsfile terbuat dengan sintaksis deklaratif Jenkins yang valid dan terstruktur rapi.
Update Repository Governance Validator¶
Menyelaraskan skrip validator tata kelola di tomcat-diagnostic-event-collector:
- Mendaftarkan
Jenkinsfileke dalam daftar berkas wajib padascripts/validate.sh:
Expected Result
Skrip scripts/validate.sh memvalidasi keberadaan berkas Jenkinsfile sebagai kontrak baku repositori.
Verify Local Pipeline Stage Execution¶
Mengeksekusi simulasi seluruh tahapan pipeline CI secara berurutan pada lingkungan lokal:
- Validasi tata kelola baseline dan skema JSON:
- Eksekusi pengujian siklus hidup spool dan retensi kuota FIFO:
- Melakukan commit perubahan ke sistem kontrol versi Git:
Expected Result
Seluruh tahapan pipeline CI dieksekusi tanpa kesalahan, pengujian unit spool dan pemangkasan lulus 100%, serta perubahan tercatat rapi pada riwayat Git.
β Verification¶
Hasil eksekusi verifikasi tahapan pipeline CI pada repositori tomcat-diagnostic-event-collector:
| Tahapan Pipeline (Pipeline Stage) | Perintah Eksekusi | Hasil Aktual (Actual Result) | Status |
|---|---|---|---|
| Stage 1 β Checkout & Core Files | test -f src/collector.sh test/test-collector.sh scripts/validate.sh CONFIG VERSION PROJECT AGENTS.md README.md Jenkinsfile |
Seluruh 9 berkas kontrak inti tersedia. | π’ PASS |
| Stage 2 β Agent Mode & Toolchain | podman info --format '{{.Host.Security.Rootless}}' |
Output: true (Non-Root Execution terkonfirmasi). |
π’ PASS |
| Stage 3 β Static Lint & Governance | bash scripts/validate.sh |
Validasi baseline governance dan metadata tomcat-diagnostic-event-collector berhasil. | π’ PASS |
| Stage 4 β Spool Lifecycle & Pruning Test | bash test/test-collector.sh |
Spool perms 0700, JSON perms 0600, Schema valid, Pruning Test A/B/C passed. Collector Component Test PASSED. | π’ PASS |
βοΈ Commands Executed¶
Seluruh perintah yang dieksekusi selama aktivitas implementasi ini dicatat dalam indeks berikut:
| Kategori Tahapan | Perintah yang Dijalankan | Cakupan / Target |
|---|---|---|
| Pemeriksaan Repositori | git -C /home/eddywiyatno/git/tomcat-diagnostic-event-collector status |
Memastikan direktori kerja bersih sebelum perubahan |
| Penyusunan Jenkinsfile | Penulisan berkas Jenkinsfile deklaratif |
Pembuatan kontrak otomasi CI daemon event collector |
| Penyelarasan Validator | Modifikasi scripts/validate.sh |
Pendaftaran Jenkinsfile ke array required_files |
| Simulasi CI Pipeline | cd /home/eddywiyatno/git/tomcat-diagnostic-event-collector./scripts/validate.sh./test/test-collector.sh |
Menjalankan seluruh tahapan CI secara berurutan |
| Source Control Commit | git -C /home/eddywiyatno/git/tomcat-diagnostic-event-collector add Jenkinsfile scripts/validate.sh && git commit -m "ci(pipeline): ..." |
Menyimpan rekaman perubahan berstandar Conventional Commits |
π§Ύ Outcome¶
- Berkas Declarative Jenkinsfile Terimplementasi: Repositori
tomcat-diagnostic-event-collectortelah dilengkapi dengan berkasJenkinsfiledeklaratif berstandar enterprise yang mencakup 4 tahapan quality gates. - Kepatuhan Tata Kelola Enterprise: Pipeline memverifikasi kepatuhan isolasi eksekusi non-root (
Rootless Podman), validitas skema JSON telemetry (event-record-v1.schema.json), dan pembuktian batas kapasitas spool host (Zero Unbounded Spool). - Kesiapan Pendaftaran Job Jenkins Controller: Repositori siap diregistrasikan sebagai multibranch pipeline job pada Jenkins Controller pada tahap verifikasi akhir TN-007.
π Lessons Learned¶
- Pemisahan Pipeline Micro-daemon dari OCI Build: Komponen yang beroperasi sebagai host daemon tidak memerlukan tahapan pembuatan OCI image (
buildah build) atau publikasi ke registry, melainkan difokuskan pada analisis statis dan simulasi siklus hidup berkas spool. - Pengujian Siklus Retensi Spool Terisolasi: Menggunakan utilitas
mktemp -ddengan trap handlerrm -rfmenjamin pengujian retensi berkas spool berjalan aman dan tidak mencemari direktori pengguna host maupun direktori bersama/tmp. - Pentingnya Pemeriksaan Berkas Wajib (Required Files Governance): Memasukkan
Jenkinsfileke dalam validatorscripts/validate.shmemastikan kontrak Pipeline as Code tidak terhapus secara tidak sengaja pada pengembangan selanjutnya.
βοΈ Next Steps¶
flowchart TD
A["Completed<br/>TN-004: Diagnostic Service CI"] --> B["Completed<br/>TN-005: Event Collector CI<br/>(ShellCheck & Spool)"]
B --> C["Next Stage<br/>TN-006: Stack CD Hub Pipeline<br/>(Atomic Deploy & Rollback)"]
C --> D["Next Stage<br/>TN-007: Live Verification<br/>(Jenkins Controller)"]
Setelah implementasi CI pipeline pada tomcat-diagnostic-event-collector selesai, langkah implementasi selanjutnya adalah:
- Melanjutkan ke tahap TN-006 β Implement Stack Orchestration CD Pipeline for
tomcat-monitoringuntuk mengimplementasikan alur orkestrasi deployment platform multi-kontainer, integrasi network Podmandevops-lab, validasi konfigurasi Prometheus/Alertmanager/Postfix, dan mekanisme automated rollback. - Melanjutkan ke tahap TN-007 β Execute and Verify End-to-End CI/CD Pipelines in Jenkins Controller untuk registrasi job multibranch, eksekusi build live, dan pembuktian skenario insiden secara otomatis.
π Related Documentation¶
- Continuous Integration and Deployment Phase Index
- TN-001 β Design Production-Ready Jenkins CI/CD Pipeline Architecture and Implementation Roadmap
- TN-002 β Audit and Standardize Repositories for Production Plug-and-Play Readiness
- TN-003 β Standardize Repositories for Production Plug-and-Play Readiness
- TN-004 β Implement Production-Ready CI Pipeline for Tomcat Diagnostic Service
- TM-ADR-0024 β Adopt Decoupled Component CI and Orchestrated Stack CD Pipeline Architecture
- Engineering Journal Standards
- Writing Standards
- Repositori
tomcat-diagnostic-event-collector - Berkas
JenkinsfileEvent Collector