Travis CI 継続的インテグレーション サービスは、多くの言語を公式にサポートしていますが、C# や F# はサポートしていません。
.net プロジェクトで使用できますか?
これを今すぐ行う公式の方法については、ダニエルニクソンの回答を参照してください。
可能です。
独自の mono マシンで、ターミナルを使用cd
してソリューション ディレクトリに移動し、コマンドを実行しますxbuild
。これは自動的に機能する場合もあれば、機能しない場合もあります。これは、ビジュアル スタジオで使用した機能を mono で微調整する必要があるためです。
注意事項:
.csproj
。Windows では大文字と小文字を区別しないパスが Linux にはあります。export EnableNuGetPackageRestore=true
実行する前にNuget を実行する必要があります。xbuild
mozroots --import --sync
してインストールしてください。nuget.*
の参照の代わりにNuGet.*
、さまざまなバージョンの nuget に存在することがわかっています。.fsproj
を追加して、Windows 以外のマシンで VS2012 構成をトリガーするように編集する必要がある場合があります。'$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
Unable to find framework corresponding to the target framework moniker '.NETPortable,Version=v4.0,Profile=ProfileX'. Framework assembly references will be resolved from the GAC, which might not be the intended behavior.
Use Platform Conditions (Mono 3.0.11 以前で言及)を探すか、3.1.2 にアップグレードします。<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
基本的に、物事を条件付きプロパティグループまたはモノに分けることによってCondition="$(OS) != 'Windows_NT'
。あなたのマイレージは異なる場合があります。作業例を参照してください。.ci/nunit.sh
リポジトリのルートにチェックインされた、nunit テスト用の私自身のシェル スクリプトです。したがって、nuget で必要な nunit-console バージョンをインストールし、カテゴリのさまざまな包含/除外も構成できます。走行距離は異なる場合がありますが、この手法は xunit などで機能するはずです。または、 xbuild またはfakeを使用して独自のことを行ってください。
#!/bin/sh -x
mono --runtime=v4.0 .nuget/NuGet.exe install NUnit.Runners -Version 2.6.1 -o packages
runTest(){
mono --runtime=v4.0 packages/NUnit.Runners.2.6.1/tools/nunit-console.exe -noxml -nodots -labels -stoponerror $@
if [ $? -ne 0 ]
then
exit 1
fi
}
#This is the call that runs the tests and adds tweakable arguments.
#In this case I'm excluding tests I categorized for performance.
runTest $1 -exclude=Performance
exit $?
最新の mono をテストするには、Mac ホストを使用するのが最も簡単です ( language:objective-c
Mono v3.1.2 以降を使用してターゲットを設定すると、Mac での配布が DMG から単なる PKG に変更されるため、インストールは非常に簡単になります。このテンプレートは、ポータブル クラス ライブラリ、.NET をサポートする必要があります。 4.5.1、および FSharp 3.1。
language: objective-c
env:
global:
- EnableNuGetPackageRestore=true
matrix:
- MONO_VERSION="3.8.0"
before_install:
- wget "http://download.mono-project.com/archive/${MONO_VERSION}/macos-10-x86/MonoFramework-MDK-${MONO_VERSION}.macos10.xamarin.x86.pkg"
- sudo installer -pkg "MonoFramework-MDK-${MONO_VERSION}.macos10.xamarin.x86.pkg" -target /
script:
- xbuild
- .ci/nunit.sh Tests/bin/Debug/Tests.dll
Mac ホストを使用して、複数のバージョンの Mono のビルド マトリックスをセットアップするのは簡単です。以下のスクリプトを参照してください
language: objective-c
env:
global:
- EnableNuGetPackageRestore=true
matrix:
- MONO_VER="2.10.11"
- MONO_VER="3.0.12"
before_install:
- wget "http://download.mono-project.com/archive/${MONO_VER}/macos-10-x86/MonoFramework-MDK-${MONO_VER}.macos10.xamarin.x86.dmg"
- hdid "MonoFramework-MDK-${MONO_VER}.macos10.xamarin.x86.dmg"
- sudo installer -pkg "/Volumes/Mono Framework MDK ${MONO_VER}/MonoFramework-MDK-${MONO_VER}.macos10.xamarin.x86.pkg" -target /
script:
- xbuild
- .ci/nunit.sh Tests/bin/Debug/Tests.dll
これで、C# プロジェクトで travis を使用できるようになりました。
これが重要なポイントです。プロジェクトは Mono 上で動作する必要があります。これはほとんどの場合、ライブラリ スタイルのプロジェクト ( AWS SDK .NETが良い例です) で機能しますが、より多くの開発努力と規律が必要です。WPF アプリケーション、Azure クラウド サービス、Windows Phone/ストア アプリ、さらには ASP.NET Web API などの Windows プラットフォーム向けのプロジェクトを開発している場合、Linux ビルド環境は機能しません。
AppVeyor CIは、Windows プラットフォーム向けのホストされた継続的インテグレーション サービスであり、オープン ソース プロジェクトでは無料です。それは Windows 用の Travis CI のようなものです!
VS.NET ソリューション、カスタム MSBuild プロジェクト、PSake、またはバッチ ファイルの任意の PowerShell スクリプトのビルド プロセスをセットアップできます。さらに、AppVeyor にはアーティファクトの管理と展開のフレームワークが組み込まれています。
Travis CIが C# をサポートするようになりました。そのページから自由に引用する:
概要
C#、F#、および Visual Basic プロジェクトのセットアップは次のようになります。
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
脚本
デフォルトでは、Travis は xbuild solution-name.sln を実行します。Xbuild は、Microsoft の MSBuild ツールの実装として設計されたビルド ツールです。これをオーバーライドするには、次のようにスクリプト属性を設定できます。
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
デフォルトでは、Travis は nuget restore solution-name.sln を実行します。これにより、ソリューション ファイルからすべての NuGet パッケージが復元されます。これをオーバーライドするには、次のように install 属性を設定します。
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
既に述べたように、Travis CIはC# のベータ版をサポートしています。私は簡単に使用できません。また、nunit は非常に簡単に統合できます。nunit テストを実行し、少なくとも 1 つの単体テストが失敗した場合にビルドを失敗としてマークする .travis.yml ファイルの小さな例を次に示します。
language: csharp
solution: ./src/yoursolution.sln
install:
- sudo apt-get install nunit-console
- nuget restore ./src/yoursolution.sln
script:
- xbuild ./src/yoursolution.sln
- nunit-console ./src/SomeLibrary.Tests/bin/Debug/SomeLibrary.Tests.dll
Travis CI を F#、GitHub、FAKE および Packet で使用する場合は、F# ProjectScaffold をお勧めします。