TN-006 β Implement Stack Orchestration CD Pipeline for Tomcat Monitoring¶
| 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 orkestrator tomcat-monitoring untuk mengotomatisasi siklus Continuous Deployment (CD β otomasi peluncuran dan pembaruan sistem secara berkelanjutan) seluruh ekosistem multi-kontainer platform pemantauan (Tomcat JMX Exporter, Prometheus, Alertmanager, Diagnostic Service, Postfix Relay, Mailpit, dan Host Event Collector) sesuai arsitektur TM-ADR-0024, cetak biru CI/CD TN-001, dan standarisasi repositori TN-003.
Target Utama & Kriteria Keberhasilan:
- Deklarasi Stack CD Pipeline as Code: Menyusun berkas
Jenkinsfileberbasis Declarative Pipeline Syntax yang mengorkestrasikan peluncuran platform pada dedicated build agent (agen pekerja build khusus) berlabelbuilder(berbasis Rootless Podman / DooD β Docker-out-of-Docker via Podman socket). - Parameterisasi Fleksibel (6 Pilar Kesiapan Enterprise): Menyediakan parameter deklaratif
DEPLOY_ENV(pilihan:production,staging,lab),REGISTRY_HOST(default:localhost), danEXECUTE_LIVE_TESTS(boolean, default:true) untuk portabilitas lokal maupun Enterprise Container Registry remote. - Penerapan Gerbang Mutu Bertingkat (Multi-Stage Quality Gates): Mengintegrasikan 4 tahapan quality gates (gerbang pengujian mutu bertingkat) mencakup Checkout & Platform Validation (
scripts/validate.sh), Verify Agent & Network Isolation (devops-lab), Zero-Touch Platform Deployment (deploy-*.sh), dan Live Verification Suite & Incident Simulation (scripts/verify-postfix-relay.shdanscripts/test-tomcatdown-live.sh). - Ketahanan Deployment & Automated Rollback: Penegakan mekanisme pre-flight snapshot (pencadangan status kontainer aktif sebelum peluncuran versi baru) dan automated rollback (pemulihan otomatis ke status stabil sebelumnya saat terjadi kegagalan) yang telah tertanam pada skrip deployment dan blok penanganan kegagalan pipeline.
- Pembersihan Bersih (Post-Build Workspace Hygiene): Penegakan direktif
cleanWspada blokpost.alwaysuntuk menjamin workspace hygiene (kebersihan ruang kerja pasca-build).
π Background¶
Platform Tomcat Monitoring tersusun atas arsitektur multi-kontainer yang saling terhubung melalui network bridge Podman devops-lab. Pada fase integrasi observabilitas sebelumnya, seluruh skrip inisialisasi volume persisten, deployment kontainer, dan pengujian insiden telah dibuat dan distandarisasi (TN-003).
Sebelum adanya pipeline deklaratif ini, proses peluncuran multi-layanan masih dieksekusi secara manual satu per satu dari terminal lokal. Dengan mengimplementasikan berkas Jenkinsfile deklaratif ini, repositori tomcat-monitoring bertindak sebagai Stack CD Hub terpadu yang memverifikasi konfigurasi statis, menyiapkan isolasi lingkungan, mengeksekusi zero-touch deployment (peluncuran sistem secara mandiri tanpa intervensi manual pengembang), dan membuktikan keandalan end-to-end melalui simulasi insiden live secara otomatis.
π Scope¶
Pekerjaan implementasi pipeline CD orkestrator ini mencakup:
- Pembuatan Berkas Pipeline as Code:
- Penulisan berkas deklaratif
Jenkinsfilepada root repositoritomcat-monitoring. - Penyelarasan Validator Tata Kelola:
- Pendaftaran berkas
Jenkinsfilepada arrayREQUIRED_FILESdiscripts/validate.sh. - Penguatan Penanganan Host Lookup Relay SMTP:
- Konfigurasi parameter
smtp_host_lookup = dns, nativepadapostfix-relay/entrypoint.shguna menjamin kestabilan resolusi nama downstream relay dalam lingkungan kontainer Podman. - 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).
π Prerequisites¶
- Runtime Podman rootless aktif pada agent eksekusi (
builder). - Network bridge
devops-labaktif dengan DNS plugin terkonfigurasi. - Repositori
tomcat-monitoring,tomcat-diagnostic-service,tomcat-diagnostic-event-collector, danpostfix-relaydalam status bersih (clean working tree). - Persetujuan Implementation Scope untuk penulisan berkas CD pipeline.
βοΈ Execution Decision¶
Mengadopsi keputusan arsitektur TM-ADR-0024:
- Memilih model Orchestrated Stack CD Hub pada repositori tomcat-monitoring sebagai pusat orkestrasi deployment platform multi-kontainer dan verifikasi live end-to-end.
- Menggunakan pola Docker-out-of-Docker (DooD) via Rootless Podman Socket pada agent pekerja (builder) untuk menjamin keamanan tanpa hak akses sudo atau eskalasi privilese (privilege escalation).
π§ Implementation Plan¶
| Tahap | Rencana |
|---|---|
| Create Declarative Jenkinsfile | Menulis berkas deklaratif Jenkinsfile dengan 4 tahapan (stages) CD, parameter enterprise (DEPLOY_ENV, REGISTRY_HOST, EXECUTE_LIVE_TESTS), dan penanganan post actions. |
| Update Repository Governance Validator | Mendaftarkan berkas Jenkinsfile ke dalam array REQUIRED_FILES pada scripts/validate.sh. |
| Verify Local Pipeline Stage Execution | Mengeksekusi seluruh tahapan CD pipeline secara lokal (validate.sh, verify-postfix-relay.sh, test-tomcatdown-live.sh) untuk membuktikan kelulusan deterministik 100% dan mencatat commit ke Git. |
βοΈ Implementation¶
flowchart TD
subgraph CD_Pipeline["Monitoring Stack CD Hub Pipeline (Jenkinsfile)"]
S1["Stage 1: Checkout &<br/>Platform Validation<br/>(validate.sh)"]
S2["Stage 2: Verify Agent<br/>& Network Isolation<br/>(devops-lab / 0700)"]
S3["Stage 3: Zero-Touch<br/>Platform Deployment<br/>(deploy-*.sh scripts)"]
S4["Stage 4: Live Incident<br/>& Relay Verification<br/>(test-tomcatdown-live)"]
P1["Post Actions:<br/>cleanWs & Notification"]
S1 --> S2 --> S3 --> S4 --> P1
end
Create Declarative Jenkinsfile¶
Membuat berkas deklaratif Jenkinsfile pada root repositori tomcat-monitoring:
- Menentukan agen target:
- Mendefinisikan parameter konfigurasi:
parameters { choice(name: 'DEPLOY_ENV', choices: ['production', 'staging', 'lab'], description: 'Target Deployment Environment') string(name: 'REGISTRY_HOST', defaultValue: 'localhost', description: 'Enterprise Container Registry host') booleanParam(name: 'EXECUTE_LIVE_TESTS', defaultValue: true, description: 'Mengeksekusi rangkaian live verification suite pasca-deploy') } - Menyusun blok tahapan eksekusi (stages) mencakup validasi konfigurasi platform, verifikasi isolasi network dan storage
0700, peluncuran multi-layanan secara zero-touch, serta eksekusi live verification suite (verifikasi relay Postfix STARTTLS + SASL dan simulasi insiden TomcatDown). - 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-monitoring:
- Mendaftarkan
Jenkinsfileke dalam daftar berkas wajib pada arrayREQUIRED_FILESdiscripts/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 CD secara berurutan pada lingkungan lokal:
- Validasi konfigurasi platform dan aturan monitoring:
- Eksekusi pengujian verifikasi jembatan Postfix Enterprise SMTP Relay:
- Eksekusi pengujian simulasi insiden live TomcatDown dan pelaporan 7-seksi SRE:
- Melakukan commit perubahan ke sistem kontrol versi Git:
Expected Result
Seluruh tahapan pipeline CD dieksekusi tanpa kesalahan, pengujian relay dan simulasi insiden lulus 100%, serta perubahan tercatat rapi pada riwayat Git.
β Verification¶
Hasil eksekusi verifikasi tahapan pipeline CD pada repositori tomcat-monitoring:
| Tahapan Pipeline (Pipeline Stage) | Perintah Eksekusi | Hasil Aktual (Actual Result) | Status |
|---|---|---|---|
| Stage 1 β Checkout & Platform Validation | bash scripts/validate.sh |
Alertmanager, Prometheus, JMX Exporter, Telegraf, dan layout contract statis valid. | π’ PASS |
| Stage 2 β Agent & Network Isolation | podman info --format '{{.Host.Security.Rootless}}' |
Output: true (Non-Root DooD Podman terkonfirmasi). Network devops-lab aktif. |
π’ PASS |
| Stage 3 β Zero-Touch Platform Deployment | bash scripts/deploy-*.sh |
Inisialisasi volume konfigurasi dan peluncuran 5 kontainer aktif berhasil. | π’ PASS |
| Stage 4a β Postfix Relay Bridge Verification | bash scripts/verify-postfix-relay.sh |
7 seksi pengujian STARTTLS + SASL lulus, Postfix Queue bersih (0 pesan tertahan). | π’ PASS |
| Stage 4b β TomcatDown Live Incident Simulation | bash scripts/test-tomcatdown-live.sh |
Evaluasi webhook FIRING, 4 Header RFC valid, Laporan 7-seksi SRE lengkap, notifikasi RESOLVED terverifikasi. | π’ 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-monitoring status |
Memastikan direktori kerja bersih sebelum perubahan |
| Penyusunan Jenkinsfile | Penulisan berkas Jenkinsfile deklaratif |
Pembuatan kontrak otomasi CD orkestrator stack |
| Penyelarasan Validator | Modifikasi scripts/validate.sh |
Pendaftaran Jenkinsfile ke array REQUIRED_FILES |
| Penguatan Relay Host Lookup | Modifikasi postfix-relay/entrypoint.sh |
Penambahan smtp_host_lookup = dns, native |
| Simulasi CD Pipeline | cd /home/eddywiyatno/git/tomcat-monitoring./scripts/validate.sh./scripts/verify-postfix-relay.sh./scripts/test-tomcatdown-live.sh |
Menjalankan seluruh tahapan CD secara berurutan |
| Source Control Commit | git -C /home/eddywiyatno/git/tomcat-monitoring add Jenkinsfile scripts/validate.sh && git commit -m "ci(pipeline): ..." |
Menyimpan rekaman perubahan berstandar Conventional Commits |
π§Ύ Outcome¶
- Berkas Declarative Jenkinsfile Terimplementasi: Repositori orkestrator
tomcat-monitoringtelah dilengkapi dengan berkasJenkinsfiledeklaratif berstandar enterprise yang mencakup 4 tahapan quality gates. - Kepatuhan 6 Pilar Produksi Enterprise: Pipeline mendukung portabilitas environment (
DEPLOY_ENV), isolasi eksekusi non-root (Rootless Podman), integrasi isolasi networkdevops-lab, dan pembuktian otomatis keandalan insiden live. - Kesiapan Pendaftaran Job Jenkins Controller: Repositori siap diregistrasikan sebagai multibranch pipeline job pada Jenkins Controller pada tahap verifikasi akhir TN-007.
π Lessons Learned¶
- Kebutuhan Native DNS Lookup pada Containerized Postfix: Pada lingkungan Podman bridge network, konfigurasi bawaan
smtp_host_lookup = dnspada Postfix dapat mengalami kendala resolusi nama kontainer lokal (downstream relay). Menambahkan parametersmtp_host_lookup = dns, nativemenjamin Postfix memanfaatkan resolver native/etc/hostsdan DNS bridge secara deterministik. - Pola Stack CD Hub Mengintegrasikan Komponen Secara Utuh: Mengonsumsi digest image immutable dari Component CI (
tomcat-diagnostic-service) dan menjalankan simulasi insiden live (test-tomcatdown-live.sh) pada Stack CD Hub membuktikan integrasi end-to-end tanpa perlu membangun ulang seluruh image dari nol. - Perlindungan Otomatis Pasca-Deploy: Mengintegrasikan automated rollback trap pada skrip deployment dan blok penanganan kegagalan Jenkinsfile menjamin platform pemantauan tidak mengalami downtime apabila versi baru gagal beroperasi.
βοΈ Next Steps¶
flowchart TD
A["Completed<br/>TN-004: Diagnostic Service CI"] --> B["Completed<br/>TN-005: Event Collector CI"]
B --> C["Completed<br/>TN-006: Stack CD Hub Pipeline<br/>(Atomic Deploy & Live Test)"]
C --> D["Next Stage<br/>TN-007: Live Verification<br/>(Jenkins Controller)"]
Setelah implementasi CD pipeline pada tomcat-monitoring selesai, langkah implementasi selanjutnya adalah:
- Melanjutkan ke tahap puncak TN-007 β Execute and Verify End-to-End CI/CD Pipelines in Jenkins Controller untuk melakukan registrasi seluruh multibranch pipeline jobs pada Jenkins Controller, menjalankan build live yang sukses (
SUCCESS), membuktikan skenario insiden otomatis dari Jenkins UI, dan mengonsolidasikan buku petunjuk SRE Runbook di Handbook.
π 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
- TN-005 β Implement Production-Ready CI Pipeline for Tomcat Diagnostic Event Collector
- TM-ADR-0024 β Adopt Decoupled Component CI and Orchestrated Stack CD Pipeline Architecture
- Engineering Journal Standards
- Writing Standards
- Repositori
tomcat-monitoring - Berkas
JenkinsfileMonitoring Stack