5

最近、Slim マイクロフレームワークを使用する PHP プロジェクトでBehatMinkの使用を開始しました。Behat テストは正常に動作しますが、Sebastian Bergmann による Jenkins-PHP テンプレートを使用するビルドの一部として実行したいと考えています。

これを行うには、Slim アプリを提供する Web サーバーを実行する必要があると思います。明らかな答えは PHP 5.4 のビルトイン Web サーバーのようですが、私は PHP 5.3 に制限されています。

現時点で私が持っている唯一のアイデアは、Ant ビルドが成功した場合に Jenkins がサーバーにワークスペースをデプロイし、それに対して Behat テストを実行するデプロイ フェーズを持つことです。これは大変な作業になり、不安定になる可能性があるように感じます。さらに、別の VM をスピンアップする必要があるため、これは避けたいと思います。多数の多様なプロジェクトで Behat を採用することを検討しているため、「使い捨て」のものが望ましいでしょう。

この問題を解決する最善の方法は何ですか?

4

4 に答える 4

8

最終的に採用したソリューションは、Jakub が提案したものとほぼ同じです。Jenkins インスタンスは、次のようなスクリプトを使用して、Behat を使用するワークスペースごとに conf.d に Apache vhost ファイルを生成します。

# 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 形式で出力して、結果をビルドに統合します。アクセス許可の微調整が必​​要でしたが、これは私たちにとって非常にうまく機能しています。あなたの助けに感謝します:-)

于 2012-08-22T13:20:50.267 に答える
1

Rubyのラックを使用してPHPを提供できる場合があります: https ://github.com/jimeh/php-rack

于 2012-08-07T11:10:25.257 に答える
1

もう 1 つのオプションは、Mink 用の Slim フレームワーク ドライバーを実装することです (Symfony にあるように)。JavaScript シナリオがない限り、シナリオを実行するために Web サーバーは必要ありません。

JavaScript のシナリオでは、jenkins インスタンスに Web サーバーと php をインストールするだけです。仮想ホストはビルドの一部として作成され、jenkins のワークスペースを指します。

于 2012-08-07T14:35:07.537 に答える
0

php 5.3 を使用して vagrant サーバーをデプロイできます。これは「別の VM」ですが、信じられないほど使い捨てです。

于 2013-06-26T16:53:43.223 に答える