git 提交后Jenkins自動構建、并發布服務
現狀:當前開發在迭代中完成相關feature功能開發之后到發布到dev環境的流程是:
- 提交代碼到git對應的分支
- 需要登錄域賬號去Jenkins服務查找相關的項目任務,再手動選擇分支進行構建。這里可能還涉及到
- 沒有Jenkins項目權限,需要找其他相關開發開權限
- 第一次沒有分支,需要到配置構建步驟里面去添加相關分支
- 等待構建完成之后手動登錄OneOps系統選擇對應的項目,選擇對應的nuget包版本進行發布
順暢情況就是上面三步,這三步每一步開發都得關注結果,順暢下來少則3、5分鐘,如果打包失敗可能還需要到Jenkins服務上查看失敗原因。再次修改項目代碼,再次重復上面的步驟。
期望改進:
解放開發,讓其只關注于代碼提交,提交后讓Jenkins自動構建、構建完成后自動發布到ops系統,并通知結果(包括構建失敗通知、發布成功通知)
實現步驟:
Jenkins項目構建步驟修改
-
配置手動構建分支參數

-
配置git項目地址,以及手動打包時候選擇分支參數,這里的${Branch}分支參數來源于上面步驟的choice參數。注意此處的${Branch}參數項目MsBuild時候會用到,因此后面git push自動構建時候需要生成改環境變量。


-
構建觸發配置,選擇Build when a change is pushed to GitLab。這里我們勾選如下幾個選項
并且設置了只有dev以及test相關的分支才觸發自動構建,過濾master以及online分支
- Build on Merge Request Events
- Build on Push Events
- Rebuild open Merge Requests
- Enable [ci-skip]
- Accept merge request on success
- Filter branches

- 構建環境,設置了版本為${GIT_BRANCH}.${BUILD_NUMBER}兩個系統環境變量,并且設置為構建顯示名稱——分支名稱+構建序號

并且問了兼容手動選擇分支構建以及git push自動構建,我們通過windows batch command 導出了環境變量Branch,如果是git push自動構建,我們就將gitlabBranch環境變量賦值給Branch變量。并導出到opsevn.properties文件中。
5. 構建步驟中再次注入opsevn.properties文件中的環境變量。再次通過Properties Content 注入一些自動發布、通知python腳本中需要使用Jenkins環境變量,包括:
- clusterId 發布集群id
- serviceId 發布服務id
- esbName 服務名稱
- buildUrl 構建url地址
- buildNumber 構建版本號
- buildCase 構建方式

再次通過windows batch command執行編譯構建,并且獲取構建是否成功。將狀態帶入到python腳本。以便后續通知使用。
6. gitlab中webhook設置,將上面步驟3圖中的GitLab CI Service URL 加入到webhook。

- python腳本 AutoOps.py 獲取傳入的構建參數后,做一下步驟處理:
- 判斷傳入相關參數并校驗
- 獲取構建操作人
- 獲取構建方式
- 判斷構建狀態是否成功
- 失敗發布Markdown提醒到企業微信群,可以自己查看失敗原因
- 構建成功注入cookie
- 通過集群、服務、構建版本號獲取構建的nuget包
- 調用接口發布nuget服務包
- 發布成功Markdown消息提醒到企業微信群,可以直接查看發布結果



ps:需注意
- 環境變量的導出、導入方式
- 批處理中獲取構建結果是否成功
作者:rpoplar
出處:http://www.rzrgm.cn/rpoplar/
本文版權歸作者【rpoplar】和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究其法律責任的權利。
出處:http://www.rzrgm.cn/rpoplar/
本文版權歸作者【rpoplar】和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究其法律責任的權利。

浙公網安備 33010602011771號