【发布时间】:2013-05-21 01:07:25
【问题描述】:
Travis CI 持续集成服务官方支持很多languages,但不支持C#或F#。
我可以在我的 .net 项目中使用它吗?
【问题讨论】:
Travis CI 持续集成服务官方支持很多languages,但不支持C#或F#。
我可以在我的 .net 项目中使用它吗?
【问题讨论】:
请参阅danielnixon's answer 了解现在执行此操作的官方方法。
有可能。
在您自己的单声道机器上,使用终端 cd 进入您的解决方案目录并运行命令 xbuild。这可能会自动起作用,也可能不会,因为您在 Visual Studio 中使用的某些功能需要在单声道中进行一些调整。
注意事项:
.csproj linux 有区分大小写的路径,而 windows 没有。xbuild 之前先 export EnableNuGetPackageRestore=true。mozroots --import --sync 安装它们。nuget.* 而不是 NuGet.* 引用已知存在于各种版本的 nuget 中。.fsproj 以通过添加 '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT' 来触发非 Windows 机器上的 VS2012 配置,请参阅 example。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. 使用平台条件(在Mono 3.0.11 或更早版本中提及)或升级到3.1.2。<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup> 或Condition="$(OS) != 'Windows_NT' 用于单声道。你的旅费可能会改变。见工作example。.ci/nunit.sh 是我自己的用于 nunit 测试的 shell 脚本,已检查到 repo 的根目录中。所以我可以使用 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 $?
为了测试最新的单声道,最简单的方法是使用 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。
【讨论】:
sudo installer -pkg。请帮我解决它吗?谢谢!看,travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c 是该模板所必需的,因此它使用 OS X 主机。
这是关键点 - 项目必须在 Mono 上运行。这主要适用于图书馆风格的项目(AWS SDK .NET 是一个很好的例子),尽管需要更多的开发工作和纪律。如果您正在为 Windows 平台(如 WPF 应用程序、Azure 云服务、Windows Phone/Store 应用程序甚至 ASP.NET Web API)开发项目,Linux 构建环境将无法正常工作。
AppVeyor CI 是针对 Windows 平台的托管持续集成服务,对开源项目是免费的。就像适用于 Windows 的 Travis CI!
您可以为 VS.NET 解决方案、自定义 MSBuild 项目、PSake 或批处理文件的任何 PowerShell 脚本设置构建过程。此外,AppVeyor 具有内置的工件管理和部署框架。
【讨论】:
Travis CI 现在supports 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 包。要覆盖它,您可以像这样设置安装属性:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
【讨论】:
如前所述,Travis CI 有测试版support for C#。我可以直接使用。 nunit 也可以很容易地集成。 这是一个 .travis.yml 文件的小示例,它运行 nunit 测试并在至少一个单元测试失败时将构建标记为失败:
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。像魅力一样工作。
如果你想将 Travis CI 与 F#、GitHub 上的 FAKE 和 Packet 一起使用,那么推荐使用 F# ProjectScaffold:
【讨论】: