在gitlab上setup CI

时间:2023-11-11 10:22:38

安装gitlab runner

docker pull gitlab/gitlab-runner

启动gitlab runner

docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest

配置gitlab runner

docker exec -it gitlab-runner gitlab-runner register

输入gitlab ci地址,比如:http://gitlab.com/ci

输入token:可以在gitlab的admin area->overview->runners里面找到

输入描述信息

输入tag

输入类型:Docker

输入镜像:Ruby2.1

或者直接用参数方式传入:

docker exec -it gitlab-runner gitlab-runner register \
--url "http://gitlab.com/ci" \
--registration-token "xxxxx" \
--description "dotnet" \
--executor "docker" \
--docker-image microsoft/dotnet

配置CI脚本

在gitlab project首页,有选项:setup CI,点击之后会建立.gitlab-ci.yml文件,

简单输入测试脚本:

image: registry.cn-hangzhou.aliyuncs.com/cjx/tutorial
build:
stage: build
script:
- dotnet restore
- dotnet run

完成之后,Runner会自动跑脚本。

遇到的坑:

一开始有自定义gitlab的hosts:gitlab.cjx.com,在用runner跑测试脚本时,即使在runner启动的时候添加了host,也会报 port 80 : connection refused错误,貌似container里面的runner根本就没有解析这个hosts文件,最后把hosts去掉全部用IP访问搞定了。

docker run  --name gitlab-runner --restart always \
--add-host gitlab.cjx.com:192.168.30.129
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest

具体原因还要再研究一下。