我一直工作在C#應用程序,並想嘗試的GitLab CI。我只能看到Ruby,並且找不到有關如何使用它構建C#應用程序的任何信息。使用GitLabCI用C#
當我運行測試設置,我做出承諾,但我不有我的身材。
我應該怎樣做一個簡單的構建?我可以使用哪個命令?我不介意如果我得到一個失敗的構建(但構建)。
我一直工作在C#應用程序,並想嘗試的GitLab CI。我只能看到Ruby,並且找不到有關如何使用它構建C#應用程序的任何信息。使用GitLabCI用C#
當我運行測試設置,我做出承諾,但我不有我的身材。
我應該怎樣做一個簡單的構建?我可以使用哪個命令?我不介意如果我得到一個失敗的構建(但構建)。
爲了建立你應該有一個Windows亞軍(與外殼執行人)配置在Gitlab CI項目中的C#應用程序。
你.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機器上,你需要以下工具:
對不起,你說'git,加入PATH'意味着什麼? –
明白了,這是爲了讓Windows知道git的位置,所以git可以作爲shell來執行。 –
如果msbuild中有空格,則無法使用msbuild。 – Jeremy
我只是想分享我的.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
對於那些閱讀此評論的人,您首先要將您的機器配置爲跑步者。請按照下面的Prasanth Louis的指導,特別是鏈接https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/windows.md(因爲有更新)。只有這樣你才能使用這個.gitlab-ci.yml。 – corentinaltepe
@corentin感謝您的包括。是的,您需要在您的構建機器上安裝Visual Studio,因爲我相信MSTest是其中的一部分。 – Jeff
請考慮將您的示例提交給[GitLab CI Yml項目](https://gitlab.com/gitlab-org/gitlab-ci-yml/issues/12)。 – bbodenmiller
其他答案都很好。但我想解釋一下如何安裝跑步者。我使用自己的本地系統(Windows),所以我選擇運行shell。但是如果你願意的話,你可以使用一個docker鏡像。
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"'
請考慮將您的示例提交給[GitLab CI Yml項目](https://gitlab.com/gitlab-org/gitlab-ci-yml/issues/12)。 – bbodenmiller
晚歸這我知道,但我想在這更加擴大。
安裝在Windows機器上構建亞軍有很大幫助,@ prasanth路易對如何做一個很好的例子。
至於.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);
Cake是絕對要走的路,特別是如果你正在從TeamCity,Jenkins等過渡到爲你處理大量這些東西的服務器。 –
你有。 gitlab-ci.yml文件,你可以分享? – danielcooperxyz