Gitlab-Runner是Gitlab CI/CD的执行者,gitlab-runner又有很多种类型(就是所谓的executor):
Executor | SSH | Shell | VirtualBox | Parallels | Docker | Kubernetes | Custom |
---|---|---|---|---|---|---|---|
Clean build environment for every build | ? | ? | ? | ? | ? | ? | conditional (4) |
Reuse previous clone if it exists | ? | ? | ? | ? | ? | ? | conditional (4) |
Runner file system access protected (5) | ? | ? | ? | ? | ? | ? | conditional |
Migrate runner machine | ? | ? | partial | partial | ? | ? | ? |
Zero-configuration support for concurrent builds | ? | ? (1) | ? | ? | ? | ? | conditional (4) |
Complicated build environments | ? | ? (2) | ? (3) | ? (3) | ? | ? | ? |
Debugging build problems | easy | easy | hard | hard | medium | medium | medium |
如上表所示,docker无疑是最佳选择。
其实是之前一直用的shell模式,想试试docker好用不,用过之后真香
根据gitlab server 的版本pull对应版本的gitlab-runner的镜像,镜像版本号查看地址
// 镜像版本根据自己的gitlab版本而定
sudo docker pull gitlab/gitlab-runner:v13.10.0
// docker in docker 的镜像,根据本地的docker版本来拉去相应的版本
sudo docker pull docker:20.10.5-dind
// 创建文件夹来放配置文件以及公共的缓存文件,到时候会映射进去
sudo mkdir /var/gitlab-runner /var/gitlab-runner/config /var/gitlab-runner/.nuget /var/gitlab-runner/.m2 /var/gitlab-runner/.npm
// 运行gitlab-runner
sudo docker run -d --name gitlab-runner --restart always -v /var/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:v13.10.0
// 运行注册容器
sudo docker run --rm -it -v /var/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register -n // gitlab 地址
--url https://gitlab.com/ // token
--registration-token REGISTRATION_TOKEN // executor 固定是docker
--executor docker // runner的描述
--description "auto build image" // docker in docker模式中使用的docker的镜像,根据本地的docker的版本选择,我本地的docker版本是20.10.5所以docker-image选的是docker:20.10.5-dind
--docker-image "docker:20.10.5-dind" --docker-volumes /var/run/docker.sock:/var/run/docker.sock
// .net nuget 包全局缓存
--docker-volumes /var/gitlab-runner/.nuget:/root/.nuget
// java maven 包全局缓存
--docker-volumes /var/gitlab-runner/.m2:/root/.m2
// js npm 包全局缓存
--docker-volumes /var/gitlab-runner/.npm:/root/.npm
执行完成后关闭容器即可。
sudo docker restart gitlab-runner
成功后会在/var/gitlab-runner/config
目录下生成一个config.toml
,并且在gitlab的Admin Area -> Runners界面看到注册成功的runner.
大功告成!!!
参考网址:
Gitlab CI/CD 之 Gitlab-Runner - Docker Executor
原文:https://www.cnblogs.com/wh-blog/p/14630076.html