-----很詳細的Az Devops部署java項目的文章
提示:
此文是本人打著想玩一玩devops的想法,來記錄的曹阔,用的是最直接簡單的方法來實現(xiàn)持續(xù)部署的,適合個人玩玩demo炼吴,內(nèi)容不一定適合實際生產(chǎn)峻仇,大家就當逛逛就行
好吧,切入正題,先簡單講講Azure Devops是什么:
簡介:
-
Azure Devops是MS Azure下的產(chǎn)品,提供devops自動集成和部署的服務平臺:
是MS Azure下的產(chǎn)品,提供devops服務的平臺
正式進入主題:
那么要完成使用Azure Devops自動集成部署一個Springboot項目我們需要那些準備工作呢?
第1步:
1.因為我們需要有自動部署連接的云服務器, 當然先要有一臺可遠程連接的云服務器啦,這里我選擇了騰訊的學生體驗服務器袁波,(當然你也可以使用阿里的)瓦阐,在使用微信掃碼支付0.01元實名認證后蜗侈,我免費獲取了一個體驗服務器,注意這里的root用戶的ip和密碼睡蟋,我們在后面需要使用到
2.給你的云服務器安裝JDK,并配置好環(huán)境變量,
因為我買的云服務器莫得安裝JDK,所以我們需要安裝jdk,(如果你已經(jīng)安裝jdk,可以跳過這步)這里你可以選擇手動ssh連接你的云服務器安裝.
第2步: 需要有一個Azure Devops的賬號,這個賬號使用你的微軟賬戶登錄/郵箱注冊都行, 且是免費的.
注冊登陸后, 你需要創(chuàng)建一個組織和項目(例如我的組織190...項目名azure-devops,且是public的):到此我們的準備工作已經(jīng)做好
第3步:
在本地新建一個以maven管理的Springboot Start Web項目,并在Controller層寫一個測試連接的Http api接口,在本地運行成功后, 提交到github倉庫
附:我的倉庫地址我的項目github:
第4步(使用Azure Devops的Pipelines構(gòu)建CI管道)
回到我們在第2步的頁面
點擊進入azure-devops項目, 選擇pipelines新建一個管道
(注意: 對于新的Azure DevOps帳戶踏幻,這里會自動帶你進入使用YAML構(gòu)建管道體驗,我們要提前在 點擊右上角頭像|Preview features|New YAML pipeline creation experience關(guān)閉這個選項)
到此我們的Springboot項目已經(jīng)通過CI管道自動集成了,接下來就是準備發(fā)布Releases工作了:
1.配置devops的連接服務通過ssh連接到我們的云服務器準備工作好了后
添加遠程運行jar包的命令來運行我們的項目(注意由于ssh遠程直接運行命令可能會讀取不到云主機的環(huán)境變量配置,導致提示java命令未找到,所以這里寫成全路徑來執(zhí)行jar文件), 我們的第一條命令:
kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }')
是表示查詢8080端口的進程id并kill停止它, 以免在發(fā)布新版本的時候提示端口被占用, 第二條命令:
nohup /usr/java/jdk1.8.0_201/bin/java -jar /tmp/azure-demo-0.0.1-SNAPSHOT.jar > log.file 2>&1 &
表示后臺啟動運行jar文件,并把日志打印到log.file文件中
最后點擊Save保存工作
到此我們的CD持續(xù)部署的管道就搭好了, 我們?nèi)ハ仁謩影l(fā)布一次:
點擊左邊Releases選項,點擊Create a release,點擊Create
接下來我們將在本地修改代碼并提交一次到github,以驗證我們的自動集成部署是否已經(jīng)成功
1.在本地修改,并提交push到github倉庫:到此,本文章就結(jié)束了,我們實現(xiàn)了在本地更新代碼,修改成一個穩(wěn)定的版本后,直接push到github的主分支,我們就可以回家睡覺了,而我們此次版本的修改會通過Azure Devops自動集成發(fā)布,這樣所有連接我們的服務的請求就都有了這次新的更新.
(我在寫演示的過程中,并不是一次成功的,我重新修改任務命令發(fā)布了幾次,所以發(fā)布的版本號來到了18,但本文章是最后我完全可以一次運行成功的截圖版本,所以在發(fā)布的版本號上有點不同,不過不影響大致流程)
(演示中我們關(guān)閉了使用YAML文件來構(gòu)建管道,其實YAML文件就是用來描述我們每個自動集成部署階段要執(zhí)行的任務戳杀,和我們手動設(shè)置管道任務一樣该面,具體使用YAML構(gòu)建可以看這里官方文檔)
其實Azure Devops的玩法還可以有許多種,它支持很多語言框架和容器的自動集成部署,比如ASP.NET, Node.js的NPM, Python, Docker容器等,并且可定制性高,各位大佬可以根據(jù)官方文檔自行摸索,并且結(jié)合MicroSoft 的Azure云計算服務平臺還有更豐富的玩法,不過由于Azure的使用有點復雜,這篇文章中我也就沒有用到Azure的服務(主要是注冊Azure的國際賬戶需要VISA信用卡,我沒有,而且我也不會玩Azure哈哈哈),而是使用了最簡單的云服務ssh連接來完成自動集成部署.
最后謝謝閱讀