2012-08-06 24 views
5

我最近在使用修身microframework我貝哈特測試工作得很好,但我想運行他們作爲我的生成,使用由塞巴斯蒂安·伯格曼的詹金斯的PHP模板一部分的PHP項目,Mink開始使用Behat貝金與詹金斯 - 如何提供PHP應用程序?

爲此,我希望我需要運行Web服務器來爲Slim應用程序提供服務。顯而易見的答案似乎是內置在Web服務器中的PHP 5.4,但我僅限於PHP 5.3。

我現在唯一的想法是有一個部署階段,如果Ant構建通過,Jenkins會在服務器上部署一個工作區,然後運行Behat測試。這感覺將會是很多工作,並可能是片狀,再加上它將需要旋轉另一個虛擬機,我寧願避免。我們希望通過大量不同的項目來使用Behat,所以「一次性」更好。

解決此問題的最佳方法是什麼?

回答

7

我們跟到底去解決的辦法是很像的Jakub建議 - 我們的詹金斯實例生成的Apache虛擬主機文件conf.d爲使用貝哈特每個工作區,使用腳本類似以下內容:

# 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 

然後,我們針對這些工作區運行Behat並以JUnit格式輸出,以將結果與我們的構建集成。它需要一些權限的調整,但這對我們來說非常好,非常感謝您的幫助:-)

+0

感謝您的。我正在通過提供嵌入此腳本的軟件包來嘗試此解決方案。這對所有服務器發行版來說都不是抽象的,但這個想法就在這裏。 https://github.com/prestaconcept/meta-ci。 – DEY 2013-10-25 12:34:21

1

另一種辦法是實施對水貂修身框架驅動程序(就像Symfony的有一個)。只要沒有javascript場景,您就不需要Web服務器來運行您的場景。

對於javascript場景,我只需在我的jenkins實例上安裝web服務器和php。虛擬主機被創建爲構建的一部分並指向jenkins的工作區。

+0

謝謝,都是優秀的建議 – 2012-08-22 13:13:54

0

您可以使用php 5.3部署vagrant服務器。這是「另一個虛擬機」,但它非常一次性。