0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この記事誰得? 私しか得しないニッチな技術で記事投稿!

GitLabのCI/CDパイプラインでvirtualboxを動かす。(gitlab runner - virtualbox executor)

Last updated at Posted at 2023-06-07

これは何?

参考

要約

GitLabのCI/CDパイプライン実行を担うgitlab Runnerには、複数のexecutor(パイプライン実行環境)がある。

virtualbox executorに関する日本語の情報が少なかったため記載。

VMに可能なことはほぼすべて可能であり、スナップショットから実行するため、安定して同じ結果が得られます。

例えば、CI/CDのユースケースとして、
巨大なmavenプロジェクトでdocker imageをbuild, pushするといった用途には、docker executorより向いていると思われます。
(docker でもdoodで出来なくはない)
shell executorでも可能ですが、セキュリティや冪等性に難があるため、このようなユースケースの場合、virtualbox executorが向いています。

蛇足ですが、KVMを使っているproxmox上では特段の設定を必要とせず、ネストした仮想化が使えた。

動作に関して

virtualbox executorは、VMの制御以外はssh executorとほぼ同じ挙動になるようで、
単にVMに対してSSHを行っているだけのよう。

Runnerのインストール・実行

参考

インストール

arch=amd64
curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_${arch}.deb"
sudo dpkg -i gitlab-runner_${arch}.deb

systemdに再登録
virtualboxのVMを作ったユーザーを指定
本来これだけで良いハズだが、VMが存在しないと言われてしまったので、.serviceファイルにUser, Groupを追記

your_username=user
sudo gitlab-runner uninstall
sudo gitlab-runner install --user $your_username --config $HOME/.gitlab-runner/config.toml

sudo nano /etc/systemd/system/gitlab-runner.service
# または
sudo sed -i "s/\[Service\]/\[Service\]\nUser\=$your_username\nGroup\=$your_username\n/" /etc/systemd/system/gitlab-runner.service

VMの作成

とりあえずvirtualboxとvagrantのインストール

sudo apt-get install -y vagrant virtualbox

vagrantでVMを作成

mkdir executor_vm
cd executor_vm
vagrant init generic/ubuntu2004

# 適当に編集
# VM名と、GitLabへの名前解決、ciで必要なツールなど
nano Vagrantfile

vagrant up

Runnerの登録

対話、非対話形式に問わず最低限、

  • gitlabのURL
  • gitlabのトークン
  • executor
  • VM名
  • VMのユーザー名
  • VMのパスワード

を指定。
手元の実験環境では、--ssh-disable-strict-host-key-checking "true"を指定しないとVMへのSSHに失敗した。
それよりしたの設定項目は任意。

runner登録の例

URL=" your gitlab url "
TOKEN=" your token "
VM_NAME=" your vm name "
VM_USER="your vm user"
VM_PASS="your vm password"

# virtualboxのVMを作ったユーザーで実行している点に留意
gitlab-runner register \
      --non-interactive \
      --url "$URL" \
      --registration-token "$TOKEN" \
      --executor "virtualbox" \
      --virtualbox-base-name "$VM_NAME" \
      --ssh-user "$VM_USER" \
      --ssh-password "$VM_PASS" \
      --ssh-disable-strict-host-key-checking "true" \
      --description "virtualbox-runner" \
      --maintenance-note "Free-form maintainer notes about this runner" \
      --tag-list "virtualbox" \
      --run-untagged="true" \
      --locked="false" \
      --access-level="not_protected"
0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?