說明
- 公司采用的是基于Forking工作流。(如果是Gitflow工作流,原理一樣)
- 公司的測(cè)試流程:開發(fā)者提交PR后,測(cè)試人員登錄測(cè)試服務(wù)器進(jìn)入項(xiàng)目,基于項(xiàng)目master分支拉取PR代碼后,編譯部署重啟服務(wù)。
- 測(cè)試的項(xiàng)目:gitlab,托管在碼云
目標(biāo)
- 通過jenkins實(shí)現(xiàn)自動(dòng)的更新測(cè)試機(jī)項(xiàng)目代碼然后編譯部署重啟服務(wù)。
新建一個(gè)自由風(fēng)格的job,然后配置
1. General
- General中勾選‘參數(shù)化構(gòu)建過程’,添加參數(shù)String Parameter
- 使用 ${pr_iid} 引用輸入?yún)?shù)值

輸入圖片說明
2. 構(gòu)建
- 構(gòu)建步驟選擇:Send files or execute commands over SSH,并選擇目標(biāo)服務(wù)器
- 添加Exec command:即實(shí)現(xiàn)手工登錄測(cè)試服務(wù)器的操作即可。

測(cè)試服務(wù)器上執(zhí)行的Exec command
- 說明,更新代碼步驟:先把本地HEAD指向main/master,然后fetch PR的ref(碼云和GitHub都已經(jīng)實(shí)現(xiàn)克隆分支代碼),然后合并pr_iid分支的代碼,最后刪除克隆PR時(shí)新建的本地pr_iid分支。
- 另外這里我們選擇ssh方式克隆PR代碼避免http方式需要輸入密碼而導(dǎo)致失敗。(main指的是目標(biāo)項(xiàng)目的ssh地址)

碼云克隆項(xiàng)目PR說明
3. 點(diǎn)擊Build with Paramters
-
輸入目標(biāo)項(xiàng)目的pr對(duì)應(yīng)的id,點(diǎn)擊開始構(gòu)建即可
輸入圖片說明
4. 構(gòu)建結(jié)果
- 更新項(xiàng)目代碼過程:

更新項(xiàng)目代碼
- 編譯重啟服務(wù)過程:

編譯重啟gitlab
5. 遇到的問題
- 問題1:由于編譯部署的時(shí)間比較長(zhǎng)大概5分鐘左右,從而導(dǎo)致構(gòu)建[Exec timed out or was interrupted after 120,011 ms]。
- 解決:更改默認(rèn)設(shè)置的Exec command時(shí)間,從默認(rèn)的2分鐘改成10分鐘。

設(shè)置Exec timeout
