Lisans

Açık depolar TestDetta'yı ücretsiz kullanır. Özel depolar CI'a bir lisans dizesi iletir. Bir lisans sorunu hiçbir zaman bir derlemeyi başarısız kılmaz: geçerli bir lisans olmadan, tıpkı TestDetta'dan önceki gibi tüm testler çalışır.

Açık depolar

Açık bir depo lisansa ihtiyaç duymaz, ancak TestDetta bir deponun açık olduğunu yalnızca CI bunu bildirdiğinde bilir:

Jenkins, Azure DevOps, Bitbucket, diğer CI sistemleri ve geliştirici makinelerinde her depo özel sayılır.

Lisansı iletmek

TestDetta lisansı şu sırayla arar:

  1. TESTDETTA_LICENSE: maskelenmiş ya da secret bir değişkenden gelen lisans dizesi;
  2. TESTDETTA_LICENSE_FILE: lisansı içeren dosyanın yolu;
  3. ~/.testdetta/license: td license install ve otomatik yenileme tarafından yazılır;
  4. depodaki .testdetta/license.

Önerilen yol bir secret değişkendir. GitHub Actions'ta onu action'ın license girdisi üzerinden iletin:

- uses: <owner>/testdetta@<sha>
  with:
    mode: test
    license: ${{ secrets.TESTDETTA_LICENSE }}

Lisansı yalnızca td affected ve td test kontrol eder. td record zaten tüm testleri çalıştırır ve lisansa ihtiyaç duymaz.

Kontrol etmek

td license status, bulunan lisansın neyi kapsadığını gösterir: geçerliliğini, kapsadığı depoları ve aktif committer sayısını, kişisel veri olmadan. Aynı durum, önemli olduğu her an log'da, job summary'de ve JSON çıktısında görünür: geçerli, yakında sona erecek, koltuk sayısı aşıldı, süresi doldu, yanlış kapsam, geçersiz ya da bulunamadı.

td license status

CI secret'ı olmayan makineler

Lisansı hiçbir secret değişkenin tutamadığı yerlerde, onu makine başına bir kez kaydedin:

td license install <license|file>

Lisans önce kontrol edilir, ardından ~/.testdetta/license dosyasına yazılır.

Otomatik yenileme

Bir lisans, yenilendiği adresi kendi içinde taşır. TestDetta günde en fazla bir kez güncel sürümü indirir ve ~/.testdetta/license içinde tutar; böylece yenilemeler ve eklenen koltuklar secret'larınıza dokunmadan gelir. İstek, lisansı bir header içinde gönderir ve deponuzdan hiçbir şey göndermez. 2 saniyelik bir zaman aşımı vardır, yeniden deneme yapılmaz ve her hata yok sayılır: çevrimdışı ya da engellenmiş bir ağ günde en fazla 2 saniyeye mal olur. HTTPS_PROXY dikkate alınır.

Lisans servisine erişemeyen bir ağda TESTDETTA_LICENSE_REFRESH=off ayarlayın ve yeni bir lisans aldığınızda lisans dizesini kendiniz değiştirin.

Bir lisansın kapsadığı depolar

Bir lisans, kapsadığı depoları adlandırır, örneğin github.com/acme/*. TestDetta bunları deponun origin remote'uyla eşleştirir. Remote URL'sine gömülü kimlik bilgileri (Jenkins'te yaygındır) eşleştirmeden önce çıkarılır ve hiçbir zaman loglanmaz.

Remote, lisansın kapsadığı depoyu adlandırmıyorsa (örneğin yerel bir mirror), TESTDETTA_LICENSE_SCOPE ayarlayın:

TESTDETTA_LICENSE_SCOPE=git.acme.corp/scm/pay/app

Aktif committer'lar

TestDetta, aktif committer başına aylık olarak fiyatlandırılır: analiz edilen commit'ten erişilebilen commit'ler arasında, son 30 günde yazarı olduğu en az bir commit bulunan her farklı commit yazarı. Yazarlar yerel olarak, .mailmap ile birleştirilmiş e-postaya göre sayılır ve hiçbir e-posta makinelerinizden çıkmaz. Dependabot, Renovate ve github-actions gibi botlar sayılmaz; kendi kalıplarınızı .testdetta/license.json dosyasına ekleyin:

{ "bots": ["ci-service-account"] }

Lisansın koltuk sayısının %20'sine kadar aşım (en az bir kişi) sorun değildir. Bunun üzerinde TestDetta 30 gün boyunca seçim yapmaya devam eder ve her özette uyarı verir; böylece koltuk eklemek için zaman olur. Ancak bu sürenin sonunda sayı hâlâ aşımdaysa, lisans yokmuş gibi tüm testler çalışır. Bkz. Fiyatlandırma.

Asla kırmızı derleme yok: süresi dolmuş, bulunamayan ya da eşleşmeyen bir lisans, TestDetta'nın tüm testleri çalıştırmasına ve nedenini söylemesine yol açar. Job'u başarısız kılmaz.