web-dev-qa-db-ja.com

C#でGitLabCIを使用する

私はC#アプリケーションに取り組んできましたが、GitLab CIで試してみたいと思いました。私が見ることができるのはRubyであり、それを使用してC#アプリケーションを構築する方法に関する情報を見つけることができません。

テスト設定を実行すると、コミットを行いますが、ビルドがありません。

Enter image description here

単純なビルドを作成するにはどうすればよいですか?どのコマンドを使用できますか?失敗したビルド(ビルド)を取得してもかまいません。

41

.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
39
Jeff

C#アプリケーションをビルドするには、GitLab CIのプロジェクト用にWindowsランナー(シェルエグゼキューター付き)を構成する必要があります。

.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に追加
  • C:\ nugetの最新のnuget.exe(または他の場所。gitlab-ci.ymlファイルに正しいパスがあることを確認してください)
20
Grisha

他の答えは良いです。しかし、さらにランナーをインストールする方法を説明したいと思います。独自のローカルシステム(Windows)を使用しているため、シェルを実行することにしました。ただし、必要に応じて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

その後、次のようなYAMLファイルを使用できます。

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

ビルドランナーをWindowsマシンにインストールすると非常に役立ちます。@ prasanth-louisは、その方法の優れた例です。

.gitlab-ci.ymlファイルを使用すると、 Cake Build を使用してさらに単純化できます。

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

そしてあなたの build.cakeファイルは次のようになります( リポジトリの例 に基づく):

#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);
8
SolThoth

ここで、ユニットテストフレームワークとしてNUnitを使用し、基本イメージとしてmonoを使用するc#アプリケーション用の作業用.gitlab-ci.ymlファイル。

あまり派手ではありませんが機能しています:

image: mono:latest

stages:
    - build
    - test

variables:
    solution: "Project.sln"
    test: "Project.Test"

before_script:
    - nuget restore

build:
    stage: build
    script:
        - msbuild /p:Configuration=Release $solution

test:
    stage: test
    script:
        - msbuild /p:Configuration=Release $solution
        - mono ./packages/NUnit.ConsoleRunner.3.10.0/tools/nunit3-console.exe ./$test/bin/Release/$test.dll
2
user1747547