gitlab(私库)–>project(gitlab-ci每个项目根目录下必须有)–>gitrunner(项目触发ci所运行注册runner令牌服务器)
一、持续集成(Continuous Integration)
要了解GitLab-CI与GitLab Runner,我们得先了解持续集成是什么:
- 软件集成是软件开发过程中的一个环节,这个环节的工作一般会包括以下流程:合并代码---->安装依赖---->编译---->测试---->发布。软件集成的工作一般会比较细碎繁琐,为了不影响开发效率,以前软件集成这个环节一般不会经常进行或者只会等到项目后期再进行。但是有些问题,如果等到后期才发现,解决问题的代价很大,有可能导致项目延期或者失败。因此,为了尽早发现软件集成错误,鼓励团队成员应该经常集成他们的工作,通常每个成员每天应该至少集成一次。这就是所说的持续集成。所以说,持续集成是一种软件开发实践。
- 软件集成的工作细碎繁琐,以前是由人工完成的。但是现在鼓励持续集成,那岂不是要累死人,还影响开发效率。所以,应该考虑将软件集成这个工作自动化,这就出现了所谓的持续集成系统。
二、GitLab-CI
- GitLab-CI就是一套配合GitLab使用的持续集成系统(当然,还有其它的持续集成系统,同样可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以后的版本是默认集成了GitLab-CI并且默认启用的。
安装 gitlab-runner (不使用 Docker 镜像安装,不好控制)
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
yum install gitlab-runner -y
gitlab-runner -v
注册 gitlab-runner
导航 > 管理区域(扳手图标) > Runners
- 安装一个与 GitLab CI 兼容的 Runner (如需了解更多的安装信息,请查看 GitLab Runner)
- 在 Runner 设置时指定以下 URL: http://git.dev-share.top/
- 在安装过程中使用以下注册令牌: 96JQ25HHmmC6n9Ez9Qzf
- 启动 Runner!
[root@gitrunner gitlab]# gitlab-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
^C
[root@gitrunner gitlab]# gitlab-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://47.92.170.1:8080/
Please enter the gitlab-ci token for this runner:
rx5MTgw5d8CK5Wer_PJ5
Please enter the gitlab-ci description for this runner:
[gitrunner]:
Please enter the gitlab-ci tags for this runner (comma separated):
tag-gittest
Whether to run untagged builds [true/false]:
[false]: true
Whether to lock Runner to current project [true/false]:
[false]: true
Registering runner... succeeded runner=rx5MTgw5
Please enter the executor: kubernetes, docker-ssh, parallels, shell, ssh, virtualbox, docker+machine, docker-ssh+machine, docker:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
将 .gitlab-ci.yml 文件加入到项目的根目录,Runner它会去读取这里面的配置
需求:whois项目是一个使用Node.js开发的服务器用来查询域名的,因此必须需要有node.js环境才能运行
配置 .gitlab-ci.yml
# 创建一个名为pages的任务
pages:
# 要执行的脚本
script:
# 初始化Node.js项目的依赖
- cnpm i
# 执行脚本
- sudo /home/gitlab-runner/kubectl-get-pods.sh
# 告诉 Runner 这个名为pages的任务,只在master分支上执行
only:
- master
# GitLab CI有三个默认阶段:1构建(build)、2测试(test)、3部署(deploy)。
# 告诉 Runner 这个名为pages的任务,只在测试阶段执行
stage: deploy
# 告诉 Runner 我们应用哪个标签
tags:
- tag-nodejs
# 创建一个名为test的任务
test:
# 要执行的脚本
script:
- cnpm i
# 告诉 Runner 告诉它测试除master分支之外的其他分支的每次推送
except:
- master
# GitLab CI有三个默认阶段:1构建(build)、2测试(test)、3部署(deploy)。
# 告诉 Runner 这个名为test的任务,只在测试阶段执行
stage: test
# 告诉 Runner 我们应用哪个标签。 如果不写会报错:(此作业被卡住,因为没有任何该项目指定标签的 runner 在线)
tags:
- tag-nodejs
# 创建一个名为new_tag的任务
new_tag:
# 要执行的脚本
script:
- cnpm i
# 告诉 Runner 这个名为new_tag的任务,只在新建tag的时候执行
only:
- tag
# GitLab CI有三个默认阶段:1构建(build)、2测试(test)、3部署(deploy)。
# 告诉 Runner 这个名为test的任务,只在测试阶段执行
stage: test
# 告诉 Runner 我们应用哪个标签。 如果不写会报错:(此作业被卡住,因为没有任何该项目指定标签的 runner 在线)
tags:
- tag-nodejs
注册完成之后,GitLab-CI就会多出一条Runner记录,如下所示:
GitLab-CI Runner
GitLab-CI会为这个Runner生成一个唯一的token,以后Runner就通过这个token与GitLab-CI进行通信。
那么,问题来了。注册好了的Runner的信息存放在哪儿了呢?
原来,Runner的信息是存放在一个配置文件里面的,配置文件的格式一般是.toml。这个配置文件的存放位置有以下几种情况:
在类Unix操作系统下(0.5.0之后版本)
如果是以root用户身份运行gitlab-ci-multi-runner register,那么配置文件默认是/etc/gitlab-runner/config.toml
如果是以非root用户身份运行gitlab-ci-multi-runner register,那么配置文件默认是~/.gitlab-runner/config.toml
在其他操作系统下以及0.5.0之前版本
配置文件默认在当前工作目录下./config.toml
git命令
命令行指令
Git 全局设置
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
创建新版本库
git clone http://47.92.170.1/root/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
已存在的文件夹
cd existing_folder
git init
git remote add origin http://47.92.170.1/root/test.git
git add .
git commit -m "Initial commit"
git push -u origin master
已存在的 Git 版本库
cd existing_repo
git remote rename origin old-origin
git remote add origin http://47.92.170.1/root/test.git
git push -u origin --all
git push -u origin --tags