GitLab Runner>エクゼキュータ>VirtualBox
注:Parallelsエクゼキュータの操作法はVirtualBoxエクゼキュータと同じです。なお、キャッシュ機能には対応していません。
VirtualBoxエクゼキュータを使うと、VirtualBox仮想環境でビルド毎にビルド環境を整理しながらアプリ開発に取り組めます。システムにVirtualBoxさえインストールされていれば、どのマシンでも確実に使えるエクゼキュータです。
この時利用する仮想マシンには、接続可能なSSHサーバーがついていることと、bashスクリプトによるシェルが扱えることとが、条件として求められます。
概要
プロジェクトのソースの確認方法:~/builds/<名前空間>/<プロジェクト名>
場所について:
- <名前空間>は、GitLabプロジェクトを収容している場所を示した名前空間。
- <プロジェクト名>は、GitLabに収容されているプロジェクトの名前。
「~/builds」ディレクトリは、config.tomlの [[runners]] セクションに「builds_dir」オプションを追加することで詳細な指定が可能。
新しい仮想マシンを作成する
- VirtualBoxをWindowsで動作させるときには、システム内にVirtualBoxのプログラムフォルダ(例:C:\Program Files\Oracle\VirtualBox)が出来上がっているはずです。環境変数を設ける場合は、そのファイルにパスを設けます。
- VirtualBoxに新たな仮想マシンをインポート、あるいは作成します。
- 新たな仮想マシンにログインします。
- Windows上のVMでは、このページの最後に出てくる『Windows仮想環境チェックリスト』を参考に、適切な設定がなされているかどうかをご確認ください。
- OpenSSHサーバーをインストールします。
- その他開発しているアプリケーションに必要なソフトウェアを導入します。
- jobアーティファクトとアップロードしたいときには、VM内にgitlab-runnerをインストールしてください。
- 仮想マシンからログアウトして、シャットダウンします。
開発に使用する仮想マシンの構築・管理に、Vagrant等の自動化ツールを用いると、より確実な環境を作り上げられるでしょう。
新しくランナーを構築する
- ホストとして稼働させているVirtualBoxに、GitLab Runnerをインストールします。
- gitlab-runner registerで新たなランナーを登録します。
- エクゼキュータの選択の段で、「virtualbox」エクゼキュータを選択します。
- ランナーの名称には、ベースとなる仮想マシンの名称を入力しておくと混乱を避けられるでしょう。(マシン名は、仮想マシンの設定から『General > Basic > Name』に移動すると調べられる)
- 最後に、SSHの「user」と「password」を入力するか、仮想マシンの「identity_file」にパスを設けると、ランナーへのログインが可能になります。
新しいビルドが完成するまで
- 先ほど作成したマシンを使っていきます。ここで仮想マシンの名前が他の何かと重複していると、エラーが起こる可能性があります。:runner-<short-token>-concurrent-<id>
- 仮想マシンが正常に動作しなかった場合は、そのマシンをクローンして、別名称をつけることをおすすめします。
- データ転送(ポートフォワード)ルールに則って、SSHサーバーへのアクセスが構築されます。
- ここでランナーが開始されます。仮想マシンのスナップショットがリストアされる場合があります。
- ランナーがSSHサーバーの準備が整うまで、アクセスを待機します。
- ランナーが仮想マシンのスナップショットを作成します。(これは次回のビルドの速度向上に役立てられます)
- アプリが開発されている仮想マシンに、ランナーが接続してビルドが実行されます。
- ビルドが完了したら、アーティファクトが仮想マシン内にアップロードされます。(これはgitlab-runnerのバイナリによる動作です)
- ランナーが停止。場合によっては、仮想マシンがシャットダウンします。
Windows仮想環境チェックリスト
- Cygwinはインストールされていますか。
- Cygwinから sshd と git をインストールしましたか。(ここでWinows向けGitを使用してはなりません。パスに混乱をきたします。)
- Git LFSをインストールしましたか。
- sshdをサービスとして利用できるように設定しましたか。(詳しくはCygwin wikiをご覧ください。)
- 「TCPトラフィックを port 22で」受信できるように、Windows Firewallのルールを変更しましたか。
- GitLab サーバー(複数)に「~/.ssh/known_hosts」を設定しましたか。
- cygwinとwindows間には、パスが必要です。こちらの説明書を参考にsygpathユーティリティを利用してください。
Edit this page
2018-03-23 21:41:05 / Hnoss