GitHub と連携できる CI サービスを使用して、.NET Core で作成したアプリケーションの継続的インテグレーションを行ってみました。
環境
- Visual Studio 2017
- .NET Core 2.0
- C# 7.0
- xUnit.NET
検討した CI サービス
Microsoft のページでは、Travis CI
AppVeyor
Visual Studio Team Services
について説明されています。
また、こちらの記事で Travis CI
CircleCI
AppVeyor
について説明されていたので、参考にさせていただきました。
AppVeyor は Windows 環境らしいので、.NET とは最も親和性が高そうです。
しかし、.NET Core はクロスプラットフォームに対応しているので Linux でも問題ないですし、私は CI サービス自体を使うのが初めてだったので、とりあえずメジャーな Travis CI を使うことにしてみました。
準備
Travis CI に GitHub アカウントで登録(サインアップ)します。
すると、自動的に GitHub のリポジトリ情報が取得されます。
Travis CI の画面右上から [ユーザー名] > [Accounts] を選択します。
画面にリポジトリの一覧が表示されるので、CI を有効化したいリポジトリのトグルを ON にしておきます。
これだけで Push や Pull Request をトリガーとして CI が開始されるそうです。
.travis.yml の作成
リポジトリのルート(≒Visual Studio のソリューションフォルダ)の配下に .travis.yml
を作成します。
内容は以下のようにしました。
# .travis.yml
language: csharp
dist: trusty
dotnet: 2.0.0
mono: none
env:
global:
- DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
- DOTNET_CLI_TELEMETRY_OPTOUT: 1
script:
- dotnet restore
- dotnet test テストプロジェクト名
ほぼ以下のサンプルコードのままです。
あとはこれを GitHub に Push すると、自動的にテストが実行されます。
ビルドやテストに失敗した場合は GitHub アカウントのメールアドレスにメールで通知されます。
簡単すぎかつ便利でびっくりしました。
簡単な解説
ほぼサンプルコードのままですが、一応調べてみた範囲で解説してみます。
DOTNET_SKIP_FIRST_TIME_EXPERIENCE
これに関してはググってもドキュメントが非常に少ないですが、1 に設定するとどうもビルドマシン上へのパッケージのインストールとかキャッシュとかを防止するようです。
.NET Core は Travis CI 側で既に用意されているからインストール不要ということでしょうか?
よくわかりません。
DOTNET_CLI_TELEMETRY_OPTOUT
これは .NET Core CLI ツールの製品利用統計情報だそうです。
1 に設定すると無効化されます。
バッジの追加
CI 環境が整ったら GitHub にバッジを貼り、自己満足に浸ります。
Markdown を選択し、コピーした内容を README.md に貼り付けます。