16
20

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 5 years have passed since last update.

Windows10下のVisualStuioプロジェクトをgitlab-ciでビルドする

Last updated at Posted at 2019-07-26

はじめに

本記事では、Windows10環境下にてVisualStudioのプロジェクトをgitlab-ciでビルドする手順をまとめる。
gitlab-ciに関しては、Docker環境下での情報が大半であり、かつ、これまでのWindows環境下の情報にないつまづきポイントがあったため、本記事を書くに至る。

筆者の環境

  • Windows10 professional
  • VisualStudio2017

gitlab-ci導入手順

では、順を追ってgitlab-ciの導入手順を見ていこう

インストール

gitlabの公式リファレンスより、バイナリファイル(.exe)をダウンロードする。
ダウンロードしたバイナリをPATHの通っているファイルにコピーする。
名前が長いので、gitlab-runner.exeとリネームする。これ以降は、この名前にバイナリファイルをリネームしたとして進める。
コマンドプロンプトを管理者で実行し、以下のコマンドをたたく。

$ gitlab-runner install

リポジトリ登録

gitlabのリポジトリとgitlab-runnerを紐づける。
CIを導入したいgitlabプロジェクトのSettingsCD/CI → Runnersexpandする。
上記の操作をすれば、Set up a specific Runner manuallyと出る。そこに記されているURLとトークンを以降の手順で使用する。
コマンドプロンプトに戻り、以下のコマンドをたたく。

$ gitlab-runner register

すると対話モードになるので、以下のように順に入力していく。

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
# URLを記述し、Enter

Please enter the gitlab-ci token for this runner:
# Tokenを記述し、Enter

Please enter the gitlab-ci description for this runner:
# runnerに任意の名前をつける。

Please enter the gitlab-ci tags for this runner (comma separated):
# runnerに任意のtagをつける。

Please enter the executor: shell, docker+machine, virtualbox, docker-ssh+machine, kubernetes, docker, docker-ssh, parallels, ssh: 
# 実行する環境を指定する。今回はwindows上でビルドするので、shellと入力する。

Config.tomlの編集(つまづきポイント)

gitlab-runnerの設定は、C:\Windows\System32\config.tomlに記述される。
現在の状態ではおそらくこのような中身であろう。

C\Windows\System32\config.toml
concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "windows10"
  url = "gitlabのURL"
  token = "トークン"
  executor = "shell"
  shell = "powershell"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

このままでは、CIのジョブはpowershell上で動くため、コマンドプロンプトに変更するには、shell = "cmd"に書き換える。
また、デフォルトの設定では、git cloneするディレクトリはC:/Windows/System32/builds下となる。このままではmsbuildコマンドは失敗してしまう。
そのため、git cloneするディレクトリを変更してやる必要がある。
config.tomlbuilds_dir = "任意のgitlab-ciがgit cloneするディレクトリ"と追記する。なお、ディレクトリパスはバックスラッシュではなく、フォワードスラッシュで記述する。
上記の変更を加えるとconfig.tomlは以下のようになる。

C\Windows\System32\config.toml
concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "windows10"
  url = "gitlabのURL"
  token = "トークン"
  executor = "shell"
  shell = "cmd"
  builds_dir = "任意のgitlab-ciがgit cloneするディレクトリ"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

gitlab-runner起動

コマンドプロンプトで以下のコマンドをたたく。

$ gitlab-runner start

gitlab側で以下の画面のように、緑色の丸になっていれば、起動完了だ。
gitlab-runner.png
鉛筆マークから、gitlab-runnerの設定画面に入れる。
git tagがついていないコミットでもジョブを走らせたい場合はRun untagged jobsにチェックを入れておこう。(下図)
gitlab-ci_settings.png

ジョブの記述(.gitlab-ci.yml)

さて、いよいよCIが実行するジョブを記述し、VisualStudioのプロジェクトをgit push時にビルドするようにする。
gitlab-ciにジョブを与えるには、リポジトリのルート下に.gitlab-ci.ymlを加え、そこにスクリプトを記述する。
より詳しい説明は公式リファレンスを参照していただきたい。
今回は、.gitlab-ci.ymlに以下のように記述する。

.gitlab-ci.yml
before_script:
  - chcp 65001
  - 'call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat"'
stages:
  - build
debug_duild:
  stage: build
  script:
    - msbuild
  artifacts:
    paths:
      - プロジェクトの名前\bin\Debug

順に説明していこう。
コマンドプロンプトの文字コードはSHIFT-JISであるため、文字化けしてしまう。そのため、chcp 65001でutf-8な環境にする。
VsDevCmd.batはVisualStudioに付属する、コマンドラインでビルドするためのファイル群のPATHをよろしく設定してくれるバッチファイルだ。
後は、msbuildコマンドを実行し、ビルド成果物をartifactsに指定すればよい。
artifactsに指定したビルド成果物は、gitlab上からダウンロードすることができる。

参考

(公式)config.tomlについて

おわりに

本記事では、ビルドについて触れたが、同様にMStestによるユニットテストを動かすこともできる。

16
20
1

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
16
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?