Layanan integrasi berkelanjutan Travis CI secara resmi mendukung banyak bahasa , tetapi tidak mendukung C # atau F #.
Bisakah saya menggunakannya dengan proyek .net saya?
Travis CI sekarang mendukung C # . Mengutip dengan bebas dari halaman itu:
Gambaran
Pengaturan untuk C #, F #, dan proyek Visual Basic terlihat seperti ini:
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
Naskah
Secara default, Travis akan menjalankan xbuild solution-name.sln. Xbuild adalah alat pembangunan yang dirancang untuk menjadi implementasi alat MSBuild Microsoft. Untuk menimpanya, Anda dapat mengatur atribut script seperti ini:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
Secara default, Travis akan menjalankan nuget restore solution-name.sln, yang mengembalikan semua paket NuGet dari file solusi Anda. Untuk menimpanya, Anda dapat mengatur atribut install seperti ini:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
Lihat jawaban danielnixon untuk cara resmi melakukan ini sekarang.
Itu mungkin.
1. Proyek Anda perlu bekerja di Mono
Di mesin mono Anda sendiri, menggunakan terminal,
cd
ke direktori solusi Anda dan menjalankan perintahxbuild
. Ini dapat bekerja secara otomatis, atau mungkin tidak, karena ada fitur yang Anda gunakan di studio visual yang memerlukan beberapa penyesuaian dalam mono.Hal-hal yang harus diperhatikan:
.csproj
linux Anda memiliki jalur peka huruf besar kecil di mana windows tidak.export EnableNuGetPackageRestore=true
sebelum menjalankanxbuild
jika proyek Anda otomatis pulih.mozroots --import --sync
untuk menginstalnya.nuget.*
bukannyaNuGet.*
referensi di .csproj Anda telah diketahui ada di berbagai versi nuget..fsproj
untuk memicu konfigurasi VS2012 pada mesin non windows dengan menambahkan'$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
lihat contoh .Mono 3.1.12, 3.2.4 dan yang lebih baru
Mono 3.0.12
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.
Ketentuan Penggunaan Platform (disebutkan di bawah Mono 3.0.11 atau sebelumnya ) atau tingkatkan ke 3.1.2.Mono 3.0.11 atau lebih lama
<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
atauCondition="$(OS) != 'Windows_NT'
untuk mono. Jarak tempuh Anda mungkin berbeda. Lihat contoh kerja .Mono 2.10.X
2. Mampu menjalankan tes unit dari baris perintah.
.ci/nunit.sh
adalah skrip shell saya sendiri untuk pengujian nunit, diperiksa ke root repo. Jadi saya dapat menginstal versi konsol nunit yang saya inginkan dengan nuget, dan mengkonfigurasi berbagai kategori termasuk / tidak termasuk juga. Jarak tempuh Anda mungkin berbeda, tetapi teknik ini harus bekerja untuk xunit dll. Atau lakukan hal Anda sendiri dengan xbuild atau palsu ..ci / nunit.sh
#!/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 $?
3. Konfigurasi Travis untuk mono
Mono v3.8.0
Untuk menguji mono terbaru, paling mudah menggunakan host Mac (target dengan menggunakan
language:objective-c
Mono v3.1.2 dan yang lebih baru mengubah distribusi di Mac dari DMG menjadi PKG saja sehingga pemasangannya cukup sederhana. Template ini harus mendukung Perpustakaan Kelas Portabel, .NET 4.5.1, dan 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
Untuk Menargetkan Mono v2.10.X dan v3.0.X
Saya mudah menggunakan host Mac untuk menyiapkan matriks build untuk beberapa versi Mono. Lihat skrip di bawah ini
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
Untuk linux
Dan sekarang Anda sebaiknya menggunakan travis pada proyek c # Anda.
sumber
sudo installer -pkg
. Bisakah tolong bantu saya untuk memperbaikinya? Terima kasih! lihat, travis-ci.org/Aimeast/TestForFirst/builds/13814315language: objective-c
diperlukan untuk template tersebut, sehingga template tersebut menggunakan host OS X.Itulah poin kuncinya - proyek harus bekerja di Mono. Ini sebagian besar berfungsi untuk proyek bergaya perpustakaan ( AWS SDK .NET adalah contoh yang baik) meskipun membutuhkan lebih banyak upaya pengembangan dan disiplin. Lingkungan pembuatan Linux tidak akan berfungsi jika Anda mengembangkan proyek untuk platform Windows seperti aplikasi WPF, layanan cloud Azure, aplikasi Windows Phone / Store, atau bahkan ASP.NET Web API.
AppVeyor CI adalah layanan integrasi berkelanjutan yang dihosting untuk platform Windows dan gratis untuk proyek sumber terbuka. Ini seperti Travis CI untuk Windows!
Anda dapat mengatur proses pembuatan untuk solusi VS.NET, proyek MSBuild kustom, PSake atau skrip PowerShell dari file batch. Selain itu, AppVeyor memiliki kerangka kerja manajemen dan penerapan artefak bawaan.
sumber
Seperti yang telah disebutkan, Travis CI memiliki dukungan beta untuk C # . Saya langsung menggunakannya. Nunit juga dapat diintegrasikan dengan sangat mudah. Berikut adalah contoh kecil dari file .travis.yml yang menjalankan tes nunit dan menandai build sebagai gagal jika setidaknya satu unit test gagal:
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
sumber
sudo: required
di bagian akhir. Bekerja seperti pesona.Jika Anda ingin menggunakan Travis CI dengan F #, di GitHub, dengan FAKE dan Packet, maka F # ProjectScaffold direkomendasikan:
http://fsprojects.github.io/ProjectScaffold
sumber