2015-11-04 7 views
29

के साथ गिटलैबसीआई का उपयोग करके मैं सी # एप्लिकेशन पर काम कर रहा हूं, और गिटलैब सीआई को आजमाने की कोशिश करता हूं। मैं देख सकता हूं कि रूबी है और इसका उपयोग करके सी # एप्लिकेशन बनाने के बारे में कोई जानकारी नहीं मिल रही है।सी #

जब मैं परीक्षण सेटिंग्स चलाता हूं, तो मैं प्रतिबद्ध करता हूं लेकिन मेरे पास मेरा निर्माण नहीं होता है।

enter image description here

मैं कैसे एक सरल निर्माण करना चाहिए? इसके लिए मैं किस कमांड का उपयोग कर सकता हूं? अगर मुझे असफल बिल्ड (लेकिन एक बिल्ड) मिलता है तो मुझे कोई फर्क नहीं पड़ता।

+3

आप एक है। gitlab-ci.yml फ़ाइल जिसे आप साझा कर सकते हैं? – danielcooperxyz

उत्तर

19

सी # एप्लिकेशन बनाने के लिए आपके पास एक विंडोज रनर (खोल निष्पादक के साथ) होना चाहिए जिसमें गिटलाब सीआई में एक प्रोजेक्ट के लिए कॉन्फ़िगर किया गया हो।

आपका .gitlab-ci.yml फ़ाइल है कि कुछ ऐसा दिखाई देगा:,

  • धावक स्थापित
  • Git पथ
  • को जोड़ा गया:

    stages: 
        - build 
    
    job: 
        stage: build 
        script: 
        - echo "Restoring NuGet Packages..." 
        - '"c:\nuget\nuget.exe" restore "MySolution.sln"' 
        - '' 
        - echo "Release build..." 
        - C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "MySolution.sln" 
        tags: 
        except: 
        - tags 
    

    Windows मशीन पर आप निम्नलिखित उपकरणों की आवश्यकता

  • नवीनतम nuget.exe c: \ nuget (या कहीं और, बस सुनिश्चित करें कि आपको पथ सही है .gitlab-ci.yml फ़ाइल में)
+0

मुझे खेद है, 'गिट, पाथ में जोड़ा गया' के साथ आपका क्या मतलब है? –

+0

समझ गया, यह विंडोज के लिए यह जानना है कि गिट कहाँ स्थित है, इसलिए गिट को खोल के रूप में निष्पादित किया जा सकता है। –

+2

एमएसबिल्ड का आपका मार्ग काम नहीं करता है यदि इसमें कोई जगह है। – Jeremy

30

मैं सिर्फ यूनिट परीक्षण के साथ अपना .gitlab-ci.yml पूरा करना चाहता था। आपको अपने नजेट और संभवतः अन्य पथ समायोजित करना होगा। यह एक ही नाम के समाधान में एक ही परियोजना के लिए है।

variables: 
    PROJECT_NAME: "ProjectNameGoesHere" 
before_script: 
    - echo "starting build for %PROJECT_NAME%" 
    - echo "Restoring NuGet Packages..." 
    - d:\tools\nuget restore "%PROJECT_NAME%.sln" 
stages: 
    - build 
    - test 
build: 
    stage: build 
    script: 
    - echo "Release build..." 
    - '"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe" /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "%PROJECT_NAME%.sln"' 
    artifacts: 
    untracked: true 
test: 
    stage: test 
    script: 
    - echo "starting tests" 
    - cd %PROJECT_NAME%Tests/bin/Release 
    - '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe" /testcontainer:%PROJECT_NAME%Tests.dll' 
    dependencies: 
    - build 
+2

इस टिप्पणी को पढ़ने वाले लोगों के लिए, आपके पास धावक होने के लिए अपनी मशीन को कॉन्फ़िगर करने के लिए FIRST है। नीचे प्रसंत लुई की मार्गदर्शिका का पालन करें, और विशेष रूप से लिंक https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/windows.md (क्योंकि अपडेट थे) का पालन करें। केवल तभी आप इसका उपयोग कर सकते हैं। Gitlab-ci.yml। – corentinaltepe

+0

@corentin इसे शामिल करने के लिए धन्यवाद। हां और आपको अपनी बिल्ड मशीन पर स्थापित विजुअल स्टूडियो की आवश्यकता होगी क्योंकि मेरा मानना ​​है कि एमएसटीएस्ट इसका हिस्सा है। – Jeff

+1

कृपया अपना उदाहरण [गिटलैब सीआई वाईएमएल प्रोजेक्ट] (https://gitlab.com/gitlab-org/gitlab-ci-yml/issues/12) पर सबमिट करने पर विचार करें। – bbodenmiller

5

अन्य उत्तरों अच्छे हैं। लेकिन मैं समझाना चाहता हूं कि इसके अलावा धावक को कैसे इंस्टॉल किया जाए। मैं अपने स्थानीय सिस्टम (विंडोज) का उपयोग करता हूं, इसलिए मैंने खोल चलाने का फैसला किया। लेकिन यदि आप चाहें तो आप एक डॉकर छवि का उपयोग कर सकते हैं।

cd C:\Multi-Runner 
gitlab-ci-multi-runner register 

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com) 
https://gitlab.com 
Please enter the gitlab-ci token for this runner 
xxx 
Please enter the gitlab-ci description for this runner 
my-runner 
INFO[0034] fcf5c619 Registering runner... succeeded 
Please enter the executor: shell, docker, docker-ssh, ssh? 
shell 
INFO[0037] Runner registered successfully. Feel free to start it, but if it's 
running already the config should be automatically reloaded! 

स्रोत: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/windows.md

बाद में, आप इस तरह की एक YML फ़ाइल एक का उपयोग कर सकते हैं:

stages: 
    - build 
job: 
    stage: build 
    script: '"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe" "something.sln"' 
+0

कृपया अपना उदाहरण [गिटलैब सीआई वाईएमएल प्रोजेक्ट] (https://gitlab.com/gitlab-org/gitlab-ci-yml/issues/12) पर सबमिट करने पर विचार करें। – bbodenmiller

4

इस मुझे पता है कि देर में आ रहा है, लेकिन मैं यह और भी अधिक पर विस्तार करना चाहता था ।

विंडोज मशीन पर बिल्ड रनर स्थापित करना बहुत मदद करता है, @ प्रसंथ-लुइस के पास ऐसा करने का एक अच्छा उदाहरण है।

.gitlab-ci.yml के लिए के रूप में आप Cake Build

stages: 
    - build 
build: 
    stage: build 
    script: 
     - .\build.ps1 -Target Build 
    tags: 
     - windows 

और अपने build.cake फ़ाइल का उपयोग कर इस (example repo के आधार पर) की तरह लग सकता है के द्वारा और भी अधिक इसे सरल कर सकते हैं:

#tool nuget:?package=NUnit.ConsoleRunner&version=3.4.0 

var target = Argument("target", "Default"); 
var configuration = Argument("configuration", "Release"); 

var solution = "./example-project.sln"; 
var buildDir = Directory("./example-project/bin"); 

Task("Default") 
    .IsDependentOn("Unit-Tests") 
    .Does(() => 
{ 
    Information("Running Default task!"); 
}); 

Task("Clean") 
    .Does(() => 
{ 
    CleanDirectory(buildDir); 
}); 

Task("PackageRestore") 
    .IsDependentOn("Clean") 
    .Does(() => 
{ 
    Information("Restoring nuget packages for {0}", solution); 
    NuGetRestore(solution); 
}); 

Task("Build") 
    .IsDependentOn("PackageRestore") 
    .Does(() => 
{ 
    Information("Restoring nuget packages for {0}", solution); 
    MSBuild(solution, settings => settings.SetConfiguration(configuration)); 
}); 

Task("Unit-Tests") 
    .IsDependentOn("Build") 
    .Does(() => 
{ 
    NUnit3("./example-project.Tests/**/bin/" + configuration + "/*.Tests.dll"); 
}); 

Task("Publish") 
    .Does(() => 
{ 

}); 

RunTarget(target); 
+0

केक निश्चित रूप से जाने का तरीका है, खासकर अगर आप टीमसिटी, जेनकींस, आदि से संक्रमण कर रहे हैं जो आपके लिए बहुत सारी चीज़ें संभाला है। –