İçeriğe geç

Backport Builder geliştirici kılavuzu

Backport Builder bir sürüm mühendisliği projesidir. Kaynak depolarını girdi olarak, üretilen ağaçları çıktı olarak ve özel Rector kurallarını test edilmiş derleme mantığı olarak ele alın.

Downgrade kurallarının, üretilen paket meta verilerinin, hedef çalışma zamanı denetimlerinin veya nextpdf/backport-builder sürüm otomasyonunun bakımını yaparken bu kılavuzu kullanın.

KatmanSahibiSorumlulukBuraya koymayın
Kaynak depolarıÜrün depolarıGeçerli PHP kaynağı ve testleri.Üretilen downgrade düzenlemeleri.
Derleme betiklerinextpdf/backport-builderKaynağı birleştirir, dönüşümleri çalıştırır, meta verileri yazar ve çıktıyı doğrular.Çalışma zamanı uygulama mantığı.
Rector yapılandırmasınextpdf/backport-builderHedefe özgü downgrade ilkesi.Testi olmayan hedefler arası varsayımlar.
Özel Rector kurallarınextpdf/backport-builderProjeye özgü söz dizimi dönüşümleri.Geniş kapsamlı ve test kapsamı olmayan yeniden yazımlar.
Üretilen paketlerDerleme çıktısıEski çalışma zamanları için kurulabilir yapıtlar.Elle yapılan gerçek-kaynak yamaları.
AşamaDavranışGeliştirici eylemi
Kaynak teslim almaSürüm iş akışı, kaynak depolarını hedef etikette teslim alır.Kaynak referanslarını paketler arasında hizalı tutun.
Sözleşme doğrulamasıValidateBuildContract::run() derleme varsayımlarını denetler.Bir sözleşme başarısız olursa bunu sürümü engelleyen bir durum olarak ele alın.
BirleştirmeMergeSources::run() hedef paket ağacını bir araya getirir.Rector’ı çalıştırmadan önce hedef kapsamını doğrulayın.
DönüştürmeRector yapılandırmaları ve özel kurallar, söz dizimini downgrade eder.Her kural değişikliği için fixture testleri ekleyin.
Composer ayarlamasıAdjustComposer üretilen paket meta verilerini ve replace eşlemelerini yazar.Paket adlarını, sürümlerini, lisanslarını ve kısıtlarını doğrulayın.
Çalışma zamanı doğrulamasıÜretilen çıktı, hedef PHP sürümlerinde söz dizimi açısından denetlenir ve test edilir.Hedef çalışma zamanı başarısızlığını sürümü engelleyen bir durum olarak ele alın.
SürümArşivler bir sürüme eklenir.Üretilen çıktıya gerçek-kaynak gibi yama uygulamayın.
İş öğesiGerçek kaynakÜretilen çıktı ilkesi
PHP özelliği kullanımıAna kaynak deposu.Backport kuralları, özelliği uyarlar.
Bağımlılık kısıtlarıKaynak composer.json meta verileri ve ayarlama betiği.Üretilen composer.json yeniden üretilebilir olmalıdır.
Söz dizimi downgrade’iRector yapılandırması ve özel kurallar.Üretilen kaynak elle düzenlenmemelidir.
Çalışma zamanı desteğiHedef dalı ve CI matrisi.Derleme, hedef PHP üzerinde başarılı olmalıdır.
Sürüm notlarıBelgeler ve sürüm otomasyonu.Üretilen yapıtlar kaynak sürüme geri bağlantı içermelidir.

Her özel kuralın dar bir amacı, meta verileri ve fixture kapsamı olmalıdır.

Kural yöntemiAmaçKalite gereksinimi
getRuleDefinition()Rector araçları için dönüşümü belgeler.Gerçek downgrade ile eşleşen bir before/after örneği ekleyin.
getNodeTypes()Kuralın incelediği AST düğümlerini sınırlar.Düğüm listesini olabildiğince küçük tutun.
refactor()Dönüşümü uygular veya düğümü değiştirmeden döndürür.İlgisiz düğümlere dokunmayın ve sonucu belirlenimci tutun.
Fixture testibefore/after çıktısını doğrular.Geçerli en küçük girdiyi ve en az bir atlama durumunu kapsayın.
<?php
final class ExampleDowngradeRector extends AbstractRector
{
public function getNodeTypes(): array
{
return [SomeNode::class];
}
public function refactor(Node $node): ?Node
{
if (!$node instanceof SomeNode) {
return null;
}
return $this->rewriteNode($node);
}
}

Geliştirme ve sürüm adayı doğrulaması sırasında dry run’ları kullanın. Gerçek çıktıyı yalnızca kaynak referansları ve hedef dalı bilindiğinde yazın.

Terminal window
composer build:dry
php scripts/build.php --version=2.0.0 --target=php81 --dry-run
php scripts/build.php --version=2.0.0 --target=php74 --no-pro

Üretilen paket doğrulamasını yalnızca modern derleme ana makinesinde değil, hedef çalışma zamanında da çalıştırın.

Genişletme noktasıKullanım amacıKısıt
Rector yapılandırma dosyalarıHedefe özgü downgrade ilkesi.PHP 8.1 ve PHP 7.4 hatlarını ayrı tutun.
Özel Rector kurallarıProjeye özgü söz dizimi dönüşümleri.Meta verileri ve fixture testleri olmalıdır.
Composer ayarlama betiğiÜretilen paket kimliği.SemVer ile uyumlu sürümlemeyi korumalıdır.
Birleştirme betiğiKaynak paket girdisini seçmek ve biçimlendirmek.Kaynak köklerini ve çıktı köklerini günlüğe kaydetmelidir.
Derleme iş akışıSürüm düzenlemesi.Üretilen çıktıyı hedef çalışma zamanında doğrulamalıdır.
  1. Desteklenmeyen söz dizimini minimal bir fixture içinde yeniden üretin.
  2. Özel bir Rector kuralı ekleyin veya güncelleyin.
  3. Kural için before/after fixture’ları ekleyin.
  4. Dry run derlemeyi çalıştırın.
  5. Üretilen çıktıyı hedef PHP çalışma zamanında doğrulayın.
  6. Gerektiğinde aynı mantıksal değişikliği her kalıcı hedef dalına uygulayın.
  7. Sürüm yapıtlarını, kaynak etiketlerinden ve derleme betiklerinden yeniden üretilebilir tutun.
BaşarısızlıkNerede ele alınmalıÖnerilen yanıt
Eksik kaynak deposuSözleşme doğrulaması veya birleştirme aşaması.Derlemeyi durdurun ve teslim alma girdilerini düzeltin.
Rector ayrıştırma başarısızlığıDönüştürme aşaması.Bir fixture’a indirgeyin ve kuralı veya yapılandırmayı güncelleyin.
Üretilen composer.json uyumsuzluğuComposer ayarlama aşaması.Üretilen meta verileri değil, oluşturma betiğini düzeltin.
Hedef söz dizimi başarısızlığıÇalışma zamanı doğrulaması.Dönüşüm düzeltilene kadar sürümü engelleyin.
Pro kaynağı kullanılamıyorDerleme yapılandırması.Yalnızca amaçlanan hedef buysa genel yapıtı derleyin.
HususVarsayılanNe zaman geçersiz kılınmalı
Üretilen çıktıSalt okunur yapıt.Bunu asla gerçek-kaynak haline getirmeyin.
Dal modeliAyrı kalıcı hedef dalları.Değişiklikleri bağımsız pull request’ler aracılığıyla eşitlenmiş tutun.
Derleme ana makinesiModern PHP.Sürüme hazır olup olmadığını yine de hedef çalışma zamanı doğrulaması belirler.
Özel kurallarKüçük ve fixture destekli.Açık before/after örnekleri olmayan geniş kapsamlı dönüşümlerden kaçının.
PHP 7.4 hattıAçıkça desteklenmediği sürece yalnızca Core.Hedef çalışma zamanı doğrulaması olmadan Pro çıktısını dahil etmeyin.
  • Rector kuralı meta verisi testleri, her özel kuralı örnekle doğrular.
  • Fixture testleri her dönüşüm için önceki ve sonraki kodu kapsar.
  • Dry run derleme, sürüm işlerinden önce çalıştırılır.
  • Hedef çalışma zamanı söz dizimi denetimleri ve paket testleri üretilen çıktı üzerinde çalışır.
  • Composer meta verisi testleri paket adını, sürümünü, kısıtlarını, replace eşlemesini ve lisansını doğrular.
  • Derleme günlükleri kaynak yollarını, hedef yolunu, hedef çalışma zamanını, dry-run durumunu ve Pro dahil etme durumunu içerir.