首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Behat with Jenkins -如何为PHP应用程序提供服务?

Behat with Jenkins -如何为PHP应用程序提供服务?
EN

Stack Overflow用户
提问于 2012-08-07 01:00:15
回答 4查看 2.8K关注 0票数 5

我最近开始在一个使用Slim微框架的项目中使用BehatMink。我的Behat测试运行得很好,但我想将它们作为构建的一部分来运行,我的构建使用了Sebastian Bergmann的Jenkins-PHP模板。

要做到这一点,我预计我需要运行一个web服务器来为Slim应用程序提供服务。显而易见的答案似乎是PHP5.4内置的web服务器,但我只能使用PHP5.3。

我目前唯一的想法是有一个部署阶段,在这个阶段,如果Ant构建通过,Jenkins将在服务器上部署一个工作区,然后针对该工作区运行Behat测试。这感觉会有很多工作要做,而且可能不稳定,而且还需要启动另一个VM,这是我希望避免的。我们正在寻找在大量不同的项目中使用Behat,因此一些“一次性”将是更可取的。

解决这个问题的最佳方法是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-22 21:20:50

我们最终采用的解决方案与Jakub建议的非常相似--我们的Jenkins实例使用如下脚本,在conf.d中为每个使用Behat的工作区生成Apache vhost文件:

代码语言:javascript
复制
# 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格式输出,以将结果与我们的构建集成。它需要一些权限调整,但这对我们非常有效,非常感谢您的帮助:-)

票数 8
EN

Stack Overflow用户

发布于 2012-08-07 19:10:25

你可以使用Ruby的Rackhttps://github.com/jimeh/php-rack

票数 1
EN

Stack Overflow用户

发布于 2012-08-07 22:35:08

另一种选择是为Mink实现Slim框架驱动(就像Symfony有一个)。只要没有javascript场景,你就不需要are服务器来运行你的场景。

对于javascript场景,我只需在jenkins实例上安装web服务器和php即可。虚拟主机是作为构建的一部分创建的,并指向jenkins的工作区。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11832674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档