プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2017/11/12

GitHub と Travis CI で .NET Core の継続的インテグレーションを行う

event_note2017/11/12 1:30

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 に貼り付けます。

参考 URL