PostgreSQLを使用する.NET CoreプロジェクトのTravis CIサービスでユニットテストを自動的に実行するように構成する方法について説明します。
この記事は、クイックスタートの例として使用できます。
私は趣味のプロジェクトを持っています-.NET Coreへのバージョン管理されたデータベースの移行のためのツールです。 彼は、PostgreSQLを含むいくつかのDBMSを操作する方法を知っています。 プロジェクトにはいくつかのテスト( xUnit )があり、これらのテストもPostgreSQLが動作する必要があります。
Travis CIについて多くのことを聞き、テストを自動的に実行するように設定することを長い間望んでいましたが、次の2つのことが私を止めました。
- Travis CIと.NET Coreを横断する方法は不明でした。
- テスト用にPostgreSQLを構成する方法は明確ではありません。
半日ドキュメントの勉強と実験に費やしたので、私はテストをセットアップし、それについてお話したいと思います。
Travis CIとは
Travis CIは、Githubのプロジェクト向けの継続的な統合サービスです。 リポジトリに何かをコミットすると、Travis CIはさまざまな便利なアクションを自動的に実行できます。 たとえば、単体テストを実行してlintersをコーディングできます。 これらの便利なアクションを「ビルド」(「ビルド」)と呼びます。
リポジトリ用にTravis CIを設定するには、Travis CI Webインターフェースでリポジトリアドレスを指定し、プロジェクトルートにビルド設定を.travis.yml
ファイルを配置する.travis.yml
ます。
Travis CIを構成する
最初に行うことは、GitHubアカウントを使用してhttps://travis-ci.orgにログインすることです。 その後、すべてのリポジトリのリストが表示されます。 Travisとの統合を有効にするリポジトリの反対側のスイッチをクリックします。
次に、選択したリポジトリの設定に移動します。 ここで、アセンブリを実行する必要があるケースを構成できます。 リポジトリ内のすべてのプッシュ操作で、またプル要求を作成または変更するときに、アセンブリを実行する必要があることを指摘しました。 さらに、 .travis.yml
構成ファイルがリポジトリのルートにある場合にのみアセンブリを開始する必要があることを指摘しました。
.NET Coreの.Travis.ymlの例
次のステップは、ビルド設定を.travis.yml
ファイルをリポジトリに追加することです。 .NET Coreでプロジェクトをビルドするには、 .travis.yml
ファイルは次のようになります。
language: csharp sudo: required dist: trusty mono: none dotnet: 2.0.0-preview2-006497 before_script: - dotnet restore script: - dotnet test ./ThinkingHome.Migrator.Tests -c Release -f netcoreapp2.0
ここに何が書かれているか見てみましょう:
-
mono: none
このパラメーターは、アセンブリに使用するMonoのバージョンを設定します。 なぜなら .NET Coreのプロジェクトを構築しています。初期化に時間を無駄にしないようにMonoをオフにします。 -
dotnet: 2.0.0-preview2-006497
ここで、必要な.NET Coreのバージョンを設定します。 Runtimeバージョンではなく、SDKバージョンを指定する必要があることに注意してください。 -
before_script:
-ビルドの開始前に実行する必要があるコマンド。 これまでのところ、dotnet restore
コマンドは1つだけです(NuGetから必要なパッケージをインストールします)。 ここで、それぞれが別々の行にあるいくつかのコマンドを書くことができます。 -
script:
-基本的なビルドコマンド。 私たちの場合、これはThinkingHome.Migrator.Tests
プロジェクトにあるテストの開始です。 起動時に、Release
構成とターゲットフレームnetcoreapp2.0
が使用されます。 繰り返しますが、複数のコマンドを実行する必要がある場合は、それぞれを別々の行に記述してください。
設定ファイルをリポジトリにコミットする前に、 script
セクションとbefore_script
セクションのコマンドがエラーなしでローカルにbefore_script
れることを確認してください。 その後、.travis.ymlファイルをコミットし、変更をリモートサーバーにプッシュします。
git add .travis.yml git commit -m "Add travis config file" git push
数秒後、Travisが変更を確認し、アセンブリを開始したことがわかります。 コンソールに表示されたすべてのものを含む、アセンブリに関する詳細情報を表示できます。 .NET Coreがインストールされ、テストが開始されたことがわかります。
また、テストが落ちたこともわかります 彼らは利用できないデータベースにアクセスします。
PostgreSQL接続
PostgreSQLをアセンブリに接続しましょう。 これを行うには、 postgresql
エントリを.travis.yml
services
セクションを.travis.yml
に追加し、 .travis.yml
セクションのpsql
ユーティリティを使用してテスト用のデータベースを作成するコマンドを追加します。
services: - postgresql before_script: - psql -c "CREATE DATABASE migrations;" -U postgres ...
デフォルトでは、パスワードなしでpostgres
ユーザーとして接続できるpostgres
データベースが使用可能です。 これらのデフォルト設定に依存しないように、テスト用に個別のユーザーとデータベースを作成します。 新しいデータベースで何かを行う必要がある場合は、 -d
パラメーターでその名前を指定することを忘れないでください。
.travis.yml
ファイルの全文.travis.yml
次のとおりです。
language: csharp sudo: required mono: none dotnet: 2.0.0-preview2-006497 dist: trusty services: - postgresql before_script: - psql -c "CREATE DATABASE migrations;" -U postgres - psql -c "CREATE USER migrator WITH PASSWORD '123';" -U postgres - psql -c 'CREATE SCHEMA "Moo" AUTHORIZATION migrator;' -U postgres -d migrations - dotnet restore script: - dotnet test ./ThinkingHome.Migrator.Tests -c Release -f netcoreapp2.0
変更されたファイルをコミットし、リモートサーバーにプッシュします。 多田!!! 今回はテストが成功しました!
おわりに
いいね! PostgreSQLを使用して、.NET Coreプロジェクト用にTravis CIを構成する方法を見つけました。 これで、 Shields.ioサービスを使用して最後のビルドの結果を示すタグをプロジェクトのreadmeに追加できます。
[](https://travis-ci.org/thinking-home/migrator)
ご清聴ありがとうございました!