GitLabのWindows VMを使ってWindows Form App ( .NET Framework ) の CI [ビルド・テスト]
はじめに
どうも!生産技術部のエンジニアです。GitLabの公式ブログ 2020.01.21によると、Windows Shared Runners ベータ版が利用可能になったということで実際に試してみました。ベータ版ということでこれから改善されていくことだろうと思いますが、まずはビルド、テストが通ったことに嬉しく思います。CIの結果は以下の通りです。
環境
- GitLab Enterprise Edition : 13.3.0-pre
- Microsoft Visual Studio Community 2019 : 16.7.1
前提条件
Visual Studioの導入及びプロジェクトの作成が実施済みであること。
GitLabのプロジェクト作成
GitLab -> New project -> Create From template -> .NET Core のテンプレートで作成します。
リポジトリに作成したVisual Studioのプロジェクトを追加
- ファイル構成は、GitLabからクローンしたテンプレートに、Visual Studioのプロジェクトをそのまま貼り付けました。
- テストは、Testsディレクトリを作成し、以下にテスト用のプロジェクトを追加しました。
- .gitignoreは、gitignore.ioのvisual studio用テンプレートに置き換えています。
.gitlab-ci.ymlを追加
- 公式ブログの参考例に対してscript部分を追記しました。
- .Net FrameworkやMSBuildなどのツール類は、予めWindowsのVMにインストールされていますので、パスや実行方法を間違えなければインストール無しで実行できます。
- パスに空白が含まれるためダブルクウォートでくくり、PowerShellでEXEを実行するため頭に
&
を付けています。 - テストのスクリプトは、テストで使用するパッケージの追加、ビルド、テストの実行を行っています。
- 注意点:
vstest.console.exe
は、Microsoft公式のパスを試しましたが、Windows VMのCommonExtensionsには、vstest.console.exe
が見つかりません。と出ましたので、Extensionsのものを使うようにパスを変更しています。
.shared_windows_runners:
tags:
- shared-windows
- windows
- windows-1809
stages:
- build
- test
before_script:
- Set-Variable -Name "time" -Value (date -Format "%H:%m")
- echo ${time}
- echo "started by ${GITLAB_USER_NAME}"
build:
extends:
- .shared_windows_runners
stage: build
script:
- '& "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe" UVWCalibrator.csproj'
test:
extends:
- .shared_windows_runners
stage: test
script:
- '& "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe" -t:restore'
- '& "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe" Tests\UVWCalibratorTests\UVWCalibratorTests.csproj'
- '& "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" Tests\UVWCalibratorTests\bin\Debug\UVWCalibratorTests.dll'
注意点:パッケージの復元
Windows Formのプロジェクトは、上記のciが正常に動きません。テストでは、MSTest.TestAdapterとMSTest.TestFrameworkの2つのパッケージを使うため、MSBuild.exe -t:restore
を実施していますが、インストールが必要なパッケージが見つからずに終了します。VisualStudio2017以降のプロジェクトをMSBuildでNuGetパッケージ復元する、に従って設定することで上手く動くようになります。正しく設定が出来ると、ソリューションエクスプローラの参照に追加されえます。
最後に
以上で、セットアップが完了です。お疲れさまでした。WindowsのCI/CDはやりにくい部分が多かったですが、この様なWindows VMは、今後の開発効率に大きく貢献すると思っています。
Author And Source
この問題について(GitLabのWindows VMを使ってWindows Form App ( .NET Framework ) の CI [ビルド・テスト]), 我々は、より多くの情報をここで見つけました https://qiita.com/TomoyukiSugiyama/items/f8fbddef101d50d9a3a4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .