Travis CI 지속적 통합 서비스는 공식적으로 많은 언어를 지원 하지만 C # 또는 F # 은 지원 하지 않습니다.
.net 프로젝트에서 사용할 수 있습니까?
답변:
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 패키지를 복원하는 nuget restore solution-name.sln을 실행합니다. 이를 재정의하려면 다음과 같이 설치 속성을 설정할 수 있습니다.
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
지금 공식적으로 수행하는 방법 은 danielnixon의 답변 을 참조하십시오 .
것이 가능하다.
자신의 모노 머신에서 터미널을 사용 cd
하여 솔루션 디렉토리로 이동하고 명령을 실행합니다 xbuild
. 모노에서 약간의 조정이 필요한 Visual Studio에서 사용한 기능이 있기 때문에 자동으로 작동 할 수도 있고 그렇지 않을 수도 있습니다.
주의해야 할 사항 :
.csproj
Linux 와 일치하는지 확인하십시오 .export EnableNuGetPackageRestore=true
되는 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.
사용 플랫폼 조건 (아래에서 언급 한 모노 3.0.11 이전 버전 ) 또는 3.1.2로 업그레이드.<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
또는 Condition="$(OS) != 'Windows_NT'
모노 로 분리 합니다. 귀하의 마일리지가 다를 수 있습니다. 작업 예를 참조하십시오 ..ci/nunit.sh
nunit 테스트를위한 내 자신의 셸 스크립트이며 저장소의 루트에 체크인되었습니다. 그래서 원하는 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 $?
최신 모노를 테스트하려면 Mac 호스트를 사용하는 것이 가장 쉽습니다 ( language:objective-c
Mono v3.1.2 이상 을 사용하여 Mac에서 배포를 DMG에서 PKG로 변경하여 설치가 매우 간단합니다.이 템플릿은 Portable Class Libraries, .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
여러 버전의 Mono에 대한 빌드 매트릭스를 설정하기 위해 Mac 호스트를 사용하기 쉽습니다. 아래 스크립트 참조
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를 사용하는 것이 좋습니다.
sudo installer -pkg
. 문제를 해결하도록 도와 주시겠습니까? 감사합니다! 참조, travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c
해당 템플릿에 필요하므로 OS X 호스트를 사용합니다.
이것이 핵심 포인트입니다. 프로젝트는 Mono에서 작동해야합니다. 이는 대부분 라이브러리 스타일 프로젝트 ( AWS SDK .NET 이 좋은 예)에서 작동하지만 더 많은 개발 노력과 규율이 필요합니다. WPF 애플리케이션, Azure 클라우드 서비스, Windows Phone / Store 앱 또는 ASP.NET Web API와 같은 Windows 플랫폼 용 프로젝트를 개발하는 경우 Linux 구축 환경이 작동하지 않습니다.
AppVeyor CI 는 Windows 플랫폼 용으로 호스팅되는 지속적 통합 서비스이며 오픈 소스 프로젝트에는 무료입니다. Windows 용 Travis CI와 같습니다!
VS.NET 솔루션, 사용자 지정 MSBuild 프로젝트, PSake 또는 배치 파일의 PowerShell 스크립트에 대한 빌드 프로세스를 설정할 수 있습니다. 게다가 AppVeyor에는 내장 된 아티팩트 관리 및 배포 프레임 워크가 있습니다.
이미 언급했듯이 Travis CI 는 C #에 대한 베타 지원을 제공합니다 . 나는 사용하기 직진합니다. 또한 nunit은 매우 쉽게 통합 될 수 있습니다. 다음은 nunit 테스트를 실행하고 하나 이상의 단위 테스트가 실패하면 빌드를 실패로 표시하는 .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
sudo: required
끝에 있습니다. 매력처럼 작동합니다.
F #, GitHub, FAKE 및 Packet과 함께 Travis CI를 사용하려면 F # ProjectScaffold를 사용하는 것이 좋습니다.