999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2019-12-16 01:48:12蔡建軍任女爾魏金津
電腦知識與技術(shù) 2019年29期
關(guān)鍵詞:環(huán)境

蔡建軍 任女爾 魏金津

摘要:手工式的編譯、打包、部署已經(jīng)不能滿足數(shù)據(jù)資源中心軟件項目開發(fā)的需求,所以引入DevOps來縮短軟件開發(fā)交付時間,提高交付質(zhì)量,協(xié)調(diào)開發(fā)、運維人員的工作。持續(xù)集成工具Jenkins可以自動化的從sVN/Git上下載代碼、編譯、打包、部署,這樣省去了很多重復性的工作,提高了效率。Jenkins還可以將應用及其運行環(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包手動上傳至測試或正式服務器,執(zhí)行iava-jar或啟動Web服務完成部署。項目開發(fā)后期因為需求變更頻繁,Bug修復極多,需要頻繁執(zhí)行這樣重復性的活動。領(lǐng)導與客戶也希望能隨時看到項目最新的功能與效果。

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

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

微服務項目會開發(fā)有很多以jar包形式存在的服務,每個jar包會部署在相同或不同的服務器上。每個服務也會有自己的環(huán)境,如果要安裝這些環(huán)境,是更加煩瑣的事情。所以我們引入Docker去封裝服務及其運行環(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ā)人員在自己電腦上正常運行的程序,部署到正式服務器上卻會出現(xiàn)很多問題,這是由于軟件開發(fā)環(huán)境與正式運行環(huán)境在配置、環(huán)境上存在差異,所以需要確保構(gòu)建產(chǎn)物一直處在運行環(huán)境當中。

開發(fā)人員喜歡頻繁的發(fā)布新代碼,運維人員卻認為系統(tǒ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)是個簡單重復勞動,由人來操作費時費力,使用自動化集成技術(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)無須太多人工干預,減少重復工作,節(jié)省時間,保障在任意時間點都可以自動編譯、部署、測試和發(fā)布軟件。

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

2.3為什么要Docker

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

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

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

1)新建Jenkins任務

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

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

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

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

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

4)開啟免密登錄

通常情況下,應用的部署服務器與Jenkins服務器不是同一個,則需要配置兩臺服務器之間的免密碼登錄,允許Jenkins通過SSH服務登錄到遠程機器執(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到目標服務器如下圖配置,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鏡像中并啟動相應的Docker容器,形成相應的測試或生產(chǎn)環(huán)境。

4.1Docker的幾個概念

1)Dockerfile

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

2)Docker Registry

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

4.2Jenkins發(fā)布Docker鏡像

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

6總結(jié)

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

猜你喜歡
環(huán)境
長期鍛煉創(chuàng)造體內(nèi)抑癌環(huán)境
一種用于自主學習的虛擬仿真環(huán)境
孕期遠離容易致畸的環(huán)境
不能改變環(huán)境,那就改變心境
環(huán)境與保護
環(huán)境
孕期遠離容易致畸的環(huán)境
高等院校環(huán)境類公選課的實踐和探討
掌握“三個三” 兜底環(huán)境信訪百分百
我國環(huán)境會計初探
中國商論(2016年33期)2016-03-01 01:59:38
主站蜘蛛池模板: 视频一区视频二区中文精品| 亚洲啪啪网| 欧美第一页在线| 国产手机在线小视频免费观看| 亚洲欧美精品日韩欧美| 国产成人亚洲精品蜜芽影院| www.亚洲一区二区三区| 久久午夜夜伦鲁鲁片无码免费| 国产又粗又猛又爽视频| 美女被躁出白浆视频播放| 亚洲色图欧美一区| 欧美中文字幕在线二区| 亚洲无码电影| 99热这里只有免费国产精品| 亚洲香蕉在线| 免费毛片网站在线观看| 爆乳熟妇一区二区三区| 精品久久久久久成人AV| 亚洲美女AV免费一区| 亚洲乱伦视频| 视频在线观看一区二区| 久久国产精品嫖妓| 在线看国产精品| h视频在线观看网站| 欧美日本中文| 伊人蕉久影院| 色综合日本| 97人人做人人爽香蕉精品| 国产欧美日韩va另类在线播放 | 国产原创自拍不卡第一页| 国产一级做美女做受视频| av手机版在线播放| 久久人人97超碰人人澡爱香蕉| 夜夜操天天摸| 最新国产高清在线| 伊人久久久久久久| 亚洲无码熟妇人妻AV在线| 亚洲人成影视在线观看| 成人综合久久综合| 欧美三级不卡在线观看视频| 成人综合久久综合| 亚洲va在线∨a天堂va欧美va| 日韩a在线观看免费观看| 国产免费网址| 国产精品亚洲一区二区三区在线观看| 国产高清毛片| 丝袜美女被出水视频一区| 最新亚洲人成无码网站欣赏网| 97亚洲色综久久精品| 97人人模人人爽人人喊小说| 日韩精品欧美国产在线| 国产自产视频一区二区三区| 欧美精品伊人久久| 中国一级特黄视频| 热九九精品| 欧洲欧美人成免费全部视频| 青草视频久久| 国产欧美在线观看视频| 永久免费精品视频| 国产一级无码不卡视频| 欧美激情一区二区三区成人| 免费a级毛片视频| 国产在线八区| 亚洲伊人电影| 手机在线看片不卡中文字幕| 亚洲狠狠婷婷综合久久久久| 中国一级毛片免费观看| 日韩色图区| 人妻无码AⅤ中文字| 国产精品极品美女自在线看免费一区二区| 国产9191精品免费观看| 亚洲欧美一区二区三区图片| 亚洲高清免费在线观看| 亚洲精品动漫在线观看| 五月天久久婷婷| 久久久久88色偷偷| 四虎永久在线精品国产免费| 精品久久香蕉国产线看观看gif| 欧美亚洲一二三区| 亚洲国产精品一区二区第一页免| 亚洲欧美自拍视频| 在线观看国产小视频|