2012-08-06 8 views
5

Kısa bir süre önce ince mikro çerçeveli My Behat testlerini kullanan bir PHP projesinde Behat ile Behat'u kullanmaya başladım ama bunları çalışmak için Sebastian Bergmann'ın Jenkins-PHP şablonunu kullanan yapıyorum.Jenkins ile Behat - PHP uygulamasına nasıl servis yapılır?

Bunu yapmak için, Slim uygulamasına hizmet vermek için bir web sunucusu çalıştırmam gerekeceğini tahmin ediyorum. Açık cevap, PHP 5.4'ün web sunucusunda yerleşik olarak görünüyor, ama ben PHP 5.3 ile sınırlıyım.

Şu an sahip olduğum tek düşünce, bir antivirüs aşaması oluşturmaktır; böylece Ant yapısı geçilirse, Jenkins bir sunucu üzerinde bir çalışma alanı dağıtır ve ardından Behat testlerini buna karşı çalıştırır. Bu, çok fazla iş olacağını ve pul pul olabileceğini düşünüyor, ayrıca kaçınmayı tercih edeceğim başka bir VM'yi döndürmeyi gerektiriyor. Behat'i çok sayıda farklı projede kullanmak için arıyoruz, böylece "tek kullanımlık" bir şey tercih edilebilir.

Bu sorunu çözmenin en iyi yolu nedir? https://github.com/jimeh/php-rack

cevap

7

biz sonunda gitti çözüm Jakub önerdi çok gibi - bizim Jenkins örneği aşağıdaki gibi bir komut dosyası bir şey kullanarak, Behat kullanan her çalışma alanı için conf.d Apache vhost dosyaları oluşturur:

# Set up a host file entry if none exists 
hostFileEntry="127.0.0.1 ${JOB_NAME}.loc" 
if fgrep -i "$hostFileEntry" /etc/hosts 
then 
     echo "${hostFileEntry}" already in hosts file 
else 
     echo $hostFileEntry >> /etc/hosts 
fi 

# Set up a virtual host for this job 
echo "<VirtualHost *:80>" > /etc/httpd/conf.d/${JOB_NAME}.conf 
echo " ServerName ${JOB_NAME}.loc" >> /etc/httpd/conf.d/${JOB_NAME}.conf 
echo " DocumentRoot ${WORKSPACE}/public" >> /etc/httpd/conf.d/${JOB_NAME}.conf 
echo "  <Directory ${WORKSPACE}/public>" >> /etc/httpd/conf.d/${JOB_NAME}.conf 
echo "   AllowOverride all" >> /etc/httpd/conf.d/${JOB_NAME}.conf 
echo "   Order allow,deny" >> /etc/httpd/conf.d/${JOB_NAME}.conf 
echo "   Allow from all" >> /etc/httpd/conf.d/${JOB_NAME}.conf 
echo "  </Directory>" >> /etc/httpd/conf.d/${JOB_NAME}.conf 
echo "</VirtualHost>" >> /etc/httpd/conf.d/${JOB_NAME}.conf 

# Reload Apache 
sudo /sbin/service httpd reload 

Daha sonra Behat'i bu çalışma alanlarına karşı çalıştırdık ve sonuçları JUnit formatında çıktıları ile bütünleştiriyoruz. Bu izinler biraz tweaking gerekli, ancak bu bizim için çok güzel çalışıyor, yardımınız için çok teşekkürler :-)

+0

Bunun için teşekkürler. Bu betiği, bu betiği yerleştiren bir paket sağlayarak deniyorum. Tüm sunucu dağıtımı için soyut değil ama fikir burada. https://github.com/prestaconcept/meta-ci. – DEY

1

Sen PHP hizmet etmek Ruby'nin Rack kullanmak mümkün olabilir. Herhangi bir javascript senaryosu olmadığı sürece senaryolarınızı çalıştırmak için bir web sunucusuna ihtiyacınız olmaz.

Javascript senaryoları için jenkins örneğime web sunucusu ve php yükledim. Sanal konak, yapının bir parçası olarak oluşturulur ve jenkins 'çalışma alanına işaret eder.

1

Başka bir seçenek Mink için ince çerçeve sürücüsü (Symfony'nin birine sahiptir gibi) uygulanması olacaktır:

+0

Teşekkürler, her ikisi de mükemmel öneriler –

0

Php 5.3 ile bir vagrant sunucu dağıtabilirsiniz. Bu "başka bir VM" ama inanılmaz derecede kullanışsız.