🧪 Gerçek Hayat QA Senaryoları

Gerçek Hayat QA Senaryoları: Canlı bir Linux agent'ında başarısız olan bir CI pipeline'ını debug etmek, çalışan bir motorun üzerinde ameliyat yapmak gibidir — sistem durdurulamaz

Canlı bir Linux agent'ında başarısız olan bir CI pipeline'ını debug etmek, çalışan bir motorun üzerinde ameliyat yapmak gibidir — sistem durdurulamaz, ortam değiştirilemez ve yanlış teşhis koyarsan her adım işleri daha da kötüleştirebilir. Gerçek dünyadan QA senaryosu şöyle görünür: nightly regression suite'i sabah 2'de başarısız olmaya başladı, hata "Connection refused on port 5432", loglarda işe yarar bir şey yok ve bir sonraki toplantıya 45 dakikan kaldı. İşte burada Linux komut akıcılığı kendini geri öder — `ss -tulpn | grep 5432` iki saniyede veritabanının çalışıp çalışmadığını söyler; `journalctl -u postgresql -n 50` son elli log satırını gösterir; `df -h` diskin dolu olup olmadığını söyler (veritabanı çökmelerinin şaşırtıcı derecede yaygın bir nedeni). Ama daha derin soru şudur: bu neden sadece CI'da olur, local'de değil? Çünkü CI container'ları kısa ömürlüdür — bir image'den sıfırdan başlarlar, katı bellek ve disk limitleri vardır, çalıştırmalar arasında durum korumaz ve local shell'inin otomatik olarak tanımladığı environment variable'lar olmadan kısıtlı bir kullanıcı olarak çalışırlar. Java'daki benzetimle: CI-only hatayı debug etmek, production'da çıkan `ClassNotFoundException`'ı debug etmek gibidir — kod aynıdır ama runtime ortamı (classpath, kullanıcı, izinler, mevcut bellek) tamamen farklıdır.

Bir CI Agent'ına SSH ile Bağlanmak

Bağlanmak ve incelemek

ssh qa@jenkins-agent-01 çalıştırılır; ilk bağlantıda host key fingerprint'i onaylaman istenebilir.

Şifre veya SSH key (id_rsa/id_ed25519) ile doğrulanırsın; prompt qa@jenkins-agent-01:~$ olarak değişir.

cd /var/lib/jenkins/workspace/regression-suite çalıştırılır — artık uzak sunucudaki build klasöründesin.

tail -f build.log çalıştırılır; build ilerledikçe yeni satırlar terminalde anlık görünür.

Ctrl+C ile tail durdurulur, exit veya Ctrl+D ile ssh oturumu kapatılır ve local terminale dönülür.

Bir CI agent'ına bağlanıp build log'unu canlı izleme sürecini sırala.

ssh qa@jenkins-agent-01 — uzak sunucuya bağlan

cd /var/lib/jenkins/workspace/regression-suite — build klasörüne geç

tail -f build.log — logu canlı izlemeye başla

Ctrl+C — canlı izlemeyi durdur

exit — ssh oturumunu kapat