Codeship.io:プライベートGithub / Bitbucketリポジトリ用の無料CIサーバー



すぐに興味をそそります。その結果、Bitbucketの無料のプライベート gitリポジトリと無料の * Continious Integrationサーバー(SAAS)を入手します。これらはプロジェクトを収集し、各プッシュ後にすべてのテストを実行します。

*-無料のサブスクリプションでは、1か月に5つのプライベートリポジトリと最大100のビルドをテストできます。



私の個人的なプロジェクトにはこれで十分です。



Symfony2のプロジェクトであるPHPの例を挙げますが、このサービスはRuby、Node.js、Pythonサポートしています。





挑戦する









実装





登録後、新しいプロジェクトを作成し、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について好きなこと:





気に入らなかったもの





プライベートリポジトリを無料でテストできる他のSaaSサービスを知っている場合は、コメントで共有してください。



All Articles