บริการผสานรวมอย่างต่อเนื่อง Travis CI รองรับหลายภาษาอย่างเป็นทางการแต่ไม่ใช่ C # หรือ F #
ฉันสามารถใช้กับโปรเจ็กต์. net ได้หรือไม่
บริการผสานรวมอย่างต่อเนื่อง 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 เป็นเครื่องมือสร้างที่ออกแบบมาเพื่อใช้กับเครื่องมือ MSBuild ของ Microsoft หากต้องการลบล้างสิ่งนี้คุณสามารถตั้งค่าแอตทริบิวต์สคริปต์ดังนี้:
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
ดูคำตอบของ danielnixonสำหรับวิธีการอย่างเป็นทางการในตอนนี้
มันเป็นไปได้.
บนเครื่องขาวดำของคุณเองโดยใช้ terminal, ลงในไดเรกทอรีวิธีการแก้ปัญหาของคุณและเรียกใช้คำสั่งcd
xbuild
สิ่งนี้อาจใช้งานได้โดยอัตโนมัติหรืออาจไม่ทำงานเนื่องจากมีคุณสมบัติที่คุณใช้ในสตูดิโอภาพที่ต้องปรับแต่งแบบโมโน
สิ่งที่ต้องระวัง:
.csproj
linux ของคุณมีพา ธ ที่สำคัญตัวพิมพ์เล็กและใหญ่ซึ่ง windows ไม่ได้export EnableNuGetPackageRestore=true
ก่อนxbuild
หากโครงการของคุณกู้คืนอัตโนมัติmozroots --import --sync
เพื่อติดตั้งnuget.*
แทนที่จะมีNuGet.*
การอ้างอิงใน. csproj ของคุณทราบว่ามีอยู่ใน nuget หลายเวอร์ชัน.fsproj
จะเรียกการตั้งค่าในเครื่อง 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.
เงื่อนไขการใช้งานแพลตฟอร์ม (กล่าวถึงในMono 3.0.11 หรือก่อนหน้า ) หรืออัปเกรดเป็น 3.1.2<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
หรือCondition="$(OS) != 'Windows_NT'
สำหรับโมโน ระยะทางของคุณอาจแตกต่างกันไป ดูการทำงานตัวอย่างเช่น.ci/nunit.sh
เป็นเชลล์สคริปต์ของฉันเองสำหรับการทดสอบแม่ชีซึ่งตรวจสอบในรูทของ repo ดังนั้นฉันสามารถติดตั้ง nunit-console เวอร์ชันที่ฉันต้องการด้วย nuget และกำหนดค่าต่างๆรวม / ไม่รวมหมวดหมู่ด้วย ไมล์สะสมของคุณอาจแตกต่างกัน แต่เทคนิคนี้ควรจะทำงานสำหรับ xUnit ฯลฯ หรือทำสิ่งที่คุณเองด้วย xbuild หรือปลอม
#!/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
ฉันใช้โฮสต์ Mac ที่ใช้งานง่ายในการตั้งค่าสำหรับ build matrix สำหรับ 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
และตอนนี้คุณควรจะไปใช้ travis ในโครงการ c # ของคุณ
sudo installer -pkg
แต่ไม่ โปรดช่วยฉันแก้ไขได้ไหม ขอบคุณ! ดูtravis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c
จำเป็นสำหรับเทมเพลตนั้นเพื่อให้ใช้โฮสต์ OS X
นั่นคือประเด็นสำคัญ - โครงการต้องทำงานกับโมโน ซึ่งส่วนใหญ่ใช้ได้กับโปรเจ็กต์แบบไลบรารี ( AWS SDK .NETเป็นตัวอย่างที่ดี) แม้ว่าจะต้องใช้ความพยายามและวินัยในการพัฒนามากกว่าก็ตาม สภาพแวดล้อมการสร้าง Linux จะไม่ทำงานหากคุณกำลังพัฒนาโครงการสำหรับแพลตฟอร์ม Windows เช่นแอปพลิเคชัน WPF บริการคลาวด์ Azure แอป Windows Phone / Store หรือแม้แต่ ASP.NET Web API
AppVeyor CIเป็นบริการรวมต่อเนื่องที่โฮสต์สำหรับแพลตฟอร์ม Windows และฟรีสำหรับโครงการโอเพ่นซอร์ส เหมือนกับ Travis CI สำหรับ Windows!
คุณสามารถตั้งค่ากระบวนการสร้างสำหรับโซลูชัน VS.NET, โครงการ MSBuild แบบกำหนดเอง, PSake หรือสคริปต์ PowerShell ของไฟล์แบตช์ นอกจากนี้ AppVeyor ยังมีกรอบการจัดการและการปรับใช้สิ่งประดิษฐ์ในตัว
ดังกล่าวแล้วเทรวิส CIมีเบต้าสนับสนุนสำหรับ C # ฉันไม่ตรงไปตรงมาที่จะใช้ นอกจากนี้ยังสามารถรวมแม่ชีได้ง่ายมาก นี่คือตัวอย่างเล็ก ๆ ของไฟล์. 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: