国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

DevOps在軟件開發(fā)項目中的實踐

2019-12-16 01:48:12蔡建軍任女爾魏金津
電腦知識與技術(shù) 2019年29期
關(guān)鍵詞:開發(fā)人員鏡像代碼

蔡建軍 任女爾 魏金津

摘要:手工式的編譯、打包、部署已經(jīng)不能滿足數(shù)據(jù)資源中心軟件項目開發(fā)的需求,所以引入DevOps來縮短軟件開發(fā)交付時間,提高交付質(zhì)量,協(xié)調(diào)開發(fā)、運維人員的工作。持續(xù)集成工具Jenkins可以自動化的從sVN/Git上下載代碼、編譯、打包、部署,這樣省去了很多重復(fù)性的工作,提高了效率。Jenkins還可以將應(yīng)用及其運行環(huán)境封裝在Docker鏡像中,使軟件交付變得更加簡潔。集成質(zhì)量管控工具sonar,保證提高交付過程中的質(zhì)量。

關(guān)鍵詞:持續(xù)集成;JenkinsDocker

中圖分類號:G301.6 文獻標識碼:A

文章編號:1009-3044(2019)29-0242-03

1概述

數(shù)據(jù)資源中心現(xiàn)有的軟件項目開發(fā)中,開發(fā)人員從SVN或GitLab上下載最新代碼,本地編譯、部署、測試,然后手動通過命令行腳本將本地打好的jar或war包手動上傳至測試或正式服務(wù)器,執(zhí)行iava-jar或啟動Web服務(wù)完成部署。項目開發(fā)后期因為需求變更頻繁,Bug修復(fù)極多,需要頻繁執(zhí)行這樣重復(fù)性的活動。領(lǐng)導(dǎo)與客戶也希望能隨時看到項目最新的功能與效果。

正式環(huán)境部署的項目,經(jīng)常需要升級,由于客戶不希望升級時重啟Tomcat,開發(fā)人員往往直接將編譯完的增量class和jsp文件直接拷人Tomcat路徑。這樣的操作是很混亂的,也會經(jīng)常性產(chǎn)生很多錯誤。

無論是開發(fā)還是線上項目升級,一個重大的呼聲是減少部署時間以及部署過程中發(fā)生的錯誤,將最新功能及時并且高質(zhì)量地展現(xiàn)在領(lǐng)導(dǎo)和客戶眼前,所以我們引入了DevOps。將自動化貫穿于從構(gòu)建、測試、打包到部署,以期實現(xiàn)持續(xù)交付與部署,提高軟件項目開發(fā)質(zhì)量。

微服務(wù)項目會開發(fā)有很多以jar包形式存在的服務(wù),每個jar包會部署在相同或不同的服務(wù)器上。每個服務(wù)也會有自己的環(huán)境,如果要安裝這些環(huán)境,是更加煩瑣的事情。所以我們引入Docker去封裝服務(wù)及其運行環(huán)境,將封裝后的產(chǎn)物作為交付物。

為了在持續(xù)交付過程中能保證質(zhì)量,我們使用代碼質(zhì)量管控工具Sonar。

2DevOps介紹

2.1為什么要DevOps

DevOps(Development和Operations的組合詞)是一套實踐方法,在保證高質(zhì)量的前提下縮短系統(tǒng)變更從提交到部署至生產(chǎn)環(huán)境的時間,以IT自動化以及持續(xù)集成(CI)、持續(xù)部署(CD)為基礎(chǔ),基于自動的持續(xù)的軟件交付流程,使編譯、打包、發(fā)布、測試等行為能夠更高效,更穩(wěn)定。

很多情況下,項目開發(fā)人員在自己電腦上正常運行的程序,部署到正式服務(wù)器上卻會出現(xiàn)很多問題,這是由于軟件開發(fā)環(huán)境與正式運行環(huán)境在配置、環(huán)境上存在差異,所以需要確保構(gòu)建產(chǎn)物一直處在運行環(huán)境當中。

開發(fā)人員喜歡頻繁的發(fā)布新代碼,運維人員卻認為系統(tǒng)變更是充滿風(fēng)險的,要求穩(wěn)定可靠。部署對系統(tǒng)的變更,質(zhì)量很重要,保證上生產(chǎn)前通過全部測試。所以DevOps是軟件開發(fā)、運維、質(zhì)量保證之間的高度協(xié)同,從而在完成頻繁部署的同時,提高生產(chǎn)環(huán)境的可靠性、穩(wěn)定性和安全性。

Jenkins與Docker都是在背后支持著DevOps的工具。

2.2為什么要Jenkins

持續(xù)集成(Continous Integration)是個簡單重復(fù)勞動,由人來操作費時費力,使用自動化集成技術(shù)能夠快速地構(gòu)建代碼,自動地進行測試,從而提高代碼的效率和質(zhì)量,節(jié)約大量的人力。

開發(fā)人員提交代碼到Git,自動進行Maven構(gòu)建,部署或是打入Docker容器后發(fā)布,這一系列自動化過程需要一名協(xié)調(diào)者,Jenkin就是這名協(xié)調(diào)者。

Jenkins是一個開源的持續(xù)集成軟件,擴展性強,可以和大部分軟件相結(jié)合,比如Maven,Git,Docker。實現(xiàn)無須太多人工干預(yù),減少重復(fù)工作,節(jié)省時間,保障在任意時間點都可以自動編譯、部署、測試和發(fā)布軟件。

持續(xù)集成的目標是為了任何時候都能從Jenkins中獲取最近構(gòu)建成功的程序包,并可隨時發(fā)布到服務(wù)器上。如果能把程序包封裝到Docker容器中,自動的發(fā)布到服務(wù)器上,將更大程度上提高交付效率。

2.3為什么要Docker

數(shù)據(jù)資源中心不同的應(yīng)用會依賴一個不同的運行環(huán)境,比如JDK版本不同,有的開發(fā)語言也不一樣,服務(wù)器環(huán)境也有限制。運維人員要為每一個應(yīng)用都提供一個運行環(huán)境這是很麻煩,很耗費時間的事情。所以我們有必要將服務(wù)及其運行環(huán)境封裝在Docker鏡像中,需要發(fā)布服務(wù)只需根據(jù)鏡像啟動容器即可,交付方式由應(yīng)有程序轉(zhuǎn)為Docker鏡像,更加簡潔方便。

Docker是一個開源的容器引擎,Docker容器是與DevOps密切相關(guān)的關(guān)鍵技術(shù)。Jenkins可以結(jié)合Docker實現(xiàn)將服務(wù)鏡像自動化發(fā)布。3使用Jenkins實現(xiàn)自動化構(gòu)建部署

對于傳統(tǒng)的JavaWeb應(yīng)用而言,構(gòu)建所生成的是war包,我們可將此war包部署到Tomcat容器中運行。對于sDringBoot應(yīng)用而言,構(gòu)建所生成的是jar包,此iar包還包含了嵌入式的Tomcat容器,可以直接運行。本節(jié)我們將通過Jenkins自動部署Jar或War。

1)新建Jenkins任務(wù)

Maven項目選擇“構(gòu)建一個maven項目”,普通項目可以選擇“構(gòu)建一個自由風(fēng)格的軟件項目”。然后在源碼管理中配置從SVN或Git上下載代碼。

2)構(gòu)建觸發(fā)器

選擇Build periodically,我們可以指定Jenkins在某一時間點定時執(zhí)行任務(wù),為了減少服務(wù)器壓力,一般選擇在夜里。

3)執(zhí)行構(gòu)建

對于Maven項目,只需在Build中執(zhí)行maven命令即可,而對于傳統(tǒng)web項目,可以通過InvokeAnt運行Ant腳本構(gòu)建。

4)開啟免密登錄

通常情況下,應(yīng)用的部署服務(wù)器與Jenkins服務(wù)器不是同一個,則需要配置兩臺服務(wù)器之間的免密碼登錄,允許Jenkins通過SSH服務(wù)登錄到遠程機器執(zhí)行腳本。具體方法這里不再贅述。

5)遠程部署到Tomcat

要將編譯好的war包發(fā)布到tomcat,首先需要安裝插件“Deploy to container Plugin”,在構(gòu)建后操作選擇“Deploy war/earto a container”,選擇container為tomcat,然后如下圖配置tomcat的ip,登錄用戶名、密碼,需部署的war路徑等。

這里的用戶名和密碼必須和遠程tomcat的croft目錄下的tomcat-user.xml中保持一致,且具有管理員權(quán)限。

6)遠程執(zhí)行部署腳本

對于springBoot項目,內(nèi)嵌tomcat,打出的jar包可以通過java-jar執(zhí)行。在Post Steps選擇send build artifacts over SSH通過Jenkins ssh到目標服務(wù)器如下圖配置,BUILD_ID=DONT-KILLME是為了解決Jenkins殺死子進程的問題。

4Jenkins結(jié)合Docker實現(xiàn)自動化構(gòu)建部署

我們想讓上面Jenkins自動構(gòu)建并啟動Docker容器,這樣的流程就是:代碼在Git或SVN上,Jenkins下載代碼并調(diào)用Ma-yen執(zhí)行構(gòu)建,Jenkins再將構(gòu)建生成的程序包封裝到Docker鏡像中并啟動相應(yīng)的Docker容器,形成相應(yīng)的測試或生產(chǎn)環(huán)境。

4.1Docker的幾個概念

1)Dockerfile

Docker為我們提供的腳本文件,可以通過指令編寫鏡像的構(gòu)建腳本,使鏡像構(gòu)建自動化。

2)Docker Registry

可以在本地搭建一個鏡像注冊中心用來管理越來越多的鏡像。

4.2Jenkins發(fā)布Docker鏡像

Jenkins在構(gòu)建應(yīng)用程序時也可以生成Docker鏡像,并將此

6總結(jié)

DevOps的實施大大提高了數(shù)據(jù)資源中心軟件項目的交付速度與質(zhì)量,高效的、高質(zhì)量的、自動化的將最新功能最快速的、持續(xù)性的交付給客戶和領(lǐng)導(dǎo),協(xié)調(diào)開發(fā)、運維與測試人員的工作。持續(xù)集成工具Jenkins自動化的從Git或SVN上下載代碼,編譯、打包、部署,并可以設(shè)置任務(wù)自動執(zhí)行時間。Jenkins可以集成Sonar在持續(xù)交付過程中保證軟件的質(zhì)量,可以將軟件構(gòu)建產(chǎn)物與其運行環(huán)境發(fā)布成Docker鏡像,使交付變得更加簡潔。

猜你喜歡
開發(fā)人員鏡像代碼
鏡像
當代黨員(2020年20期)2020-11-06 04:17:52
Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
創(chuàng)世代碼
動漫星空(2018年11期)2018-10-26 02:24:02
創(chuàng)世代碼
動漫星空(2018年2期)2018-10-26 02:11:00
創(chuàng)世代碼
動漫星空(2018年9期)2018-10-26 01:16:48
創(chuàng)世代碼
動漫星空(2018年5期)2018-10-26 01:15:02
鏡像
小康(2018年23期)2018-08-23 06:18:52
讓W(xué)indows 10進入開發(fā)者模式
電腦迷(2015年12期)2015-04-29 23:22:51
后悔了?教你隱藏開發(fā)人員選項
電腦愛好者(2015年6期)2015-04-03 01:20:56
鏡像
小康(2015年4期)2015-03-31 14:57:40
龙陵县| 醴陵市| 安溪县| 青龙| 于田县| 高邑县| 德安县| 胶州市| 海兴县| 云安县| 宁德市| 铁岭市| 阳高县| 高清| 安义县| 仲巴县| 石门县| 沙田区| 澳门| 绥棱县| 裕民县| 淅川县| 驻马店市| 新兴县| 湘乡市| 仙游县| 武夷山市| 南皮县| 甘孜县| 孟州市| 泰来县| 策勒县| 汉寿县| 澳门| 东丰县| 东乌珠穆沁旗| 周宁县| 神木县| 东阳市| 丽江市| 错那县|