1. 需求背景
公司有後臺項目和前端項目,後臺和前端是分開部署的,後臺是用svn進行代碼管理,並且通過jenkins進行持續集成和構建,但是前端還是用着最原始的方式通過上傳js,html文件到web服務器進行發佈,主要是造成了以下的問題:
- 部署麻煩,需要知道本地文件所在目錄和線上文件所在目錄,然後進行上傳
- 容易遺漏,在文件多的時候上傳會有遺漏情況發生,導致線上出問題
- 發佈流程不易管理,無法追蹤發佈時間,發佈目的,發佈內容
綜上幾點,再加上前端的代碼是通過碼雲的git進行託管的,所以jenkins配置碼雲的代碼來實現自動部署迫在眉睫。
2. 過程
2.1 目標
jenkins配置碼雲自動部署的目標是在指定分支上進行push到遠程庫的時候能夠觸發jenkins的構建,然後實現自動化部署上線。
2.1 尋找解決方案
在網上能看到很多部署方案,但是大都大同小異,描述得很不詳細,沒有從碼雲這個託管平臺的實際出發來講如何部署,後面通過翻閱碼雲的幫助文檔,再加上自己的一些經驗,終於實現了通過jenkins自動配置碼雲
2.2 部署過程
2.2.1 jenkins安裝碼雲Gitee插件
系統管理 --> 插件管理 --> 搜索插件(安裝),重啓即可(下圖是我在安裝好的插件中查詢出來的,我是已經安裝好的了)
2.2.2 插件配置
jenkins --> 系統管理 --> 系統設置 ,找到
Gitee 配置
選項
- 鏈接名:輸入你想要的名字,這個名字無所謂,後面只是做顯示作用
- Gitee 域名 URL:輸入碼雲完整URL地址,https://gitee.com(碼雲私有化客戶輸入部署的域名),一般填
https://gitee.com
即可 - 證書令牌:右邊選項點擊
add
,選擇jenkins
,- Domain:選擇
全局憑據(Global credentials)
- 類型(Kind):選擇
Gitee API 令牌(Gitee API Token)
- 範圍(Scope):根據你個人想要這個憑據在哪個範圍可使用,我選的是全局
- Gitee APIV5 私人令牌(Gitee API Token):輸入你的碼雲私人令牌,獲取地址
https://gitee.com/profile/personal_access_tokens
- ID和描述:自己隨便填,也是作爲顯示使用而已
添加完成後,選擇剛自己添加的這個令牌
- Domain:選擇
- Advanced:可配置是否忽略 SSL 錯誤(適您的Jenkins環境是否支持),並可設置鏈接測超時時間(適您的網絡環境而定),我是忽略掉的了。
- 測試連接:點擊可以確定自己的配置是否正確,如果不正確,則根據插件配置重新再走一遍。
2.2.3 新建構建任務
選擇自由風格的構建項目,然後開始配置:
- 選擇gitee地址
- 源碼管理配置
- 點擊
Git
,Repository URL
輸入git地址,Credentials
選擇無即可(前提是我們已經把jenkins所在服務器的公鑰配置在碼雲上了,該服務器可以直接使用git命令clone或pull碼雲的代碼) - 點擊
Advanced
,Name中輸入origin
,Refspec輸入+refs/heads/*:refs/remotes/origin/* +refs/pull/*/MERGE:refs/pull/*/MERGE
(這個的配置其實我並不是很懂) - Branch Specifier (blank for ‘any’)輸入
origin/${giteeSourceBranch}
- 源碼管理配置的其他都默認選項即可
- 點擊
- 觸發器配置
- 選擇
Gitee webhook 觸發構建
- 根據自己需要選擇
Gitee 觸發構建策略
- 其他默認即可
- 選擇自己需要過濾的分支,比如我這個job是構建測試環境的,那麼我只希望在push到dev分支上我纔要構建,所謂我只有dev分支接口
- 選擇
- 新建Gitee WebHook
這是整個配置的核心工作,通過配置WebHook,把我們jenkins相關的地址設置進去,在碼雲檢測到有push動作或其他指定動作的時候,就會調用我們配置的jenkins的地址,然後引發jenkins的構建。
進入源碼管理配置中設置的碼雲倉庫中,進入 管理 -> WebHooks
1. 填寫URL,該URL在配置jenkins的觸發器的時候,會顯示
2. 密碼填寫,在jenkins的配置中生成密碼,複製黏貼過去
3. 勾選push,即自己想要觸發構建的一些動作
4. 點擊測試,在正常的情況下可以發現jenkins已經自動構建了
- 構建過程
接下來就是在build中根據自己業務需求執行相關的構建步驟了,這個和碼雲部署無關,所以不再贅述。
3. 總結
至此,jenkins配置碼雲自動部署已經全部設置完畢,當有開發在本地的push代碼大遠程的dev分支時,就會觸發jenkins構建。從此,前端也走向了自動化部署的道路。
參考鏈接:
碼雲的jenkins插件
Linux安裝Git