微服務項目持續集成部署流程 什麼是持續化集成(continous itergration)?為了加快軟體開發速度,加強團隊成員間的合作力度,簡化項目的部署流程,使用一種自動編譯、打包、測試、發佈等技術來實現自動化的集成項目。在實現這一目標之前,我們需要做較多的前提工作: Gogs安裝,主要用個人的g ...
目錄
微服務項目持續集成部署流程
什麼是持續化集成(continous itergration)?為了加快軟體開發速度,加強團隊成員間的合作力度,簡化項目的部署流程,使用一種自動編譯、打包、測試、發佈等技術來實現自動化的集成項目。在實現這一目標之前,我們需要做較多的前提工作:
- Gogs安裝,主要用個人的git服務替代github等等網站,把代碼和控制權力掌握在自己手上。總之,Gogs就是個人版的github和碼雲。
- jekin使用流程的理解
Gogs容器的安裝與應用
Gogs是一款簡單、易用的git服務軟體,和碼雲,github的性質一樣,我們可以將代碼push到這個自己搭建的git服務上。本文針對微服務項目進行講解,微服務+docker是比較完美的組合,因此Gogs也才用docker容器來部署,具體的搭建步驟如下:
(1)下載Gogs鏡像到本地
docker pull gogs/gogs
(2)創建並啟動gogs容器
docker run -di --name=test_gogs -p 10022:22 -p 3000:3000 -v /var/gogsdata:/data gogs/gogs
gogs/gogs
(3)配置gogs
當gogs容器啟動後,我們輸入相應的http://ip:3000可以訪問到gogs應用的後臺,在後臺配置一些基本信息,如該gogs管理版本庫所需要的數據、該服務的訪問地址(當前宿主機的ip地址)等,這裡選擇其自帶的小型嵌入式關係型資料庫sqlite,當然也可以選擇mysql等其他資料庫。
(4)用戶註冊和配置
和github、碼雲提供的git服務一樣,註冊用戶即可使用。
(5)創建倉庫,與在github上的操作類似
註意 由於gogs容器中的ssh埠被映射為宿主機的10022埠,所以在使用ssh協議與gogs進行交互時,會有衝突,暫時無法使用,需要比較繁瑣的配置,這裡推薦先使用http協議。即3000埠所對應的協議。關於ssh協議的連接,後面有時間在做詳細的探索
(6)為了避免使用git提交源代碼到gogs倉庫出現commit rejection的錯誤,新建倉庫時候,最好不要添加任何文件,即創建一個空白的項目,這個錯誤的根本原因是因為本地倉庫的代碼與遠程倉庫的代碼不一致所產生的衝突,哪怕是一個空格也不行。
jenkins實現持續的集成
jenkins是一款開源的用於代碼集成處理的工具,通過使用git插件和maven插件來實現自動化集成項目的功能,因此在安裝完jenkins時候,還需要安裝兩個必要的插件:git和maven,git用於從git伺服器上(github或者gitee)下載源碼,maven用於管理項目所用到的所有依賴,這裡不對具體的細節展開討論,只對該工具的大概使用流程做一個描述罷了!!!(只有明白每一步配置的原因才行,碰到問題,具體搜尋答案,思路最重要,解決問題的技巧很重要,找到問題的關鍵點很重要,相信理性的魅力!)
因此jekins集成需要完成以下各個關鍵步驟:
(1)jekins安裝
(2)jekin中git插件和maven插件的安裝(兩個插件分別用於連接主機git和maven到jekin中,使得jekin可以使用主機中的git和maven)
(3)全局的工具設置
- 配置jekins所在主機的java環境
- 配置jekins中的git環境(git在主機中的安裝位置)
- 配置jekins中的maven環境(maven在宿主機中的位置,包括maven倉庫的位置)
(4)使用jekins創建集成項目 - 在jekins中構建maven項目
- 配置要連接的git伺服器地址(github gitee gogs等),使用能從這些git服務其上下載源代碼
- Build(配置項目的pom.xml文件;執行構建命令)
# 這其實是maven命令,只是jekins執行了maven命令;
#pom.xml文件是包含了依賴包坐標和相應的構建工具:dockers-maven工具等
clean package docker:build ‐DpushImage
(5)點擊執行,jekins根據pox.xml文件中插件和依賴的配置,自動實現部署.