2015-11-04 7 views
29

Я работал над приложением C# и хотел попробовать GitLab CI. Все, что я вижу, это Ruby и не может найти никакой информации о том, как создать приложение C#, используя его.Использование GitLabCI с C#

Когда я запускаю тестовые настройки, я делаю фиксацию, но у меня нет моей сборки.

enter image description here

Как я должен сделать простую сборку? Какую команду я мог бы использовать для этого? Я не против, если я получу неудачную сборку (но сборку).

+3

У вас есть. gitlab-ci.yml файл, который вы можете поделиться? – danielcooperxyz

ответ

19

Для создания приложения C# у вас должен быть Windows Runner (с исполнителем оболочки), настроенный для проекта в Gitlab CI.

Ваш файл .gitlab-ci.yml должен выглядеть примерно так:

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, нужны следующие инструменты:

  • бегун установленный
  • мерзавца, добавляется в PATH
  • последний nuget.exe в c: \ nuget (или где-то еще, просто убедитесь, что вы получили путь в файле .gitlab-ci.yml)
+0

Простите, что вы имеете в виду с git, добавленным в PATH? –

+0

Понял, это для Windows, чтобы узнать, где находится git, поэтому git можно выполнить как оболочку. –

+2

Ваш путь к msbuild не работает, если в нем есть пробел. – Jeremy

30

Я просто хотел поделиться своим .gitlab-ci.yml в комплекте с модульным тестированием. Вам нужно будет настроить свой nuget и, возможно, другие пути. Это для одного проекта в одноименном решении.

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, чтобы настроить вашу машину как бегуна. Следуйте руководству Prasanth Louis ниже, и особенно ссылку https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/windows.md (поскольку появились обновления). Только тогда вы можете использовать этот .gitlab-ci.yml. – corentinaltepe

+0

@corentin Благодарим вас за включение этого. Да, и вам понадобится визуальная студия, установленная на вашей машине сборки, так как я считаю, что MSTest является ее частью. – Jeff

+1

Пожалуйста, представьте свой пример проекту [GitLab CI Yml] (https://gitlab.com/gitlab-org/gitlab-ci-yml/issues/12). – bbodenmiller

5

Другие ответы являются хорошими. Но я хотел бы объяснить, как установить бегун в дополнение. Я использую свою локальную систему (Windows), поэтому я решил запустить оболочку. Но вы можете использовать изображение докеров, если хотите.

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

Пожалуйста, представьте свой пример проекту [GitLab CI Yml] (https://gitlab.com/gitlab-org/gitlab-ci-yml/issues/12). – bbodenmiller

4

Coming в конце этого я знаю, но я хотел бы остановиться на этом еще больше ,

Установка встроенного бегуна на машине для окон помогает много, @ prasanth-louis имеет отличный пример того, как это сделать.

Что касается .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

Торт - это, безусловно, путь, особенно если вы переходите с сервера TeamCity, Jenkins и т. Д., Который обрабатывал для вас много всего этого. –

Смежные вопросы