現狀:當前開發在迭代中完成相關feature功能開發之後到發佈到dev環境的流程是: 提交代碼到git對應的分支 需要登錄域賬號去Jenkins服務查找相關的項目任務,再手動選擇分支進行構建。這裡可能還涉及到 沒有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:需註意
- 環境變數的導出、導入方式
- 批處理中獲取構建結果是否成功
出處:http://www.cnblogs.com/rpoplar/
本文版權歸作者【rpoplar】和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究其法律責任的權利。