目标
提交代码后,根据以有的配置,自动触发,进行代码测试程序或者程序的部署。
需求:
目前项目中,需要管理多个版本(32位,64位)的补丁包。每次修改完代码,提交后,都需要人手动在安装或者测试机器上,编译,安装,运行。
为将这个流程自动化,可采用gitlab 与gitlab CI (continous intergration)来实现其自动化。
针对于目前客户端侧不同企业,需要生成特定的客户端版本,也可以让其自动化。
结构:
主要结构分为4部分:
- 目标机器
包含:1.测试机器;2.部署机器; - git与gitlab-ci(可持续集成服务)
用于保存代码,与解析.gitlab-ciyml
文件,触发 持续集成动作 - git 客户端
使用git 客户端提交代码的最终用户
工作流
- 用户U1,使用git 客户端,建立一个项目 repo1;
- repos1项目中包含文件:
1 | >(repos1)$ ls -a |
- 修改readme文件
1 | git add readme |
- git push 执行后,提交到gitlab服务器后,gitlab服务,解析.gitlab-ci.yml,, 触发gitlab-ci-runner去处理, .gitlab-ci.yml中定义的流程;
(前提是: gitlabci-runner要配置,并注册成功,具体配置操作说明见
工程文件内容:
- git 工程
- .gitlab-ci.yml 文件:
每个工程下面使用.gitlab-ci.yml
文件,来控制提交代码后,gitlab ci 解析yml文件,来获取如何去部署程序。
如gitlab-ci.yml
:
1 | 162deploy: # 162 |
注: yml文件格式必须有tab或空格
- tags
deploy162
,deploy250
分别指在192.168.1.162、192.168.1.250上运行的gitlab-ci-runner的名称,gitlab-ci是根据.gitlab-ci.yml
中的tags来匹配具体任务由哪个runner来处理。
上面的script是指编译安装程序。 - script
make && make install
是指要部署到相应的服务器上时,需要执行的脚本命令.对于需要编译的程序而言,就是编译安装,而对于php等web程序而言,就是把代码复制到相应的安装目录。
流程举例:
流程如下:
gitlab-runner: 配置举例 (目前192.168.1.184地址配置了gitlab-runner)
可登录gitlab网页版,查看当前注册的git-runner
1 | [email protected] ~ $ cat /etc/gitlab-runner/config.toml |
相关链接
TIPS:
在git提交时添加[ci skip]
, 可以跳过gitlab-ci检测。