この記事は、シリーズ記事「「C#のライブラリプロジェクトをGitLabにpushしたら自動でDLLが書き出されてついでにDocFXで作成されたドキュメントがCloud Run上にデプロイされる」っていうやつをやる」の一部です。
はじめに
CI/CD が流行り出して久しいですが、なんだか難しそうなのと、環境の用意が大変そうだったので今まで敬遠していました。
今回、この記事で書いたようなモチベーションで GiLab 上で CI/CD をしてみる機会があったので、その時の手順をまとめてみようと思います。
僕の理解では、CI/CD は 「リポジトリに何か push
したら自動的に他のサーバーが pull
して、自動的に指定の処理を実行してくれる何か賢いやつ」 という認識です。
なので、まずはここでいうところの「何か賢い他のサーバー」を用意しなければいけません。この「何か賢い他のサーバー」を実現するのが、GitLab Runner と呼ばれるソフウェアになります。
以降インストールの手順を説明していきます。
Windows の準備
まずは、実際に処理をする Windows 機を準備する必要があります。
前項で「何か賢い他のサーバー」と書きましたが、実は必ずしもサーバー的な動き方をするマシンでなくても大丈夫です。
GitLab Runner は、何か特別なポートを用いるような通信で GitLab 本体とリアルタイム通信しているわけではなく、実行すべきジョブがあるかどうかをポーリングして確認する仕様のようです。
なので、常にマシンが起動していなくても、立ち上がった時にジョブを確認しに行って、もしあればそれを処理する、というイメージですね。
常時起動のサーバーでなくても、お使いのラップトップも GitLab Runner になれます!
(運用的に使いやすいかは置いておいて)
必要なソフトのインストール
ここでいう必要なソフトは、どんな処理を GitLab Runner にさせるかによって変わって来ます。
例えば C# のコンパイルをするのであれば、以下のようなものが必要になるでしょう。
- MSBuild.exe
- .Net Framework SDK
- NuGet.exe
GitLab Runner を通さなくても、PowerShell
や cmd
から目的の処理が出来るようになっていれば問題ないと思います。
GitLab に Runnerを追加する
今回は .Net Framework のプロジェクトをビルドするので、Windows 機が必須です。
以下の手順で、Windows 機にインストールしていきます。
ダウンロード
ファイルをダウンロードし、適当なフォルダに移動します。
ドキュメントでは、ダウンロードしたファイルを gitlab-runner.exe にリネームして
C:\GitLab-Runner
に置いていますね。
登録
登録とインストールの順番がこれで良いのかわかりませんが、公式サイトの通りに登録から実行します。
登録には、まずGitLabのページに行って、登録に必要な情報を確認する必要があります。ここでいうGitLabは、**gitlab.comでも、オムニバス版のオンプレミスで動いているものでも同様です。**自分の環境に合わせて、適宜読み替えて下さい。
以下の場所に、Runner登録のための情報があります。
プロジェクト > Settings > CI/CD > Runners
登録の際に、このアドレスとトークンを使用します。
次に、管理者権限でPowerShell(orコマンドプロンプト)を起動します。
開いたら、以下のコマンドで登録処理が始まります。
cd C:\GitLab-Runner
./gitlab-runner.exe register
ここから対話型で登録作業が始まるので、先程の情報を入れて下さい。
アドレスとトークン以外は任意のものを入れて下さい。
インストールと実行
管理者権限でPowerShell(orコマンドプロンプト)を起動します。
開いたら、以下のコマンドを実行する事でインストールされます。
cd C:\GitLab-Runner
./gitlab-runner.exe install
./gitlab-runner.exe start
この後、先程の GitLab の登録画面を確認に行くと、登録が反映されています。
とても簡単ですね。
ただ、この先で僕はハマりました…
ハマった事
詳細な CI の解説はここではしませんが、どういう問題が起こったかというと
パスが通っているはずの処理が全く動かない!
絶対パスを指定すれば動くものの、それが難しいものはどうやっても動作させる事が出来ませんでした。
原因
色々試行錯誤したり、色々調べた結果、以下の記事を発見しました。
GitLab Runner を Windows で動かす
http://kuttsun.blogspot.com/2017/12/gitlab-runner-windows.html
しかし、これだと root で実行されてしまうため、実際に GitLab CI として動作させるときにコマンドが実行されなかったりしました。
登録の時に
./gitlab-runner.exe install
としていたので、ビルドインシステムアカウントとしてサービスが実行されてしまっていたのです。
実行しているのは僕自身のユーザーアカウントで、環境変数 Path
の内容は当然システムアカウントとは違います。
これが原因でした…
解決策
参考サイトに従っていきます。
サービスを開く
面倒なので、僕は検索から開きます。
gitlab-runnerのプロパティを選択
ログオンタブから、ローカルアカウントを選択
基本的には現在ログインしているユーザーでログインしたら良いと思います。
サービスを再起動
以上で完了です。
僕はこの誤った手順を踏んだ上で、後から修正する方法で動くようにしたので、正規の方法ではどのようにしたら良いのかはわかりません。
しかし、上記のサイトによると
こちらの記事にあるとおり、ユーザー名を指定すると上手くいかないので、パスワードだけ指定し、現在ログイン中のユーザーでインストールします。
とあるので、考えうる正規のルートで登録しても、結局同じようなステップを踏む必要があるかもしれません。
おわりに
ハマった所もありましたが、思っていたより GitLab Runner 導入の敷居は低く感じました。
Runner を用いて実際にどのように CI を設定するのかは、この辺りに僕も書いていますので、良ければ見てみて下さい。