
すぐに興味をそそります。その結果、Bitbucketの無料のプライベート gitリポジトリと無料の * Continious Integrationサーバー(SAAS)を入手します。これらはプロジェクトを収集し、各プッシュ後にすべてのテストを実行します。
*-無料のサブスクリプションでは、1か月に5つのプライベートリポジトリと最大100のビルドをテストできます。
私の個人的なプロジェクトにはこれで十分です。
Symfony2のプロジェクトであるPHPの例を挙げますが、このサービスはRuby、Node.js、Pythonもサポートしています。
挑戦する
- composerを介してsymfony2と依存関係をインストールする
- PHPUnitテストを実行する
- Behatテストの実行
実装
登録後、新しいプロジェクトを作成し、Bitbucketと同期し、プロジェクト設定でアセンブリに必要なコマンドを作成します。
定義済みのテンプレートがあります。PHPを選択すると、一連のコマンドは次のようになります。
# Set php version through phpenv. 5.3, 5.4 and 5.5 available phpenv local 5.5 # Install extensions through Pecl # pecl install memcache # Install dependencies through Composer composer install --prefer-source --no-interaction
テクニカルサポートとの短い議論の後、GeoIP拡張機能も必要でした。すべてが順調だったので、コマンドのリストは次のようになりました。
セットアップコマンド
# Set php version through phpenv. 5.3, 5.4 and 5.5 available phpenv local 5.5 # Install extensions through Pecl pecl install -f geoip wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz gunzip GeoLiteCity.dat.gz cp ./GeoLiteCity.dat ./GeoIPCity.dat # , echo "geoip.custom_directory=/home/rof/clone" >> /home/rof/.phpenv/versions/5.5/etc/php.ini # Install dependencies through Composer composer install --prefer-source --no-interaction
技術サポートは、注目に値しますが、非常に優れています。 彼らはすべての問題を助け、すべての質問に答えました。
データベース
Behatテストの場合、データベースをデプロイし、フィクスチャを介してテストデータをインポートし、テストを直接実行する必要があります。
Codeship.io は、 MySQL、MongoDB、PostgreSQL、SQLiteをサポートしています(Elasticsearchがすぐに使えることに驚きました)。 このケースでは、MySQLを使用しており、2つのデータベースがすでに自動的に作成されています-開発とテスト。
パスワードとユーザーは、それぞれ環境変数MYSQL_PASSWORD、MYSQL_USERに保存されます。
Symfony2では、環境変数を設定ファイルのパラメーターとして使用できますが、 いくつかのルールを使用する 、つまり、各変数にSYMFONY__プレフィックスが必要です。
config_test.ymlを変更して、ユーザー、パスワード、データベース名として環境変数を使用します。
// app/config/config_test.yml ... doctrine: dbal: dbname: "%test.database.name%" driver: pdo_mysql user: "%test.database.user%" password: "%test.database.password%" ...
そして、プロジェクトの設定の「セットアップコマンド」でこれらの同じ変数を定義します。
export SYMFONY__TEST__DATABASE__USER=$MYSQL_USER export SYMFONY__TEST__DATABASE__PASSWORD=$MYSQL_PASSWORD export SYMFONY__TEST__DATABASE__NAME=test
これで、MySQLの構成は終了しました。 次に、回路を作成し、フィクスチャを実行してテストデータをインポートします。
php app/console doctrine:schema:update --force --env=test php app/console doctrine:fixtures:load --no-interaction --env=test
さて、組み込みのWebサーバーを起動します。 起動例はドキュメントから取得され、ドキュメントルートを変更するパラメーターのみが追加されます(Symfony2ではこれはWebフォルダーです)。
nohup bash -c "php -S 127.0.0.1:8000 -t web/ 2>&1 &" && sleep 1; cat nohup.out
テスト
これで、すべてのテストを実行できます。 これを行うには、「テストコマンドの変更」という特別なブロックがあり、そこにコマンドを入力します。
phpunit -c app ./bin/behat "@AppApiBundle/api.feature" --profile=api --no-paths ./bin/behat "@AppCoreBundle/core.feature" --profile=core --no-paths
テストの実行中に、xDebugによる問題が発生しました:「致命的なエラー:関数のネストレベルが「100」に達しました」
「セットアップコマンド」のphp.iniを変更して、このパラメーターを増やしましょう。
echo "xdebug.max_nesting_level=200" >> /home/rof/.phpenv/versions/5.5/etc/php.ini
ビルドが失敗した場合、次のような電子メール通知が自動的に表示されます。

ビルドが復元された後にも通知が届きます。
さらに、多くのサービスとの統合があります。

(codeship.ioからの画像)
このサービスには多くのチップがあります。たとえば、すぐに成功したビルドをデプロイできます。
codeship.ioについて好きなこと:
- 無料のプライベートリポジトリをテストする機能。 キラー機能
- 優れた技術サポート
- 詳細なドキュメント
- ElasticSearchのサポートとビルドでの簡単な構成。
気に入らなかったもの :
- デザイン。 ログイン後のアカウント内のもの。 私の意見では、彼はひどいです。
- 制限は1か月あたり100ビルドですが、無料のサブスクリプションにも感謝しています。
プライベートリポジトリを無料でテストできる他のSaaSサービスを知っている場合は、コメントで共有してください。