WordPress için Gelişmiş OOP Bölüm 6: WordPress eklentileri için sürdürülebilir entegrasyon
Bu makale, WordPress’in geliştirilmesi için nesne yönelimli PHP yazma serisinin bir parçasıdır.Şimdiye kadar, kod yazmak için iki makale harcadık ve şimdi kodu ve sistemi test edeceğiz.Kod yazmak için çok fazla ekipman gerektiriyor ve geçmişte iki yönde, iki kar tanesi içinde, HTML yazmak, Babylon’a yazmak ve HTML’ye aktarmak yerine HTML kullanarak yürüdüm.Evet, bu çok, ama bu yüzden bir iskele aracımız var ve bazılarını bu makalede tartışacağız.Nesne yönelimli programlama (OOP) karmaşıktır.Bu serinin özü, neden bir şey yapmak için bir sistem yazmaktan daha iyi bir şey yapmak için soyut bir sistem yapmanın neden olduğunu göstermektir.Bu doğruysa, OOP ek karmaşıklık ile orantılıdır.OOP’un ana avantajlarından biri, test edilebilen bir koddur, daha iyi bir kod olma eğilimindedir.
OOP kodu çok test edildiğinden, tüm kodların otomatik olarak test edildiği iş akışını benimsemek mantıklıdır.Testi geçmek gerilme isteklerini birleştirmek için bir gereklilik haline gelir.GitHub ve GitLab bu kuralı gerilme isteklerine uygulayabilir.Yakında bu diziye geçecek olan Test (TDD) tarafından yönlendirilen bir tasarımı benimsemek istiyorsanız, iş akışının önemli bir bileşenidir.Bu makalede, önceki makalede nasıl yazılacağını gösterdiğim testi otomatik olarak çalıştırmak için GitHub ve Travis CI’yi nasıl kullanacağımı göstereceğim.GIT GIT GIT akışının akışı ve testi, git kullanarak işbirlikçi gelişme için çok yaygın bir seçimdir.Bu iş akışını kullanırken, hiç kimse doğrudan şu anda geliştirilmekte olan dallara yapmadı.Bunun yerine, tüm işler dallarda meydana gelir ve GitHub’daki gerilme istekleri gözden geçirmek ve daha sonra ana dalda değişiklik yapmak için kullanılır.
Örneğin, “Geliştirme” adlı şubede 42 problemde belirtilen özellikleri uygulamak için atanırsanız. Bu durumda, uzun mesafeli bir git dalı gelişimini çekeceksiniz. Ardından geliştirmeden yerel bir şube oluşturun. Şube Feature/42 olarak adlandırılacaktır, çünkü 42. baskının özelliklerini sunar ve daha sonra özelliği GitHub’a geri iter. Özellikleri birleştirmek için gerilme isteği/42. Travis CI Travis CI ile test otomasyonunun hazırlanması, GitHub ile oldukça sorunsuz bir şekilde entegre edilmiş ücretsiz bir hizmettir. Travis CI hesabına kaydolduktan sonra, kuruluşunuzun kişisel repo ve repo’unuzu bağlayabilirsiniz. Ardından, kişisel hesabınız veya kuruluşunuz için Travis CI profilinde, Travis’i etkinleştirmek ve etkinleştirmek istediğiniz depoyu arayın. Bu sizi Repo’nuz için Travis sayfasına götürür. Ayarları açın ve Travis’i tüm gerilme isteklerini çalıştıracak şekilde ayarlayın.
Ekranın açık kalmasına izin verin. Travis’i kullanmaya hazır olduğumuzdan sonra ihtiyacımız olacak, ancak bir Travis yapılandırma dosyası – .travis.yml. Bu, Docker görüntüsünde çalışan Travis Build ortamı için bir yapılandırma dosyasıdır. Bu dosyayı ortamı yapılandırmak için kullanabilirsiniz – örneğin bize PHP’nin mevcut olmasını istediğimizi söyleyeceğiz. Bu dosyayı bu ortamda çalıştırmak için kullanabilirsiniz, örneğin bu dizinin önceki makalesinde nasıl yapılacağını gösterdiğim BASH betiği ve besteci.
Sudo: false
# PHP ortamını kullanın
Dil: PHP
# E -posta yoluyla bir bildirim göndermeyin, can sıkıcı
bildirim:
E -mail: on_success: asla
on_failure: asla
# Yalnızca Master’a tetiklenir – Ayarlarda gerilme github için bir istek ekleyeceğiz
Dal:
sadece:
– Sayın
# Önbellek besteci bağımlılığı
Önbellek:
Dizin:
– SATICI
– $ Home/. Besteci/önbellek
# Kombinasyonun bu PHP ve WordPress sürümünü oluşturun
matris:
içermek:
– PHP: 7.2
Env: wp_version = en son
– PHP: 7.1
Env: wp_version = en son
– PHP: 7.2
Env: wp_version = trunk
# Çevresel Düzenleme
Önce_script:
# Besteci dışa aktarma
– Dışa aktarma yolu = “$ Home/. Besteci/satıcı/bin: $ yol”
# Eklentiyi bir besteci ile yükleyin
-Besteci-No-Progress’i yükle
# Testi çalıştırın
El yazması:
# Sadece birim testini çalıştırın
– Travis Dosyası Yaşam Döngüsü etkinliğinin besteci test biriminin bir açıklama çizgisi vardır. Çok önemli kavramlar olan bazı parçaları vurgulamak istiyorum. İlk olarak, Matrix. Bu matris PHP ve WordPress sürümlerinin üç kombinasyonu içerdiğinden, Travis her seferinde üç yapı yapacak. Her işlem belirtilen PHP sürümünü kullanır ve WP_Version ortam değişkeni için farklı bir değere sahiptir. Gutenberg’e dayanan yaptığım BASH komut dosyası, WP_VERSION çevre değişkenini kullandıkları WordPress sürümünü ayarladı. Bu, itaat etmemiz gereken bir kongre.
Ardından bkz. “Aşağıdaki_script”. Bu, Travis’e maruz kalan bir yaşam döngüsü olayı. Etkinlik, genellikle test komut dosyasının çalıştırıldığı komut dosyası olayından önce çalışıyordu. Bu aşamada, Travis dosyamız bir besteci hazırlar ve ardından eklenti bağımlılıklarını yüklemek için kullanır. Bu, test yapılmadan önce gerçekleşmelidir, yoksa yanlış nedenden dolayı başarısız olurlar – kötü kurulum, kötü bir kod değil. Sonra bir “senaryo” etkinliğimiz var. Varsayılan olarak, PHP projesinde Travis burada “Phunit” komutunu gerçekleştirecek. Biraz farklı bir komut çalıştırmak istiyoruz. Daha spesifik olarak “besteci birimler” komutu. Devam eden birim testini özetleyen bir besteci komut dosyasıdır. Bir sonraki makale serisinde, test yapmadan önce kokular ve lintler kodunu çalıştırmak için Travis yaşam döngüsü etkinliğini kullanacağız. Ardından, bir yapı ile, kodumuzun yüzdesinin testlerimizin kapsamını anlatabilecek bir kod kapsamı raporu yapacağız. Travis yapılandırmasını şimdi bu dosya taahhüdünü test edin ve ana dalda GitHub’a itin. Ardından Travis ayar ekranına ve “Diğer Seçenek” menüsünden döndürün, oluşturma tetiklemek için “Tetikleme Oluşturma” kullanın. Bina sürecinin çalışmasına neden olur ve tamamlandıktan sonra durumu görürsünüz.
Tamamlanabilecek bir dizi bağımlılığınız varsa, hepsi testi geçerse, üç yapının her birini göreceksiniz.Yapmayabilirsin.Travis, çoğunlukla yerel kalkınma için kullandığımızdan daha az affedilen bir ortamdır.Bu iyi birşey.Travis’te her şey işlev görürse, büyük olasılıkla başka bir yerde çalışır.Hata günlüğünüzü okuyun ve mezun olan bir yapı elde edene kadar her birini yapın.Docker ile tamamlanan yapılandırma Size nasıl oluşturulacağını göstereceğim, bir eklenti örneği için ayarladığımda, doğru yapmak için on iki denemeye ihtiyacım var.Gutenberg’den özgürce ödünç aldım ve bunu daha önce yapmıştım.Bu, Travis’i veya herhangi bir CI sistemi ilk kez düzenliyorsanız, sabırlı olun, bu dünyanın en kolay değil.Ancak bundan sonra ayarlandıktan sonra işlev görmelidir.
Şu anda Travis’te WordPress entegrasyon testini çalıştırmak için bir Docker kullanarak, sadece birim testini çalıştırıyoruz. Bu basit bir ilk adımdır, ancak çalıştırılmamız için bir dizi entegrasyon testimiz de var. Birim testi bağımlılık gerektirmeyecek şekilde yazıldığından, testi PHP sistemini kullanarak gerçekleştirebiliriz. Bu durumda, Travis tarafından bizim için sağlanan Docker ortamı. Entegrasyon testi, Localhost’ta çalışan MySQL ve WordPress gerektirir. Yerel gelişim için sorunu, Docker Compose kullanılarak yapılan basit bir Docker ortamı ile çözüyoruz. .Ravis.yml’imize “Hizmet” ekleyerek Travis ortamında Docker ve Docker kompozisyonunu etkinleştirebiliriz. Bunu bitirdikten sonra, Docker-Compose.yml dosyası ve mevcut besteci komut dosyası ihtiyacımız olan şeydi. “Komut dosyası” bölümünde, birim testini çalıştırdıktan sonra iki komut ekledim. İlk olarak, bir test paketi sağlayan liman işçi ortamını yüklemek için mevcut besteci komut dosyası. İkincisi, entegrasyon testini çalıştırma siparişi. Bu yeni bir Travis dosyası: # Sudo’ya çevreye ver
Sudo: gerekli
# Docker’ı bir kapta kullanılabilir hale getirin
hizmet:
– liman işçileri
# PHP ortamını kullanın
Dil: PHP
# E -posta yoluyla bir bildirim göndermeyin, can sıkıcı
bildirim:
E -MAIL:
on_success: asla
on_failure: asla
# Yalnızca Master’a tetiklenir – Ayarlarda gerilme github için bir istek ekleyeceğiz
Dal:
sadece:
– Sayın
# Önbellek besteci bağımlılığı
Önbellek:
Dizin:
– SATICI
– $ Home/. Besteci/önbellek
# Kombinasyonun bu PHP ve WordPress sürümünü oluşturun
matris:
Dahil:- PHP: 7.2
Env: wp_version = en son
– PHP: 7.1
Env: wp_version = en son
– PHP: 7.2
Env: wp_version = trunk
# Çevresel Düzenleme
Önce_script:
# Besteci dışa aktarma
– Dışa aktarma yolu = “$ Home/. Besteci/satıcı/bin: $ yol”
# Eklentiyi bir besteci ile yükleyin
-Besteci-No-Progress’i yükle
# Testi çalıştırın
El yazması:
# Run Sadece önce üniteyi test ederek – eğer başarısız olursa, entegrasyon testi için çevreyi inşa etmek için asla zaman harcayamayız
– Besteci birim testi
# Bir besteci komut dosyasını kullanarak tam test ortamını yükleyin
– WP-Instal Besteci
# Entegrasyon testini çalıştırın
– WP-TES besteci
# Test çalışma kapsamını geçerse ve koklar
After_side:
# Kapsamı Çalıştır
-Vendor/bin/phunit-coverage-clover = kapsama.xml
# Codecovovo’ya rapor
– Bash <(curl -s https://codecov.io/bash) codecov_key Test ortamını yüklemek geliştirme sürecinin en çok bölümlerinden biridir. Bu yüzden önce birim testini çalıştırıyorum. Bu, inşa etmenin en hızlı yolu. Kodun ölümcül bir hatası varsa, örneğin kötü bir GIT kombinasyonundan kaynaklanan, birim testi tamamlanmayacak ve daha büyük bir test devresi kurmak zorunda kalmadan arıza bildirilir. Her yapı aslında bir dizi yapı olduğundan, toplam yapı süresi zaman zaman önemli ölçüde artabilir.
Devam eden entegrasyonla devam etmek
Travis GitHub ile entegre olduğundan, gerilme talebinde her bir taahhüt için test sonuçlarını görebiliriz. Travis CI, sürekli bir entegrasyon aracının bir örneğidir. Travis'in sadeliğini seviyorum. GitLab CI ve Circleci biraz daha karmaşık bir alternatiftir. Hizmet denemeye değer. Ayrıca, CI'nin CI/CD – devam eden entegrasyon ve sürdürülebilir uygulamanın ilk yarısı olduğunu unutmayın. CD bölümü, sunucuya otomatik olarak değişiklik uygulama işlemidir. WordPress siteleri veya WordPress tarafından desteklenen uygulamalar için sürekli entegrasyon uygularsanız, sitenizi güncellemek için CI/CD hizmetlerini kullanabilirsiniz. Sitenizin noktaya ulaşması için otomatik test yaptıktan sonra, mezun olursanız, koda güvenirseniz, kodun doğrudan sitenize uygulanmasını veya hatta KG sitesine otomatik olarak daha iyi olmasını isteyebilirsiniz. Manuel olarak yapılması gereken sıkıcı işler. Bu test, eklentilerin geliştirilmesi için yapar, uygulama bölümü bir sürüm zip dosyasının oluşturulmasını içerir ve daha sonra WordPress.org adresinde bir SVN taahhüdü oluşturmak ve/veya e -ticaret sitesine veya pazarınıza yüklemek için kullanır. Travis, SVN'yi yükledi ve şifreli çevresel değişkenleri destekledi, bu nedenle eklenti üretim yapınızı Gutenberg'de yapmak için bir komut dosyası varsa, WordPress.org veya RYSNC'de diğer konumlara bir etiket olarak bir taahhütte bulunabilirsiniz. Phunit ile testler yapmak, Travis ile çalıştırabileceğiniz tek test türü değildir. Örneğin, bir WordPress JavaScript test serisi çalıştırmak isteyebilirsiniz.