Runner
Runner就像一个个的工人,而Gitlab-CI就是这些工人的一个管理中心,所有工人都要在Gitlab-CI里面登记注册,并且表明自己是为哪个工程服务的。当相应的工程发生变化时,Gitlab-CI就会通知相应的工人执行软件集成脚本。如下图所示:
gitlab里面的runner叫
Runner类型
Gitlab-Runner可以分类两种类型:Shared Runner(共享型)和Specific Runner(指定型)。
- Shared Runner:这种Runner(工人)是所有工程都能够用的。只有系统管理员能够创建Shared Runner。
- Specific Runner:这种Runner(工人)只能为指定的工程服务。拥有该工程访问权限的人都能够为该工程创建Shared Runner。
什么情况下需要注册Shared Runner?
- 比如,GitLab上面所有的工程都有可能需要在公司的服务器上进行编译、测试、部署等工作,这个时候注册一个Shared Runner供所有工程使用就很合适。
什么情况下需要注册Specific Runner?
- 比如,我可能需要在我个人的电脑或者服务器上自动构建我参与的某个工程,这个时候注册一个Specific Runner就很合适。
Runner搭建
1、linux操作系统,安装docker环境。(如果安装了devops,docker环境可以不用安装)
2、安装gitlab-runner
1. Runner 安装
在
# For Debian/Ubuntu curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash sudo apt-get install gitlab-ci-multi-runner # For RHEL/CentOS curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash sudo apt-get install gitlab-ci-multi-runner
在
linux系统,可以通过以下命令安装
# For Debian/Ubuntu/Mint curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash sudo apt-get install gitlab-runner # For RHEL/CentOS/Fedora curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
如果要安装特定版本的GitLab Runner:
# for DEB based systems apt-cache madison gitlab-runner export GITLAB_RUNNER_DISABLE_SKEL=true; sudo -E apt-get install gitlab-runner=10.0.0 # for RPM based systems yum list gitlab-runner --showduplicates | sort -r export GITLAB_RUNNER_DISABLE_SKEL=true; sudo -E yum install gitlab-runner-10.0.0-1
授予其执行权限:
sudo chmod +x /usr/local/bin/gitlab-runner
创建一个GitLab CI用户:
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
1.解决gitlab-runner执行docker命令提示权限不足的问题
将gitlab-runner用户添加到docker组sudo usermod -aG docker gitlab-runner
验证是否生效:sudo -u gitlab-runner -H docker info
2.给gitlab-runner sudo权限sudo vi /etc/sudoers
在root ALL=(ALL:ALL) ALL 下增加gitlab-runner ALL=(ALL) NOPASSWD: ALL
2. 获取Runner注册Token
安装好Runner之后,需要向Gitlab进行注册,注册Runner需要GitLab-CI的url和token。可根据需求注册选择所需类型Runner。这里介绍spercific runners为例
图中的Url和Token是runner链接到仓库的两个重要参数
3.runner配置
执行注册runner的命令(如果你是安装的
执行注册runner的命令(如果你是安装的
接下来会提示你输入一系列配置内容
注意,在要求输入
tag 时,想好tag的名字,这个就相当于你的runner的id
## 输入url a、Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com ) ## 输入token b、Please enter the gitlab-ci token for this runner ## 写个描述 c、Please enter the gitlab-ci description for this runner ## 这个tag很重要,好好想个名字并记住,随后在ci配置中需要对应上。 d、Please enter the gitlab-ci tags for this runner (comma separated) ## ci没有配置tags时是否执行这个runner?建议采用默认值。 e、Whether to run untagged builds [true/false] ## 是否只对当前工程有效?理论上讲只有“Shared runners”才有效。选true。 f、Whether to lock Runner to current project [true/false] ## 选择一个执行器。我们接来下的方案是基于shell的,输入shell。 g、Please enter the executor: virtualbox, docker+machine, kubernetes, parallels, docker-ssh, shell, ssh, docker-ssh+machine, docker:
注册完成后,会出现一个runner,我这里注册了两个,所以会有两个tag
runner 左边会有一个
小绿点 ,表示该runner是能正常执行的
Gitlab-runner的配置
GitLab-CI会为这个Runner生成一个唯一的token,以后Runner就通过这个token与GitLab-CI进行通信。
那么,问题来了。注册好了的Runner的信息存放在哪儿了呢?
原来,Runner的信息是存放在一个配置文件里面的,配置文件的格式一般是.toml。这个配置文件的存放位置有以下几种情况:
- 在类Unix操作系统下(0.5.0之后版本)
- 如果是以root用户身份运行gitlab-runner register,那么配置文件默认是/etc/gitlab-runner/config.toml
- 如果是以非root用户身份运行gitlab-runner register,那么配置文件默认是~/.gitlab-runner/config.toml
- 在其他操作系统下以及0.5.0之前版本
配置文件默认在当前工作目录下./config.toml
一般情况下,使用默认的配置文件存放Runner的配置信息就可以了。当然,如果你有更细化的分类需求,你也可以在注册的时候通过-c或--config选项指定配置文件的位置。具体查看register命令的使用方法:
问题:如果不运行
回答:当然不可以。因为gitlab-ci-runner register的作用除了把Runner的信息保存到配置文件以外,还有一个很重要的作用,那就是向GitLab-CI发出请求,在GitLab-CI中登记这个Runner的信息并且获取后续通信所需要的token。
让注册好的Runner运行起来
Runner注册完成之后还不行,还必须让它运行起来,否则它无法接收到GitLab-CI的通知并且执行软件集成脚本。怎么让Runner运行起来呢?gitlab-runner提供了这样一条命令gitlab-runner run-single
以上的就是在linux机器上直接安装runner的过程,关于gitlab ci怎么使用runner执行我们想要执行的任务,可参考这篇文章: