引言
筆者曾通過2種方式部署過 gitlab-runner
,在 gitlab
中使用這個 runner
拉起 ci job 的過程中或多或少遇到些問題,主要都是 job 中無法訪問宿主機的docker 等組件。本篇文檔主要記錄 gitlab-runner
安裝及相關配置。
二進制部署 gitlab-runner
部署
以 arm64 架構的為例
arch="arm64"
curl -LJO "https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/rpm/gitlab-runner-helper-images.rpm"
curl -LJO "https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/rpm/gitlab-runner_${arch}.rpm"rpm -i gitlab-runner-helper-images.rpm gitlab-runner_arm64.rpm
配置 gitlab-runner
這里就是主要出現問題原因所在,要把 gitlab-runner
的執行用戶更新為 root
vi /etc/systemd/system/gitlab-runner.service# 修改 "--user" "gitlab-runner" 中的 gitlab-runner 為root,結果如下
ExecStart=/usr/bin/gitlab-runner "run" "--config" "/etc/gitlab-runner/config.toml" "--working-directory" "/home/gitlab-runner" "--service" "gitlab-runner" "--user" "root"systemctl daemon-reload
systemctl restart gitlab-runner
ps aux | grep gitlab-runner
docker 容器部署 gitlab-runner
部署
sudo docker run -d --name gitlab-runner --restart always -u root \-v /srv/gitlab-runner/config:/etc/gitlab-runner \-v /var/run/docker.sock:/var/run/docker.sock \gitlab/gitlab-runner:latest
配置
在正常 gitlab-runner register 后,得到一個新的 runner 會生成配置到配置文件/etc/gitlab-runner/config.toml
中。此時,需要去更新這個文件中的 runner 的 volumes 信息。
[[runners]]executor = "docker"[runners.docker]volumes = ["/var/run/docker.sock:/var/run/docker.sock"] # 必須,主要就是配置這個
配置完成后,執行 gitlab-runner restart
即可。