WindowsでビルドやテストをするようなCIがGitLab CIで簡単に構成できるので紹介します。
簡単にわかるGitLab CIの仕組みで書いたように
GitLab RunnerはGitLab本体とは分離して別マシンや別コンテナに配置して、GitLabとGitLab Runner間はAPIで通信する仕組みになっています。
ということなので、ビルド環境のある物理WindowsマシンにGitLab Runnerを設置することでWindows版CI用Runnerを構築できます。
Install
GitLab RunnerはGolangで書かれておりシングルバイナリとして配布されており、インストールはバイナリを配置するだけokです。
- x86: https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-windows-386.exe
- amd64: https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-windows-amd64.exe
使用しているWindowsに応じてダウンロードします。
配置する場所に制限はないので好きな場所に配置します。
この記事ではC:\GitLab-Runnerにamd64のバイナリを配置したとして進めていきます。
Setup
まず登録する際に入力する情報をGitLabで確認します。
「CIをするプロジェクトページ > Settings > Runners」を開くと"URL"と"token"が書いてあります。
管理者権限でコマンドプロンプトを開き、先ほどバイナリを配置したフォルダに移動して登録していきます。
> cd C:\Gitlab-Runner
> gitlab-ci-multi-runner-windows-amd64.exe register
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci):
{{確認したURL}}
Please enter the gitlab-ci token for this runner:
{{確認したtoken}}
Please enter the gitlab-ci description for this runner:
[<PC名>]: {{Runnerの説明}}
Please enter the gitlab-ci tags for this runner (comma separated):
{{Tag(任意)}}
Registering runner... succeeded runner=XXXXXX
Please enter the executor: virtualbox, docker+machine, docker-ssh+machine, docker, docker-ssh, parallels, shell, ssh:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
executerにはshellを選択してコマンドプロンプトでビルドするように指定しました。
次にユーザー名とパスワードを設定します。
この方のブログ記事にも書いてありますが、現状ユーザー名を指定するとうまく行きません。
パスワードの指定だけすると現在ログインしているユーザを自動で認識して設定するようなのでパスワードだけ指定します。
> gitlab-ci-multi-runner-windows-amd64.exe install --password ENTER-YOUR-PASSWORD
> gitlab-ci-multi-runner-windows-amd64.exe start
パスワードが正しく設定されていればstartできます。
startに成功していればGitLabのSettings>Runnersに登録したRunnerが表示されているはずです。
Note
Windowsにgitがインストールされていないとビルド時にgitがないのが原因で失敗してしまいます。
gitがインストールされていない場合は以下の記事を参考にgitをインストールすると良いです。
コマンドラインからGitを使う(for Windows) - Qiita
gitをインストールしたあとはRunnerをrestartさせる必要があります。
gitlab-ci-multi-runner-windows-amd64.exe restart
あとは.gitlab-ci.ymlを書いてpushすればCIが走ります。
実際に動かした様子です。
.gitlab-ci.ymlのtagsを使えば複数環境でCIさせることが可能です、マルチプラットフォームでのCIが必要な場面に便利。
scriptでバッチファイルを起動するようにすれば手の込んだビルドもできそうなので今後試していく予定です。
Show comments