說明
- 公司采用的是基于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:即實現手工登錄測試服務器的操作即可。
測試服務器上執行的Exec command
- 說明,更新代碼步驟:先把本地HEAD指向main/master,然后fetch PR的ref(碼云和GitHub都已經實現克隆分支代碼),然后合并pr_iid分支的代碼,最后刪除克隆PR時新建的本地pr_iid分支。
- 另外這里我們選擇ssh方式克隆PR代碼避免http方式需要輸入密碼而導致失敗。(main指的是目標項目的ssh地址)
碼云克隆項目PR說明
3. 點擊Build with Paramters
-
輸入目標項目的pr對應的id,點擊開始構建即可
輸入圖片說明
4. 構建結果
- 更新項目代碼過程:
更新項目代碼
- 編譯重啟服務過程:
編譯重啟gitlab
5. 遇到的問題
- 問題1:由于編譯部署的時間比較長大概5分鐘左右,從而導致構建[Exec timed out or was interrupted after 120,011 ms]。
- 解決:更改默認設置的Exec command時間,從默認的2分鐘改成10分鐘。
設置Exec timeout