সি # বা এফ # দিয়ে ট্র্যাভিস-সিআই কীভাবে ব্যবহার করব?


92

ট্র্যাভিস সিআই অবিচ্ছিন্ন ইন্টিগ্রেশন পরিষেবা আনুষ্ঠানিকভাবে অনেকগুলি ভাষা সমর্থন করে তবে সি # বা এফ # নয়।

আমি কি এটি আমার। নেট প্রকল্পগুলির সাথে ব্যবহার করতে পারি?

উত্তর:


16

ট্র্যাভিস সিআই এখন সি # সমর্থন করে । এই পৃষ্ঠা থেকে উদারভাবে উদ্ধৃত:

ওভারভিউ

সি #, এফ #, এবং ভিজ্যুয়াল বেসিক প্রকল্পগুলির জন্য সেটআপটি দেখে মনে হচ্ছে:

language: csharp
solution: solution-name.sln
mono:
  - latest
  - 3.12.0
  - 3.10.0

লিপি

ডিফল্টরূপে ট্র্যাভিস xbuild সলিউশন-name.sln চালাবে। এক্সবিল্ড হ'ল একটি বিল্ড টুল যা মাইক্রোসফ্টের এমএসবিল্ড সরঞ্জামটির বাস্তবায়ন হতে ডিজাইন করা হয়েছে। এটি ওভাররাইড করতে, আপনি স্ক্রিপ্টের বৈশিষ্ট্যটি এটির মতো সেট করতে পারেন:

language: csharp
solution: solution-name.sln
script: ./build.sh

নিউগেট

ডিফল্টরূপে ট্র্যাভিস নুগেট রিস্টোর সলিউশন-নাম.এসএলএন চালাবে, যা আপনার সলিউশন ফাইল থেকে সমস্ত নিউগেট প্যাকেজ পুনরুদ্ধার করে। এটিকে ওভাররাইড করার জন্য, আপনি এইভাবে ইনস্টল বৈশিষ্ট্যটি সেট করতে পারেন:

language: csharp
solution: solution-name.sln
install:
  - sudo dosomething
  - nuget restore solution-name.sln

এই উত্তর। সংক্ষিপ্ত এবং সংক্ষিপ্ত
vidstige

150

এটি করার এখন সরকারী উপায়ে ড্যানিয়েলনিক্সনের উত্তর দেখুন ।

এটা সম্ভব.

1. আপনার প্রকল্পে মনোতে কাজ করা দরকার

আপনার নিজের মনো মেশিনে, টার্মিনালটি ব্যবহার করে cdআপনার সমাধান ডিরেক্টরিতে এবং কমান্ডটি চালাচ্ছেন xbuild। এটি স্বয়ংক্রিয়ভাবে কাজ করতে পারে, বা এটি নাও পারে, কারণ ভিজ্যুয়াল স্টুডিওতে এমন বৈশিষ্ট্য রয়েছে যা মনোতে কিছু টুইট করার দরকার পড়ে need

দেখার জন্য বিষয়গুলি:

  • ফাইলের ত্রুটি অনুপস্থিত, আপনার .csprojলিনাক্সের সাথে ফাইলের নামের সাথে মিল রয়েছে কিনা তা পরীক্ষা করতে পরীক্ষা করে নিন যেখানে উইন্ডোজ না করে case
  • আপনার প্রকল্পের অটো পুনরুদ্ধার করা হলে export EnableNuGetPackageRestore=trueচালনার আগে নুগেটের দরকার requiresxbuild
  • আপনার মনো উদাহরণটি রুট এসএসএল শংসাপত্রগুলি নাও থাকতে পারে, mozroots --import --syncসেগুলি ইনস্টল করতে ব্যবহার করুন।
  • এছাড়াও যদি আপনি ফাইলের ত্রুটিগুলি হারিয়ে দেখতে পান তবে আপনার .csproj- এ রেফারেন্সের nuget.*পরিবর্তে NuGet.*নুগেটের বিভিন্ন সংস্করণে উপস্থিত থাকতে পারে।
  • 2.5 nuget এর লক্ষ্য ফাইলে একটি বাগ .target ফাইলে হোয়াইটস্পেস উপর ভিত্তি করে নেই, কার্যসংক্রান্ত এখানে
  • FSharp 3.0 সমর্থনের জন্য আপনার mono 3.0.X বা তার পরে প্রয়োজন (এবং উত্স থেকে তৈরি করার প্রয়োজন হতে পারে তবে ম্যাক ওএস এক্সে ডিফল্টরূপে ইনস্টল করা হয়েছে)
  • VS2013 থেকে FSharp প্রকল্পের জন্য, আপনি সম্পাদনটি আপনার প্রয়োজন হতে পারে .fsprojযোগ করে অ উইন্ডোজ মেশিনে VS2012 কনফিগারেশন ট্রিগার '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'দেখুন উদাহরণ

মনো 3.1.12, 3.2.4 এবং তারপরে

  • মনো 3.1.2, 3.2.4 এবং পরে পিসিএল সমর্থন রয়েছে তবে পিসিএল অনুপস্থিত ত্রুটি থাকতে পারে। মনোো 3.0.12 এর নীচে নীচে তালিকাভুক্ত ত্রুটিটি দেখুন কারণ এটিতে নিম্নলিখিত ফ্রেমওয়ার্কের উল্লেখগুলি অন্তর্ভুক্ত রয়েছে:
    • v4.0, প্রোফাইল 136। নেট ফ্রেমওয়ার্ক 4, সিলভারলাইট 5, উইন্ডোজ ফোন 8, উইন্ডোজ স্টোর অ্যাপস (উইন্ডোজ 8)
    • v4.0, প্রোফাইল 14। নেট ফ্রেমওয়ার্ক 4, সিলভারলাইট 5
    • v4.0, প্রোফাইল 147। নেট ফ্রেমওয়ার্ক 4.0.3, সিলভারলাইট 5, উইন্ডোজ ফোন 8, উইন্ডোজ স্টোর অ্যাপস (উইন্ডোজ 8)
    • v4.0, প্রোফাইল158। নেট ফ্রেমওয়ার্ক 4.5, সিলভারলাইট 5, উইন্ডোজ ফোন 8, উইন্ডোজ স্টোর অ্যাপস (উইন্ডোজ 8)
    • v4.0, প্রোফাইল 19। নেট ফ্রেমওয়ার্ক 4.0.3, সিলভারলাইট 5
    • v4.0, প্রোফাইল 24। নেট ফ্রেমওয়ার্ক 4.5, সিলভারলাইট 5
    • v4.0, প্রোফাইল 37। নেট ফ্রেমওয়ার্ক 4, সিলভারলাইট 5, উইন্ডোজ স্টোর অ্যাপস (উইন্ডোজ 8)
    • v4.0, প্রোফাইল 42। নেট ফ্রেমওয়ার্ক 4.0.3, সিলভারলাইট 5, উইন্ডোজ স্টোর অ্যাপস (উইন্ডোজ 8)
    • v4.0, প্রোফাইল 47। নেট ফ্রেমওয়ার্ক 4.5, সিলভারলাইট 5, উইন্ডোজ স্টোর অ্যাপস (উইন্ডোজ 8)
    • v4.0, প্রোফাইল 5। নেট ফ্রেমওয়ার্ক 4, উইন্ডোজ স্টোর অ্যাপস (উইন্ডোজ 8)
    • v4.0, প্রোফাইল 6। নেট ফ্রেমওয়ার্ক 4.0.3, উইন্ডোজ স্টোর অ্যাপস (উইন্ডোজ 8)
    • v4.5, প্রোফাইল49। নেট ফ্রেমওয়ার্ক 4.5, উইন্ডোজ ফোন 8
    • v4.5, প্রোফাইল7। নেট ফ্রেমওয়ার্ক 4.5, উইন্ডোজ স্টোর অ্যাপস (উইন্ডোজ 8)
    • v4.5, প্রোফাইল78। নেট ফ্রেমওয়ার্ক 4.5, উইন্ডোজ ফোন 8, উইন্ডোজ স্টোর অ্যাপস (উইন্ডোজ 8)

মনো 3.0.02

  • মনো 3.0.০.১২ এর পোর্টেবল ক্লাস লাইব্রেরিগুলির লক্ষ্য রয়েছে তবে রেফারেন্স অ্যাসেমব্লিগুলি নয়। 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.০.১১ বা তার আগে বর্ণিত ) বা ৩.১.২ এ আপগ্রেড করুন।

Mono 3.0.11 বা তার আগেরটি

  • লক্ষ্য ত্রুটিগুলি অনুপস্থিত, যদি এটি নুগেট না হয় তবে সম্ভবত আপনি পোর্টেবল বর্গ গ্রন্থাগার লক্ষ্য বা অস্তিত্ব নেই এমন অন্য লক্ষ্য ব্যবহার করছেন। যদি আপনার প্রকল্পটি নেট নেট net.০ এর জন্য সংকলন করতে পারে, আপনি নিজের .csproj বা .fsproj পরিবর্তন করতে পারেন, যাতে। নেট এ এটি বহনযোগ্য তৈরি করে এবং মনোতে এটি নেট 4.0 এর জন্য তৈরি করে। মূলত শর্তসাপেক্ষ সম্পত্তি গোষ্ঠীগুলিতে <PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>বা Condition="$(OS) != 'Windows_NT'মনোগুলির জন্য আলাদা জিনিস দ্বারা things আপনার মাইলেজ পরিবর্তিত হতে পারে. কাজের উদাহরণ দেখুন ।

মনো 2.10.X

  • এছাড়াও মোনো ভি 2.10 এর কিছুটি অনুপস্থিত মাইক্রোসফ্ট। বিল্ড ক্লাস যা নুগেটের প্রয়োজন, আপনি v3.0.X dll, যা খুব ছোট, কপিরাইট করতে পারেন .নেট ডিরেক্টরিতে। (আমি এটি এখানে ব্যবহার করেছি )

২. কমান্ড লাইন থেকে ইউনিট পরীক্ষা চালাতে সক্ষম হবেন।

.ci/nunit.shনুনিট পরীক্ষার জন্য আমার নিজস্ব শেল স্ক্রিপ্ট, রেপোর মূলটিতে পরীক্ষা করা। সুতরাং আমি নুগেটের সাথে নুনিট-কনসোল সংস্করণটি ইনস্টল করতে পারি এবং বিভিন্নগুলিও অন্তর্ভুক্ত / বর্জনীয় বিভাগগুলি কনফিগার করে। আপনার মাইলেজ পরিবর্তিত হতে পারে, তবে এই কৌশলটি xunit ইত্যাদির জন্য কাজ করা উচিত বা এক্সবিল্ড বা জাল দিয়ে নিজের জিনিসটি করা উচিত ।

.ci / নুনিট.শ

#!/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. মনোতে ট্র্যাভিস কনফিগার করুন

মনো v3.8.0

সর্বশেষতম মনো পরীক্ষার জন্য ম্যাক হোস্টগুলি ব্যবহার করা সবচেয়ে সহজ ( language:objective-cমোনো v3.1.2 ব্যবহার করে টার্গেট করা এবং পরে কোনও ম্যাকের ডিএমজি থেকে কেবল পিকেজিতে বিতরণ পরিবর্তন করা হয়েছে তাই ইনস্টলটি বেশ সহজ This এই টেমপ্লেটে পোর্টেবল ক্লাস লাইব্রেরি সমর্থন করা উচিত, নেট 4.5.1, এবং এফশার্প 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

মনো v2.10.X এবং v3.0.X উভয়কে লক্ষ্য করতে

মনোর একাধিক সংস্করণের জন্য বিল্ড ম্যাট্রিক্স সেটআপ করতে আমি ম্যাক হোস্টগুলি ব্যবহার করা সহজ। নীচে স্ক্রিপ্ট দেখুন

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

লিনাক্স জন্য

এবং এখন আপনার সি # প্রকল্পে ট্র্যাভি ব্যবহার করা ভাল should


22
এটি সম্ভবত আমি এই সাইটে দেখেছি সেরা উত্তরগুলির মধ্যে একটি।
মাইকেল গ্রাসম্যান

হাই, আমি ট্র্যাভিস সিআই দ্বারা একটি fx4.5 প্রকল্প তৈরি করার চেষ্টা করছি, তবে তা নয় sudo installer -pkg। দয়া করে আমাকে এটি ঠিক করতে সহায়তা করতে পারেন? ধন্যবাদ! দেখুন, travis-ci.org/Aimeast/TestforFrst/builds/13814315
আইমেস্ট

language: objective-cএই টেমপ্লেটের জন্য প্রয়োজনীয়, যাতে এটি ওএস এক্স হোস্ট ব্যবহার করে।
jbtule

সার্ভিসবাস, কুই এবং ব্রোকারডমেজেজের জন্য আমি CS0246 ত্রুটিগুলি ("টাইপ বা নেমস্পেসের নামটি পাওয়া যায়নি") পাচ্ছি। কোন ধারনা?
সাইয়ানকোডার

@ মাতি কি উইন্ডোজ আজুর? আমি মনে করি না যে সামঞ্জস্যপূর্ণ মনো, কিন্তু আমি বাজি ধরে বলতে পারি এটা AppVeyor সহজে কাজ করবে stackoverflow.com/a/19164665/637783
jbtule

25

এটি মূল বিষয় - প্রকল্পটি মনোতে কাজ করতে হবে। এটি বেশিরভাগ গ্রন্থাগার-শৈলীর প্রকল্পগুলির জন্য কাজ করে ( AWS SDK .NET একটি ভাল উদাহরণ) যদিও আরও উন্নয়নের প্রচেষ্টা এবং শৃঙ্খলার প্রয়োজন। লিনাক্স বিল্ডিং পরিবেশ যদি আপনি উইন্ডোজ প্ল্যাটফর্মের জন্য যেমন ডাব্লুপিএফ অ্যাপ্লিকেশন, অ্যাজুরে ক্লাউড পরিষেবা, উইন্ডোজ ফোন / স্টোর অ্যাপ্লিকেশন বা এএসপি.নেট ওয়েব এপিআইয়ের জন্য একটি প্রকল্প বিকাশ করে তবে কাজ করবে না।

অ্যাপভিয়ার সিআই উইন্ডোজ প্ল্যাটফর্মের জন্য একটি হোস্টেড ক্রমাগত সংহতকরণ পরিষেবা এবং এটি ওপেন সোর্স প্রকল্পগুলির জন্য বিনামূল্যে। এটি উইন্ডোজের জন্য ট্র্যাভিস সিআইয়ের মতো!

আপনি ভিএস.এনইটি সমাধান, কাস্টম এমএসবিল্ড প্রকল্প, পিএসকে বা ব্যাচ ফাইলের কোনও পাওয়ারশেল স্ক্রিপ্টের জন্য বিল্ড প্রক্রিয়া সেটআপ করতে পারেন। এছাড়াও অ্যাপভিয়ারের অন্তর্নির্মিত নিদর্শনগুলি পরিচালনা এবং স্থাপনার কাঠামো রয়েছে।


4
@jbtule যদিও এটির প্রশ্নের জবাব দেয় এটির সরাসরি উত্তর না, যেহেতু এই প্রশ্নের কিছু দর্শক (উদাহরণস্বরূপ) আমি মনো এবং এমএস। নেট প্ল্যাটফর্মে .NET উভয় বিল্ড সার্ভারে আগ্রহী হতে পারি।
স্টেনহুলথিন

4
এই পোস্টে ইবি সংযোজন, ওয়ার্কারার সম্প্রতি নেট। নেট সমর্থনও চালু করেছে: blog.wercker.com/2013/10/25/…
pjvds

আমি 'সাইন আপ' লিঙ্কটি টিপলে অ্যাপভায়ার সিআই আমাকে একটি 503 ত্রুটি দিচ্ছে। একটি দুর্দান্ত প্রথম ছাপ নয় ...
ড্যান এস্পারজা

4
AppVeyor এর জন্য +1, আমি সম্প্রতি একটি নেট নেট অ্যাপ্লিকেশনটির জন্য দুটি বিল্ড সংজ্ঞা সেটআপ করেছি এবং এটি সেটআপের জন্য খুব সোজা-এগিয়ে রয়েছে এবং এতে প্রচুর নমনীয়তা রয়েছে। সমর্থনটিও খুব প্রতিক্রিয়াশীল, আমি একটি বাগ রিপোর্ট করেছি এবং এটি ঠিক হয়ে গেছে এবং 24 ঘণ্টারও কম সময়ের মধ্যে উত্পাদনে ঠেলা গেছে।
জে সি

8

ইতিমধ্যে উল্লিখিত হিসাবে, ট্র্যাভিস সিআই এর সি # এর বিটা সমর্থন রয়েছে । আমি সরাসরি ব্যবহার করার জন্য এগিয়ে আছি। এছাড়াও নুনিট খুব সহজেই সংহত করা যায়। এখানে একটি ট্রাভিস.আইএমএল ফাইলের একটি ছোট উদাহরণ রয়েছে যা নুনিট পরীক্ষা চালায় এবং কমপক্ষে একটি ইউনিট পরীক্ষা ব্যর্থ হলে বিল্ডটিকে ব্যর্থ হিসাবে চিহ্নিত করে:

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

ধন্যবাদ, এই কনফিগারেশনটি ব্যবহার করে আমি প্রথমবার ট্র্যাভিসে এটি চালাতে সক্ষম হয়েছি (আরও বিবরণ সহ জিএইচ ইস্যু github.com/o2platform/FluentSharp/issues/… )
ক্রুজ

এটি আমাকে অনেক ধন্যবাদ সাহায্য করেছে! আমি যুক্ত করেছি কেবলমাত্র sudo: requiredশেষে। একটি যাদুমন্ত্র মত কাজ করে.
w0ns88

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.