说明
- 公司采用的是基于Forking工作流。(如果是Gitflow工作流,原理一样)
- 公司的测试流程:开发者提交PR后,测试人员登录测试服务器进入项目,基于项目master分支拉取PR代码后,编译部署重启服务。
- 测试的项目:gitlab,托管在码云
目标
- 通过jenkins实现自动的更新测试机项目代码然后编译部署重启服务。
新建一个自由风格的job,然后配置
1. General
- General中勾选‘参数化构建过程’,添加参数String Parameter
- 使用 ${pr_iid} 引用输入参数值
2. 构建
- 构建步骤选择:Send files or execute commands over SSH,并选择目标服务器
- 添加Exec command:即实现手工登录测试服务器的操作即可。
- 说明,更新代码步骤:先把本地HEAD指向main/master,然后fetch PR的ref(码云和GitHub都已经实现克隆分支代码),然后合并pr_iid分支的代码,最后删除克隆PR时新建的本地pr_iid分支。
- 另外这里我们选择ssh方式克隆PR代码避免http方式需要输入密码而导致失败。(main指的是目标项目的ssh地址)
3. 点击Build with Paramters
-
输入目标项目的pr对应的id,点击开始构建即可
4. 构建结果
- 更新项目代码过程:
- 编译重启服务过程:
5. 遇到的问题
- 问题1:由于编译部署的时间比较长大概5分钟左右,从而导致构建[Exec timed out or was interrupted after 120,011 ms]。
- 解决:更改默认设置的Exec command时间,从默认的2分钟改成10分钟。