failproofai publish bunların hepsini önündeki politika dosyalarından yazar, sürümü oluşturur ve bunları yükler.
1. Politikaları yaz
Boşlukları olan bir şablondan ziyade zaten çalışan bir şeyden başla:<name>.mjs dosyasını yazar ve durur — ağ yok, git yok, hiçbir şey yayınlanmadı. Yazdığı dosya, git push --force komutunu zaten engelleyen bir politikadır. Zaten var olan bir dosyanın üzerine yazmayı reddeder.
Politikalar, herhangi bir özel politika ile aynı API’yi kullanır. Bir paket için önemli olan iki ekstra alan vardır:
defaultEnabled değerini atladığında varsayılan olarak false olur. Düz failproofai policies add komutu yalnızca işaretlediklerinizi açar — bir yabancının her politikasını kurulu olarak yüklemek, yükleyicinin kullanıcısı için yapması gereken bir karar değildir.
İstediğiniz kadar dosya yazabilirsiniz; kategori başına bir dosya iyi okunur. Politikalara kayıt olan dizindeki her dosya, bir paketin sahip olması gereken tek yapıya dahil edilir.
2. Önce burada dene
Başka biri onu görmeden önce, dosyayı bu makinede uygula:3. Bunu yayınla
- Politika dosyalarını burada içerik yoluyla bulur —
failproofaiiçe aktaran vecustomPolicies.addçağıran dosyalar — dosya adına göre değil, bu nedenleguards.mjsbulur ve ilgisizpolicies.mjsöğesini yoksayar. Alt dizinlere inmez, bu nedenle bir test demeti asla yanlışlıkla taranmaz. git remote get-url originöğesinden depoyu okur, dosyanızın dizininde sizin dizininiz yerine ve sürümü belirler.- Kimlik bilgilerinizi bulur:
GITHUB_TOKEN,GH_TOKENveyagh auth login. Sürüm-yazma gerekir ve başka hiçbir şey gerekli değildir ve asla yazdırılmaz. - Depo zaten var olmadığında oluşturur. Bu, yapıdan önce gerçekleşir, bu nedenle sonraki adımda reddedilen bir paket, içinde hiçbir sürüm olmayan yeni bir depo bırakabilir.
- Üç varlığı oluşturur ve yükleyicinin kendi kurallarıyla doğrular — bir yabancının makinesine neyin yüklenmesine izin verileceğini belirleyen aynı kod — bu nedenle asla yüklenmeyebilecek bir paket burada başarısız olur, burada hala bunu düzeltebilirsiniz.
- Sürümü oluşturur veya yeniden kullanır ve varlıkları yükler, aynı adla olanları değiştirir.
Varlık adları sabittir — bir tüketicinin CLI’sinin URL’lerini bunlardan oluşturduğu şeydir, API çağrısı yok ve keşif yok.
Derleme zamanında reddedildi:
publisher/name olmayan bir id, / içeren bir politika adı, alwaysOn bildiren bir politika, eksik description, category veya match, hiçbir şeye kaydolmayan bir giriş ve yerel dosyaları içe aktaran bir giriş.
Belirlediği herhangi bir şeyi geçersiz kıl:
--id depo ile farklı olması gereken durumlarda paket id’sini ayarlar, --tag sürüm etiketini ayarlar, --notes oluşturulan sürüm notlarının yerini alır — policies show --releases’in her sürümün sayılarını ve commit’ini okuduğu yer — --out varlıkların nereye yazıldığını seçer (varsayılan dist-pack) ve --dry-run bunları yayınlamadan oluşturur ve kimlik bilgisi gerektirmez.
Herkes şimdi failproofai policies add acme/support-agent komutu ile bunu yükleyebilir. Bir sürümü sabitleme ve birinin sadece bir kısmını alma hakkında politika paketleri bölümüne bakın.
Bunu politika hub’ında listele
GitHub’daki deponuzafailproofai-policies konusunu ekleyin. Gönderim formu yok ve onay kuyruğu yok: politika hub’ı tarayıcı sonraki geçişinde depoyu alır. Konu yalnızca onu değerlendirmeye koymaktadır — bunu listeleyen şey, bildirimi kendi SHA256SUMS ile doğrulayan ve CLI’nin kullandığı kurallar altında ayrıştıran bir sürümdür; bu tam olarak failproofai publish ürettiği şeydir.
Sürümün nasıl belirlendiği
Sürüm, yayınladığınız commit — onun kısa sha’sı, on iki karakter:a1b2c3d4e5f6. Seçilecek hiçbir şey yok ve artırılacak hiçbir şey yok ve sürüm tam olarak baytların nereden geldiğini adlandırır, bu nedenle aynı kaynağı iki kez yayınlamak aynı sürümü verir.
Depoların sürümlerinden asla sizin önünüzdeki ağaçtan okunur, bu nedenle yeni bir klon ve hava geçişli bir makine GitHub’a bundan önce ne olduğunu sormadan aynı cevabı hesaplar.
Sürüm bir commit’i adlandırdığından, bu commit var olmalıdır. Terminal’de, publish bunu sizin için yapar: bir depo olmadığında başlatır ve derlenmeden önce değişen politika dosyalarını commit’ler. Bunun yerine reddeder — --version olarak çıkış yolunu adlandırarak — terminal olmadan çalıştığında (CI koşucuda yapılan bir commit başka hiçbir yerde var olmaz), dosyalar politikalardan farklı olduğunda komut edilmediğinde veya henüz hiçbir commit’lik bir checkout’ta. HEAD üzerinde bir etiket sha’yı geçer — birisi v1.2.0 etiketlendirmişse bu sürümün ne olduğunu söylemiştir.
Bir sha’nın kendine ait bir sıralaması yoktur, bu nedenle hangi sürümün ilk geldiğini görmek için failproofai policies show <owner>/<repo> --releases kullanın — en yeni en üstte.
Yeni bir sürüm gönderm
Değişikliği commit’leyin ve tekrarfailproofai publish çalıştırın — yeni commit yeni sürümdür. Tüketiciler aynı failproofai policies add komutunu çalıştırır. Terminal olmadan veya bir seçim bayrağı ile, seçtikleri alt kümesini tutar ve açtıkları bir politika kapalı kalır; hiçbir bayrak olmadan terminalde seçici, varsayılanlarınız ile önceden işaretlenmiş durumda açılır ve cevapları seçimlerini değiştirir.
Bir politikanın adını değiştirmek kırılan bir değişikliktir: onu kapattığı bir makine artık var olmayan bir adı kapatıyor ve yeni ad, ne olursa olsun defaultEnabled söyler.
Kullanıcılarınızın ne güvendiği
SHA256SUMS, yapıtla aynı sürümde yer alır, bu nedenle baytların yayınladıklarınız olduğunu kanıtlar — siz kim değil. Depoya yazabilen herkez her iki dosyayı yazabilir. Kullanıcılarınızın koruması, yüklediklerinde özet sabitlendikçe, gönderdikleriniz sonra onların altında değişemez.
Yazma erişimini kontrol ettiğiniz bir depodan yayınlayın ve bir paket sürümünü bir paket yayınlamak gibi ele alın.
Depo da public olmalıdır. Yüklemeler, sunacak kimlik bilgisi olmayan anonim HTTPS’dir, bu nedenle mevcut bir özel depo, herhangi bir şey oluşturulmadan veya yüklenmedikten önce reddedilir ve publish oluşturduğu bir depo aynı nedenle halka açıktır. --allow-private bunu birinin üç varlığı başka bir yolla teslim ettiği biri için geçersiz kılar ve policies add’in bunlara ulaşamayacağını açıkça söyler. Yalnızca sürüm önemlidir: yüklemeler releases/download/<tag>/<asset> okur ve git ağacınıza asla dokunmaz.
Uygulamadan önce gözlemleyin
Bir bildirim"effect": "observe" bildirebilir — failproofai publish --effect observe bunu ayarlayan şeydir. Bu politikalar çalışır ve verdiktleri kaydedilir ve atılır — hiçbir şey engellenmez. Bu, yeni bir kuralı gerçek trafiğe karşı ölçmenin yolu, herkesin çalışmasını kesintiye uğratmadan önce.

