バーチャルボックス
VirtualBox では、VirtualBox の仮想化を使用して、ビルドのたびにクリーンなビルド環境を提供することができます。この Executor は VirtualBox 上で実行できるすべてのシステムをサポートしています。唯一の要件は、仮想マシンが SSH サーバーを公開し、Bash または PowerShell と互換性のある Shell を提供することです。
概要
プロジェクトのソースコードは、以下の場所にチェックアウトされます:~/builds/<namespace>/<project-name>
.
どこに:
-
<namespace>
はプロジェクトが GitLab に保存されている名前空間です。 -
<project-name>
は GitLab に保存されているプロジェクトの名前です。
~/builds
ディレクトリを上書きするには、config.toml
の[[runners]]
セクションでbuilds_dir
オプションを指定します。
また、GIT_CLONE_PATH
を使用してジョブごとにカスタムビルドディレクトリを定義することもできます。
新しいベース仮想マシンの作成
-
VirtualBoxをインストールします。
- Windowsから実行しており、VirtualBoxがデフォルトの場所(例えば
%PROGRAMFILES%\Oracle\VirtualBox
)にインストールされている場合、GitLab Runnerは自動的にそれを検出します。そうでない場合は、gitlab-runner
プロセスのPATH
環境変数にインストールフォルダを追加する必要があります。
- Windowsから実行しており、VirtualBoxがデフォルトの場所(例えば
- VirtualBoxで仮想マシンをインポートまたは新規作成
- ネットワークアダプター1を “NAT “として設定します(これが現在GitLab RunnerがゲストにSSHで接続する唯一の方法です)。
- (オプション) ゲストからインターネットにアクセスするためにもう一つのネットワークアダプタを “Bridged networking” として設定します。
- 新しい仮想マシンにログインします。
- Windows VMの場合は、Windows VMのチェックリストを参照してください。
- OpenSSHサーバのインストール
- ビルドに必要なその他の依存関係をすべてインストールします。
- ジョブのアーティファクトをダウンロードまたはアップロードしたい場合は、
gitlab-runner
をVM内部にインストールします。 - ログアウトして仮想マシンをシャットダウン
Vagrant のような自動化ツールを使って仮想マシンをプロビジョニングしても全く問題ありません。
新しいランナーを作成します。
- GitLab RunnerをVirtualBoxが稼働しているホストにインストールします。
- で新しいランナーを登録します。
gitlab-runner register
-
virtualbox
の Executor を選択します。 - 先に作成したベース仮想マシンの名前を入力します(仮想マシンの設定にあるGeneral > Basic > Name)。
- 仮想マシンの SSH
user
とpassword
またはidentity_file
へのパスを入力します。
どのように動作するか
新しいビルドが開始されると
- 仮想マシンの一意の名前が生成されます:
runner-<short-token>-concurrent-<id>
- 仮想マシンが存在しない場合は、その仮想マシンがクローンされます。
- SSHサーバにアクセスするためのポートフォワーディングルールが作成されます。
- GitLab Runnerが仮想マシンのスナップショットを起動または復元します。
- GitLab RunnerはSSHサーバーがアクセス可能になるのを待ちます。
- GitLab Runnerは実行中の仮想マシンのスナップショットを作成します(これは次のビルドを高速化するために行われます)。
- GitLab Runnerが仮想マシンに接続し、ビルドを実行します。
- 有効にすると、アーティファクトのアップロードは仮想マシン内部の
gitlab-runner
バイナリを使います。 - GitLab Runnerが仮想マシンを停止またはシャットダウンします。
Windows VMのチェックリスト
WindowsでVirtualBoxを使用するには、CygwinまたはPowerShellをインストールします。
Cygwin を使用
- Cygwinのインストール
- Cygwinから
sshd
、Gitをインストール(Git for Windowsは使わないでください。パスのイシューがたくさん発生します!) - Git LFS のインストール
-
sshd
を設定し、サービスとしてセットアップします (Cygwin wiki を参照) - Windowsファイアウォールでポート22のTCPトラフィックを許可するルールを作成します。
- GitLabサーバーを以下に追加します。
~/.ssh/known_hosts
- Cygwin と Windows の間でパスを変換するには、
cygpath
ユーティリティを使います。
ネイティブのOpenSSHとPowerShellを使用
GitLab Runner 14.6で導入されました。
- PowerShellのインストール
- OpenSSHのインストールと設定
- Git forWindowsのインストール
-
のデフォルトシェルを
pwsh
として設定します。正しいフルパスで example を更新します:New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "$PSHOME\pwsh.exe" -PropertyType String -Force
-
pwsh
にシェルを追加します。config.toml