🌍 Ekosistem & CI/CD
Ekosistem & CI/CD: env/ klasörü, bir tiyatro topluluğunun turne düzenine benzer: aynı oyun metni (Java step kodu) İstanbul'da, İzmir'de ve Ankara'da oynanır — oyuncular replikler
env/ klasörü, bir tiyatro topluluğunun turne düzenine benzer: aynı oyun metni (Java step kodu) İstanbul'da, İzmir'de ve Ankara'da oynanır — oyuncular repliklerini şehre göre değiştirmez, ama her şehrin sahne ekibi ışık/ses ayarlarını (base URL, timeout, kimlik bilgileri) o salona göre yeniden kurar. gauge run --env test dediğinde topluluk "bu gece hangi salondayız" sorusunu cevaplar, oyunun metnine hiç dokunmadan. Peki Java kodunun içinde zaten System.getenv() ile ortam değişkeni okuyabiliyorken neden ayrı bir env/ klasör yapısına ihtiyaç var? Çünkü System.getenv() konfigürasyonu koda GÖMER — her yeni ortam için ya kod değişir ya da bir sürü if/else üretilir; env/ klasörü ise konfigürasyonu koddan tamamen AYIRIR, yeni bir ortam eklemek yeni bir Java satırı değil yeni bir properties dosyası demektir. Bu, Java'da Spring'in @ActiveProfiles veya Maven'ın -P (profiles) mekanizmasıyla birebir aynı felsefedir: "hangi ortamdayım" sorusunun cevabı komut satırından gelir, kod bundan habersizdir. QA bağlamındaki gerçek risk şudur: base URL koda hardcode edilmişse, bir geliştirici "hızlıca test edeyim" derken staging'e işaret eden bir testi yanlışlıkla prod'a karşı koşturabilir — üretim verisini kirletebilir. env/ klasörü ve CI'da hangi --env flag'inin geçildiğinin pipeline tanımında AÇIKÇA görünmesi, bu hatayı kod incelemesinde yakalanabilir hale getirir.
🗂️ env/ Klasörü ve Ortam Yönetimi
gauge init java her zaman env/default/ klasörünü oluşturur; içindeki default.properties dosyası her koşumda otomatik yüklenir. Başka bir ortam eklemek için env/ altında yeni bir klasör açman yeterlidir — örneğin env/test/. Gauge, --env test bayrağı verildiğinde önce env/default/ altındakileri, sonra env/test/ altındakileri (varsa aynı anahtarı ezerek) yükler. Böylece test ortamı sadece FARKLI olan anahtarları (base.url gibi) tanımlar, ortak ayarları tekrar yazmaz.
Micro Lab: Gauge spec-step zinciri kurma
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
env/ Katmanlarının Birleşme Sırası
env/default/ önce yüklenir
Tüm ortamlarda ortak, nadiren değişen ayarlar (rapor klasörü, ekran görüntüsü ayarı) her koşumda otomatik yüklenir.
--env test verilirse env/test/ de yüklenir
Bayrakla belirtilen ortamın klasörü, default'un ÜSTÜNE yüklenir.
Aynı anahtar varsa test/ kazanır
base.url gibi bir anahtar her iki dosyada da varsa, env/test/ dosyasındaki değer default'u EZER.
Java tarafında şeffafça okunur
Gauge bu anahtarları System Properties'e yükler; kod System.getProperty("base.url") ile okur, hangi ortamda olduğundan HABERSİZDİR.