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サービスを知っている場合は、コメントで共有してください。

Source: https://habr.com/ru/post/J242685/


All Articles