3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GitLabで.Net FrameowrkのソフトのCI環境を整える

Posted at

はじめに

業務上の都合により、Windows Formアプリに関するCI環境を整えることになり、
色々検索していった所GitLabのCI/CDパイプラインである程度どうにかできそうな手がかりを得た。

ただ、色々とかなり複雑に感じたため、忘備録として資料を残しておく

環境

Windows10(Home Editionでも動作可能なはず。)
RaspberryPi(GitLab動作用)

大まかな手順

  1. GitLabのセットアップ
  • RaspberryPi上にGitLabをインストールする
  • リポジトリの準備
  1. Windows側のセットアップ
  • Windowsでgitlab-runnerをダウンロードし、インストールする
  • NetCoreバージョンのPowershell(pwsh.exe)をインストールする
  • 何らかの方法で(手段は問わない)pwsh.exeへのパスを通す
  • .NetFrameworkのツールのインストールを行う
    • ビルドツール
    • テストツール
  1. Windows上のRunnerをGitLabへ登録する
  2. Jobの設定

GitLabのセットアップ

これは公式ホームーページのReapberryPi用のインストール手順ページに従うだけだから割愛する。
セットアップが完了したら、CI環境を整えたいレポジトリを作成しておく。

Windows側のセットアップ

Runnerのダウンロードとサービスへの登録

下記を参照すれば、とりあえずgitlab-runnerは登録できる。
ただし、自分の場合は何をやっても自分のアカウントでサービスとしてrunnerを立ち上げることができなかった。

ちなみにこの時点で他の設定を整えて動かそうとしたらこのようなエラーが出る。
.NetCore版のPowershell(pwsh)のインストールと環境変数の調整が必要となるようだ。
(※ログが長すぎたので改行しています。)

ERROR: Job failed (system failure): 
prepare environment: 
failed to start process: 
exec: "pwsh": 
executable file not found in %PATH%. 
Check https://docs.gitlab.com/runner/shells/index.html#shell-profile-loading for more information

.NetCore版のPowershellのインストール

最新のPowershellでは.Net Core 6.0が必要になる。.Net Core 6.0も一緒にダウンロードしよう。
Powershellのインストール方法にはいくつか方法があるが、多分msiを使用するのが無難だと思う。

PowerShellのインストールサイト

.Net 6.0(Powershellに必要なライブラリ)のダウンロードサイト

自分は「.NET グローバル ツールとしてインストール」からインストールしてしまったため、後でpwsh.exeへのパスを調べてシステムの環境変数に追加する必要が出てしまった。

その他必要なツールのインストール

Visual Studio 2019の時点では、.Net FrameworkのアプリのテストにはMSTestを使用するようだ。
その場合は下記記事の「コンソールでUnitTestを実施」以降を参考にすれば良い。

あとは使用した環境に一致したBuild ToolsをAgentsをダウンロードしたサイトからダウンロードしよう。
この記事投稿時点(Visual Studio 2022)の時点では、各ツールへのパスは下記の通り。
(2022以外を使う場合は下記の2022の数字を変更すればよさそうだ。)

  • ビルドツール
    • C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\MSBuild.exe
  • テストツール
    • C:\Program Files (x86)\Microsoft Visual Studio\2022\TestAgent\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe

ビルドはともかく、テストツールはどのように動くのかわかってないから試しに動かしてみる。
下記のようにコマンドを送って試してみた。

$mstest = "C:\Program Files (x86)\Microsoft Visual Studio\2022\TestAgent\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"
$testtarget = ".\(テストプロジェクト)\bin\Release\MainTest.dll"
cd (ソリューションのディレクトリ)
& "$mstest"  "$testtarget"

出力結果はこんな感じ。

Microsoft (R) Test Execution Command Line Tool Version 17.0.0
Copyright (c) Microsoft Corporation.  All rights reserved.

テスト実行を開始しています。お待ちください...
合計 1 個のテスト ファイルが指定されたパターンと一致しました。
  成功 TestMethod1 [5 ms]

テストの実行に成功しました。
テストの合計数: 1
     成功: 1
合計時間: 1.4221 秒

RunnerのGitLabへの登録

これは上の方のリンク「GitLabにWindowsのrunnerを追加する」を参考にすれば問題ないので割愛します。

Jobの設定

まずは動作確認をしたかったので、サンプルに「windows」のタグだけ追加してみた。
(runnnerで指定しているタグを過不足なく入れておく必要があります)

.gitlab-ci.yml
stages:          # List of stages for jobs, and their order of execution
  - build
  - test

build-job:       # This job runs in the build stage, which runs first.
  stage: build
  tags:
    - windows
  script:
    - echo "Compiling the code..."
    - echo "Compile complete."

unit-test-job:   # This job runs in the test stage.
  stage: test    # It only starts when the job in the build stage completes successfully.
  tags:
    - windows
  script:
    - echo "Running unit tests... This will take about 60 seconds."
    - sleep 60
    - echo "Code coverage is 90%"

このファイルが含まれるコードを実際にPushしたら次のような動作になった。

サンプルジョブ.png

とりあえず、適当なスクリプトをWindows上で動かせるようになったので、
今後はこの環境を使って実際に色々動かして試してみることにする。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?