目的:在 Ubuntu 服务器上,使用 Docker 安装和配置 GitLab Runner,搭建 GitLab CI 持续集成环境。
服务器版本 Ubuntu 16.04 LTS。
安装命令:
- $ docker run -d --name gitlab-runner --restart always \
- -v /srv/gitlab-runner/config:/etc/gitlab-runner \
- -v /var/run/docker.sock:/var/run/docker.sock \
- gitlab/gitlab-runner:latest
参数说明:
: 设置容器后台运行
- --d
:容器名称
- --name
:每次启动容器就重启 gitlab-runner
- --restart always
: 共享目录挂载(如果是 Mac OSX 系统,需要把
- --v
改为
- /srv
)
- /Users/Shared
安装好之后,可以使用
查看容器是否在运行,接着我们进入容器:
- docker ps
- $ docker exec - it gitlab - runner gitlab - runner register
是进入
- gitlab-runner register
容器的执行命令,用于注册和初始化
- gitlab-runner
。
- gitlab-runner
下面是我的示例配置:
我们也可以编辑
,手动修改配置:
- vim /srv/gitlab-runner/config/config.toml
- concurrent = 1
- check_interval = 0
- [[runners]]
- name = "my-runner"
- url = "http://40.125.206.47"
- token = "b6ac044b57cbb22073b95dd384e517"
- executor = "docker"
- [runners.docker]
- tls_verify = false
- image = "microsoft/dotnet:latest"
- privileged = false
- disable_cache = false
- volumes = ["/cache"]
- shm_size = 0
- [runners.cache]
需要用
- gitlab-ci token
账号登陆 GitLab,才能看到(
- root
):
- /admin/runners
配置好之后,我们就可以在 GitLab 中看到 GitLab Runner 了,示例:
然后点击修改,添加我们需要应用 GitLab Runner 的 Project 项目,示例(点击
启用):
- Enable
下面我们就可以为
项目(
- hwapp
使用 ASP.NET Core 2.0 创建),添加
- hwapp
配置文件了(用于执行 CI 的脚本文件),简单配置(用于还原程序包和构建项目):
- .gitlab-ci.yml
- stages:
- - build
- build_job:
- stage: build
- script:
- - dotnet restore
- - dotnet build
关于
的语法,可以看一下之前的文章,或者查看:
- .gitlab-ci.yml
把
提交到 GitLab,然后我们就可以看到执行结果了:
- .gitlab-ci.yml
执行是失败的,我们点击进入详情,就可以看到整个的执行过程:
是我们一开始配置 GitLab Runner 填写的 Docker Image,并且 Runner executor 选择的是
- microsoft/dotnet:latest
,也就是说 GitLab Runner 的构建环境是
- docker
,并且默认使用的镜像是
- docker
,由此再进行创建相应容器,并在其容器中执行 CI 脚本,从上面的执行过程,我们就可以看出来了。
- microsoft/dotnet:latest
需要注意的是,GitLab Runner 配置的 Docker Image,最好是我们自定义构建的 Image 镜像,这样我们执行 CI 脚本环境,会更加丰富。
根据错误信息,我们修改下对应代码,重新提交到 GitLab,可以看到这次是构建成功的:
大概就记录这些,接下来还需要继续完善,比如:
文件,使用 CI 脚本构建自定义镜像,然后在服务器上拉取并创建相应容器,最后启动容器,完成发布和部署。
- Dockerfile
参考资料:
来源: http://www.cnblogs.com/xishuai/p/ubuntu-install-gitlab-runner-with-docker.html