ci
Catatan teknis seputar web development, DevOps, dan integrasi AI.
13 artikel
- 02.36testing
Coverage 0 Persen Padahal Semua Test Hijau
Menyusun ulang test ke pohon terpusat membuat coverage package terbaca 0 persen; satu flag -coverpkg pada mode coverage mengembalikan angkanya.
TL;DR: Test pindah ke folder terpusat bikin coverage Go jadi 0.0% padahal semua test lulus. Soalnya secara default tiap test cuma ngukur package-nya sendiri, bukan package lain yang dipanggil. Solusinya gampang, tinggal tambah flag -coverpkg=./internal/...
#go#coverage#testing - 23.04backend
CI merah karena schema kosong: migrasi dulu, baru pytest
Pipeline CI gagal pada database service yang masih kosong; satu baris alembic upgrade head sebelum pytest menyelaraskan kontrak CI dengan container produksi.
TL;DR: Pipeline CI jadi merah gara-gara database kosong, bukan karena kode error—ternyata migrasi nggak pernah jalan di CI. Solusinya gampang, tinggal tambahin alembic upgrade head sebelum pytest biar urutannya sama kayak produksi: schema dulu, baru tes. Sekarang error yang muncul beneran nunjukin bug kode, bukan tabel yang belum dibuat, jadi debugging nggak buang waktu lagi.
#ci#alembic#pytest - 17.07devops
Docker Compose Menunggu Database Siap, Bukan Cuma Jalan
depends_on cuma menunggu container jalan. Healthcheck pg_isready plus service_healthy dan entrypoint yang benar membuat aplikasi tidak menabrak database yang belum siap.
TL;DR: depends_on di Compose cuma mastiin kontainer jalan, bukan beneran nunggu Postgres siap, makanya app sering gagal konek. Solusinya kasih healthcheck pg_isready di db terus depends_on pakai condition service_healthy, plus exec biar uvicorn jadi PID 1 dan shutdown rapi. Pola yang sama kepake di CI GitHub Actions, dan Compose 5.3.0 punya pre_start sebagai alternatif.
#docker#compose#postgresql - 15.30security
Gitleaks Crash Pas Commit Multi-File, Lahir Gerbang Supply Chain
Hook pemindai secret crash saat commit multi-file. Ternyata satu flag hilang di definisi hook, dan ujungnya CI diikat checksum.
TL;DR: Commit multi-file mendadak gagal gara-gara hook gitleaks-system crash karena lupa set pass_filenames false. Bugnya emang ada di file upstream, cuma hook golang sama docker yang bener. Akhirnya gue pindah ke hook lokal yang checksum-nya dicek plus CI cuma pake checkout yang di-pin SHA.
#github-actions#security#ci-cd - 13.35frontend
Satu Bahasa Desain untuk Semua Halaman
Lima subpage terasa seperti website lain setelah homepage didesain ulang. Solusinya bukan mempercantik satu per satu, tapi memindahkan bahasa desain ke komponen shared.
TL;DR: Awalnya homepage cakep tapi halaman lain kayak website beda jadi berantakan. Ternyata solusinya simpel cukup pakai dua komponen shared page-hero dan page-cta biar semua halaman konsisten. Ganti token sekali semua ikut keubah, kartu jadi lebih clean tanpa border tebal dan tombol pill-nya seragam.
#css#design#frontend - 08.01frontend
Ikon Kartu dari Union Type, Dijaga Kompiler
Registry as const plus union type membuat kompiler TypeScript menjaga konsistensi ikon kartu perusahaan di tiga tempat sekaligus.
TL;DR: Awalnya tujuh kartu perusahaan pakai ikon gedung yang sama, jadinya seragam dan gitu-gitu aja. Solusinya, pilihan ikon dipindah ke data konten pakai union type plus registry kecil, jadi tiap bisnis punya ikon sendiri. Kerennya, kompiler TypeScript yang jagain konsistensi—salah ketik atau lupa satu file dua bahasa langsung gagal build, bukan kelihatan aneh pas production.
#typescript#react#lucide - 01.27frontend
Kartu Minimal: Ikon aria-hidden dan Divider Tanpa DOM
Metadata tak terverifikasi dibuang; yang tersisa nama, sektor, deskripsi, plus tiga detail teknis yang menjaga kartu tetap aksesibel.
TL;DR: Artikel ini cerita soal memangkas kartu perusahaan di halaman about: metadata yang nggak bisa diverifikasi dihapus biar nggak jadi utang editorial. Pembagi antar-kartu dibuat pakai pseudo-element CSS, jadi DOM tetap bersih. Ikon Lucide disembunyikan dari screen reader lewat aria-hidden, dan efek hover dinolkan buat pengguna yang aktifkan prefers-reduced-motion.
#accessibility#css#react - 08.55security
Gerbang Redaksi Mekanis Sebelum Publish
Style guide kepotong diam-diam di 9000 karakter. Solusinya bukan niat baik, tapi gerbang mekanis yang menyaring IP dan token di artefak final.
TL;DR: Style guide ternyata kepotong di 9000 karakter, jadi aturan redaksi pencegah bocor IP dan kredensial nggak pernah nyampe ke model. Solusinya: guide di-load utuh plus gerbang mekanis check_redaction di verify yang nge-scan semua IP dan token di artikel final. Pelajarannya, validasi artefaknya bukan niat penulisnya, soalnya false positive cuma makan lima menit, kebocoran yang keindeks itu permanen.
#security#tooling#ci - 23.32devops
Kenapa Selftest R97 Gagal Saat Audit Berjalan
Audit meng-hash ulang setelah render jalan, selftest pun gagal. Artefak turunan harus keluar dari digest kanonik dan urutan verifikasi menentukan arti hash.
TL;DR: Selftest R97 gagal gara-gara audit menghitung digest kanonik setelah render, padahal render ngubah isi direktori yang lagi di-hash, jadi hashnya salah bukan karena kontennya. Solusinya, artefak turunan kayak nav.json dan pages.json dikeluarin dari digest; yang dijaga cuma sumber kebenarannya. Fixture selftest yang flake juga diganti mutasi berbasis path, checksum di-freeze ulang biar jejaknya jelas.
#python#testing#ci