gitlab-ci 使用gitlab-runner进行自动部署
一.前言
- gitlab-ci作用: gitlab 提交代码/打tag时 自动更新代码
- gitlab-ci运行原理:
- gitlab运行逻辑
gitlab-ci 和 gitlab-ci server 和 gitlab-ci-runner 两部分
gitlab-ci server负责调度,触发runner
gitlab-runner 执行自动化CI (测试、编译、打包)
二.安装过程
1.安装runner
安装runner的服务器可以是gitlab的部署服务器 也可以是其他服务器
# 在root下执行
# 下载gitlab-runner
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7/gitlab-runner-10.5.0-1.x86_64.rpm
# 安装
rpm -ivh gitlab-runner-10.5.0-1.x86_64.rpm
下面提供一些gitlab-runner的操作(可忽略)
# 在root下执行
# 删除服务
gitlab-runner uninstall
# 添加服务
gitlab-runner install --working-directory /home/jack --user jack
# 重启服务
gitlab-runner restart
# 查看状态
gitlab-runner status
输出:gitlab-runner: Service is running!
# 查看是否生效
ps -ef | grep gitlab-runner
输出:root 17454 1 0 Mar23 ? 01:18:03 /usr/bin/gitlab-runner run --working-directory /home/jack --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --user jack
2.注册runner
把runner信息注册给gitlab-ci 服务 告诉CI ”我是谁,我能做什么“
先去gitlab项目界面 ->Settings –> CI/CD –> Runners->exp
找到urk和token 后注册 runner
# 在root下执行
gitlab-runner register
WARNING: Running in user-mode.
WARNING: The user-mode requires you to manually start builds processing:
WARNING: $ gitlab-runner run
WARNING: Use sudo for system-mode:
WARNING: $ sudo gitlab-runner...
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.1.200/ # 填写刚才看到的URL
Please enter the gitlab-ci token for this runner:
eHMqXjw9ELDy2StsRWXT # 填写刚才看到的Token
Please enter the gitlab-ci description for this runner:
[dev_srv]:web_dev # 描述一下该runner,和下面的tags相同即可
Please enter the gitlab-ci tags for this runner (comma separated):
web_dev # 该runner起个名字
Whether to run untagged builds [true/false]:
[false]: # 直接回车
Whether to lock the Runner to current project [true/false]:
[true]: # 直接回车
Registering runner... succeeded runner=eHMqXjw9
Please enter the executor: shell, ssh, docker+machine, docker, docker-ssh, parallels, virtualbox, docker-ssh+machine, kubernetes:
shell # 填写runner执行时需要使用什么执行器,一般都填shell或者docker。
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
注册成功
3.编写.gitlab-ci.yml文件
stages:
- deploy
deploy:
stage: deploy
script:
- cp -r * /home/wwwroot/test.bgcolor.cn
only:
- dev
tags:
- web_dev
stages:下的deploy说明在代码提交后CI需要执行deploy节点的内容。
deploy:的script就是一个个shell命令,这里需要注意每个命令都以杠+空格开头。
only:只有向dev分支提交代码时才生效。
tags:只有拥有该tags的Runner才需要执行。
4.测试
这里我们在本地推一下dev分支的代码测试ci的自动化部署服务
推送分支后 在项目的CI/CD项可以看见 自动化失败
点击failed查看具体原因
发现是权限问题
这里gitlab-ci服务的用户默认是 gitlab-runner 只需将需要自动化部署的项目 赋予 gitlab-runner 权限就可以了
chown -R gitlab-runner:gitlab-runner ./test.bgcolor.cn
让我们推送dev分支再测试一下
推送成功