2012-08-06 2 views
5

Slim 마이크로 프레임 워크를 사용하는 PHP 프로젝트에서 최근에 BehatMink을 사용하기 시작했습니다. My Behat 테스트는 정상적으로 작동하지만 Sebastian Bergmann의 Jenkins-PHP 템플릿을 사용하는 빌드의 일부로 실행하고 싶습니다.Jenkins와 Behat - PHP 앱을 제공하는 방법?

이렇게하려면 Slim 앱을 제공하기 위해 웹 서버를 실행해야합니다. 명백한 대답은 PHP 5.4가 웹 서버에 내장 된 것으로 보이지만 PHP 5.3으로 제한됩니다.

현재 내가 가지고있는 유일한 생각은 배포 단계입니다. 따라서 Ant 빌드가 통과되면 Jenkins는 서버에서 작업 영역을 배포 한 다음 그에 대한 Behat 테스트를 실행합니다. 이것은 많은 작업이 될 수 있고 벗겨지기 쉽다는 것을 느끼며 플러스하면 다른 VM을 돌릴 필요가 있습니다. 우리는 다수의 다양한 프로젝트에서 Behat을 고용하기를 원하므로 "일회용"이 바람직합니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? https://github.com/jimeh/php-rack

답변

7

우리는 결국 함께 갔다 솔루션은 야쿱 제안 훨씬처럼 - 우리 젠킨스 인스턴스가 다음과 같은 스크립트 뭔가 사용 Behat를 사용하는 각 작업 영역 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

1

당신은 PHP를 제공하기 위해 루비의 Rack을 사용할 수 있습니다. 자바 스크립트 시나리오가없는 한 시나리오를 실행하려면 웹 서버가 필요하지 않습니다.

자바 스크립트 시나리오의 경우 단순히 jenkins 인스턴스에 웹 서버와 PHP를 설치했습니다. 가상 호스트는 빌드의 일부로 생성되고 jenkins의 작업 공간을 가리 킵니다.

1

또 다른 옵션은 밍크 슬림 프레임 워크 드라이버 (심포니가 하나있다처럼) 구현 될 것이다 :

+0

감사합니다. 두 가지 모두 훌륭한 제안입니다. –

0

PHP 5.3으로 업그레이드 서버를 배포 할 수 있습니다. 그것은 "또 다른 VM"이지만 엄청나게 일회용입니다.