Nasıl Hudson CI ile phpunit entegre olabilir?

9 Cevap php

Biz (bazı gerçekten harika özellikler! Sahip görünüyor) Hudson phpundercontrol geçiş bakıyor ama phpunit günlükleri göstermek için nasıl anlamaya olamaz.

Ben karınca ile Hudson çalışan cezası phpunit var, ve - log-xml uygun bu yapı için / klasör oluşturur bir phpunit.xml koyuyor. Varsa biz testler koştu ve başarısız görebilirsiniz böylece Ama ben, bu yapı için göstermek için nasıl anlamaya olamaz.

Bunu anlamaya sonra, kapsama, ölçümleri ve api alma yanında :) olacak

O "/ $ BUILDNUM / API / index.html inşa etmek her yapı ve bağlantı için 'API' için bir link gösterir, bu proje için" Örneğin Hudson anlatmak için, on HTML üretir şey için Önemsiz olmalıdır gibi görünüyor.

9 Cevap

Ben, xUnit eklentisi yüklü benim log dosyası (iş yapılandırma itibaren) doğrulttu ve bir cazibe gibi çalışır. Bu herhangi bir özel kesmek için artık bir ihtiyaç yoktur görünür.

http://wiki.hudson-ci.org/display/HUDSON/xUnit+Plugin

Son cevap (2009'dan itibaren varlık ve a lot of people migrating from Hudson to Jenkins şimdi due to Oracle, Jenkins Template for PHP kullanmayı düşünebilirsiniz, {[tüm yapılandırma ihtiyaçları için ücretsiz ve kullanışlı bir şablon sunan 3)]}, uygun bir şablonda pdepend, phpmd, phpcs ve PHPUnit gibi.

Destek için IRC channel #jenkins-php on Freenode bulunmaktadır.

Ayrıca hudson / junit xml phpunit xml dönüştürmek için bu XSLT dosyasını kullanabilirsiniz:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <xsl:element name="testsuites">
    	<xsl:for-each select="//testsuite[@file]">
    		 <xsl:copy-of select="." />
    	</xsl:for-each>
    </xsl:element>
</xsl:template>
</xsl:stylesheet>

Ben genellikle (CC Phing desteği, phpundercontrol değil kullanarak) PHP test için CruiseControl ile çalışmak. Ben sadece Hudson ile biraz çalıştım, ancak başarılı adlı phing phpunit desteğini kullanarak phpunit testleri kaydetmek için Hudson aldık.

Aşağıdaki yönergeler, PHP proje inşa yönetmek Phing (değil Ant) kullanarak ve gerekli önkoşul yüklü olduğunu olacağını varsayabiliriz. (PHPUnit 2.x çok çalışmak gerekir) Ayrıca yüklü 3 phpunit varsayar.

Step 1: Setup Project for Phing/PHPUnit

Öncelikle proje Phing kullanarak test edilebilir olduğundan emin olmak gerekir. Burada birim testleri çalıştırır ve JUnit uyumlu XML çıktısı yaratan bir örnek Phing build.xml bulunuyor.

<?xml version="1.0" ?>
<project name="Test Project" default="test">
    <property name="tests.dir" value="." />
    <property name="reports.dir" value="${tests.dir}/reports" />

    <target name="test" description="Run PHPUnit tests">
    	<phpunit haltonerror="true" haltonfailure="true" printsummary="true">
    		<batchtest>
    			<fileset dir="${tests.dir}">
    				<include name="**/*Test.php" />
    			</fileset>
    		</batchtest>
    		<formatter type="plain" usefile="false" />
    		<formatter type="xml" usefile="true" todir="${reports.dir}" outfile="test-results.xml" />
    	</phpunit>
    </target>
</project>

Step 2: Setup Hudson

  1. Hudson için Phing eklentiyi yükleyin. Eğer may (I / opt/phing-2.3.3 koydum) bağımsız bir pacakge olarak Phing yüklemek ve bu dizine işaret etmek için Hudson config PHING_HOME yapılandırmanız gerektiğini unutmayın. Ayrıca PEAR yüklü Phing kullanmak gerekir; Ancak, ben bu test değil.
  2. Phing kullanarak projeyi oluşturmak için Hudson yapılandırın.
  3. Projenizden JUnit testleri toplamak için Hudson yapılandırın. Bizim sonuçları dosyasının adı sınama-Results.xml olacak. Yukarıdaki örnekte raporlar / *. Xml dosyaları toplamak için yapılandırmak istiyorum.

Step 3: Build!

İşte bunu yapmak gerekir. Şimdi proje bina deneyin. Umarım bu sonuçları toplayacak.

Ayrıca Phing presentation PHPUnit entegrasyon Phing hakkında daha fazla bilgi için ve (bir dereceye kadar) bu Phing presentation, ya da bu bkz.

İyi şanslar!

Diğer benzer araçlar tarafından oluşturulan XML olarak oldukça aynı değildir, çünkü PHPUnit is not (currently) compatible with Hudson yaydığı XML formatı. Eğer mesajı "test raporlarının hiçbiri sonucu bulunan" işte o yüzden.

"Daha iyi" XML oluşturmak için phpunit sabitleme ya da kabul ne de daha esnek olmaya Hudson iyileştirilmesi kısa, tek çözüm içinde sıralanmasına ortadan kaldırarak XML düzeltmek için elemanları. Ben Hudson kabul edilebilir used sed to alter the PHPUnit XML böylece ettik:

# Tweak the test result XML to make it acceptable to Hudson.
lines=`wc -l test-results/results.xml|awk '{print $1}'`
end=`expr $lines - 1`
sed -i "$end d;3d" test-results/results.xml

Önceki posta XSLT dönüşümü benim için çalışıyor değil. Raporun bu dönüşüm DOM yapısını uygulandıktan sonra değiştirilmez. Ben sorunu çözmek için modifiye ettik. Benim çeşididir:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="/">
      <xsl:element name="testsuites">
         <xsl:for-each select="//testsuite[@file]/testsuite">
            <xsl:copy-of select="." />
         </xsl:for-each>
      </xsl:element>
   </xsl:template>
</xsl:stylesheet>

Benim için çalışıyor.

Eğer Hudson ile PHP entegre üzerinde tam bir öğretici istiyorsanız bu bağlantıyı kontrol edebilirsiniz:

Continuous Integration for PHP with Hudson

Yukarıdaki sorunun cevabı geçerli ama daha basit, inşa sürecini değiştirmeden:

  • Projenizi yapılandırın
  • (http://thinkvitamin.com/images/articles/hudson/hudson_setup.png bakınız), ve "uygun inşa / klasör içinde phpunit.xml" yerini doldurmak kutu kamu JUnit raporunu kontrol edin
  • umarım sonraki yapı burada gibi testler hakkında bir eğilim ve daha detaylı bilgi, https://hudson.dev.java.net/screenshots/5.png içerecektir

I xslt bir kullanan phpunit sürümünü bağlı olarak çeşitlendirilebilir gerekebilir inanıyoruz. Örneğin, Hoschi tarafından yayınlanmıştır stil phpunit sürümü 3.3.17 kullanarak, benim için iyi çalıştı

Ama phpunit yeni sürümlerinde farklı bir biçimi yayarlar yükseltildi tamamen mümkündür, ya da efendim-vestnik eski bir sürümü çalışıyor olabilir.