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:
- GitHub Actions: event payload'undan (
repository.private); - GitLab CI:
CI_PROJECT_VISIBILITYdeğişkeninden.
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:
TESTDETTA_LICENSE: maskelenmiş ya da secret bir değişkenden gelen lisans dizesi;TESTDETTA_LICENSE_FILE: lisansı içeren dosyanın yolu;~/.testdetta/license:td license installve otomatik yenileme tarafından yazılır;- 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.