Dịch vụ tích hợp liên tục Travis CI chính thức hỗ trợ nhiều ngôn ngữ , nhưng không phải C # hoặc F #.
Tôi có thể sử dụng nó với các dự án .net của mình không?
Câu trả lời:
Travis CI hiện hỗ trợ C # . Trích dẫn tự do từ trang đó:
Tổng quat
Thiết lập cho các dự án C #, F # và Visual Basic trông giống như sau:
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
Kịch bản
Theo mặc định, Travis sẽ chạy xbuild solution-name.sln. Xbuild là một công cụ xây dựng được thiết kế để triển khai cho công cụ MSBuild của Microsoft. Để ghi đè điều này, bạn có thể đặt thuộc tính script như sau:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
Theo mặc định, Travis sẽ chạy nuget restore solution-name.sln, khôi phục tất cả các gói NuGet từ tệp giải pháp của bạn. Để ghi đè điều này, bạn có thể đặt thuộc tính cài đặt như sau:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
Xem câu trả lời của danielnixon để biết cách chính thức để thực hiện việc này ngay bây giờ.
Điều đó là có thể.
Trên máy mono của riêng bạn, sử dụng thiết bị đầu cuối, cd
vào thư mục giải pháp của bạn và chạy lệnh xbuild
. Điều này có thể tự động hoạt động hoặc có thể không, vì có những tính năng bạn đã sử dụng trong studio trực quan cần một số điều chỉnh ở chế độ đơn âm.
Những điều cần chú ý:
.csproj
linux của bạn có các đường dẫn phân biệt chữ hoa chữ thường trong đó cửa sổ không.export EnableNuGetPackageRestore=true
trước khi chạy xbuild
nếu dự án của bạn tự động khôi phục.mozroots --import --sync
để cài đặt chúng.nuget.*
thay vì các NuGet.*
tham chiếu trong .csproj của bạn đã được biết là tồn tại trong các phiên bản khác nhau của nuget..fsproj
để kích hoạt cấu hình VS2012 trên các máy không chạy windows bằng cách thêm '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
xem ví dụ .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.
Điều kiện nền tảng sử dụng (được đề cập trong Mono 3.0.11 hoặc phiên bản cũ hơn ) hoặc nâng cấp lên 3.1.2.<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
hoặc Condition="$(OS) != 'Windows_NT'
cho đơn tính. Số dặm của bạn có thể thay đổi. Xem ví dụ làm việc ..ci/nunit.sh
là tập lệnh shell của riêng tôi để kiểm tra nunit, được kiểm tra trong thư mục gốc của repo. Vì vậy, tôi có thể cài đặt phiên bản nunit-console mà tôi muốn với nuget và định cấu hình các danh mục bao gồm / loại trừ khác nhau. Số dặm của bạn có thể thay đổi, nhưng kỹ thuật này sẽ hoạt động đối với xunit, v.v. Hoặc làm việc của riêng bạn với xbuild hoặc giả .
#!/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 $?
Để thử nghiệm mono mới nhất, dễ nhất là sử dụng máy chủ Mac (nhắm mục tiêu bằng cách sử dụng language:objective-c
Mono v3.1.2 và sau đó đã thay đổi phân phối trên máy Mac từ DMG thành chỉ PKG nên việc cài đặt khá đơn giản. Mẫu này sẽ hỗ trợ Thư viện lớp di động, .NET 4.5.1 và 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
Tôi dễ dàng sử dụng máy chủ Mac để thiết lập ma trận xây dựng cho nhiều phiên bản Mono. Xem kịch bản bên dưới
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
Và bây giờ bạn nên sử dụng travis trong dự án c # của mình.
sudo installer -pkg
. Xin vui lòng giúp tôi sửa chữa nó? Cảm ơn bạn! xem, travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c
là cần thiết cho mẫu đó, để nó sử dụng máy chủ OS X.
Đó là điểm mấu chốt - dự án phải hoạt động trên Mono. Điều này hầu hết hoạt động cho các dự án kiểu thư viện ( AWS SDK .NET là một ví dụ điển hình) mặc dù đòi hỏi nhiều nỗ lực phát triển và kỷ luật hơn. Môi trường xây dựng Linux sẽ không hoạt động nếu bạn đang phát triển một dự án cho nền tảng Windows như ứng dụng WPF, dịch vụ đám mây Azure, ứng dụng Windows Phone / Store hoặc thậm chí là ASP.NET Web API.
AppVeyor CI là một dịch vụ tích hợp liên tục được lưu trữ trên nền tảng Windows và hoàn toàn miễn phí cho các dự án nguồn mở. Nó giống như Travis CI dành cho Windows!
Bạn có thể thiết lập quy trình xây dựng cho giải pháp VS.NET, dự án MSBuild tùy chỉnh, PSake hoặc bất kỳ tập lệnh PowerShell nào của tệp loạt. Bên cạnh đó, AppVeyor có sẵn khung quản lý và triển khai tạo tác.
Như đã đề cập, Travis CI có hỗ trợ beta cho C # . Tôi sẽ thẳng thắn sử dụng. Ngoài ra nunit có thể được tích hợp rất dễ dàng. Dưới đây là một ví dụ nhỏ về tệp .travis.yml chạy thử nghiệm nunit và đánh dấu bản dựng là không thành công nếu ít nhất một thử nghiệm đơn vị không thành công:
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
ở cuối. Hoạt động như một sự quyến rũ.
Nếu bạn muốn sử dụng Travis CI với F #, trên GitHub, với FAKE và Packet, thì F # ProjectScaffold được khuyến nghị: