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

基于Jenkins持續集成部署研究與實現

2021-12-17 09:08:38程寧戴遠泉
電子制作 2021年22期

程寧,戴遠泉

(湖北輕工職業技術學院,湖北武漢,430070)

0 引言

近年來,隨著軟件開發復雜度的不斷提高,傳統的瀑布式開發流程存在著明顯的不足。在項目開發過程中,由于存在需求層面的不斷變更,導致采用瀑布式開發流程既無法控制業務需求的變更,又抑制了反饋的周期閾值,隨之而來的可能項目開發延期甚至于失敗。因此,如何更好地協同工作、縮短軟件開發周期并提高軟件產品開發的質量,已經成為軟件從業人員不可回避的問題。

持續集成正是針對這一類問題的一種軟件開發實踐。持續集成鼓勵團隊開發成員經常集成編譯、構件、部署、測試和發布工作,并且每次集成都是自動化實現的。通過持續集成的引入,降低了軟件開發風險,提高代碼質量,使項目管理人員能更好地了解項目的開發進度,從而使團隊能夠更快地開發內聚的軟件。

1 持續集成的概述

■1.1 持續集成定義

持續集成(Continuous Integration,英文縮寫CI),是軟件開發流程中一系列的最佳實踐,指在開發階段對項目進行持續性自動化編譯、測試,以達到控制代碼質量的手段。持續集成可以理解是一種系統研發的迭代,通過一次又一次將代碼上傳到代碼倉庫、進行集成測試和功能測試,從而實現項目與產品的迭代。由于整個過程是一個全自動的代碼編譯、發布、測試的過程,從而可以使問題盡早暴露和解決。通過運用持續集成技術,可使系統能時刻處于可工作狀態,在任意時間都可以發布和部署。

持續集成包含自動化構建和自動化測試。自動化構建可以在持續的基礎上收到反饋并進行改進,有利于減少開發的重復過程,縮短開發周期和降低費用和工作量。自動化測試解決了傳統手工測試中存在的高重復性測試工作,能更加充分的測試系統中的各個單元,其對單元測試較為依賴。測試覆蓋率越高,單元測試越準確,越能體現持續集成的效果。因此,持續集成能提高交付效率和交付軟件的質量。

■1.2 持續集成系統的組成

一個完整的持續集成系統必須包括以下幾項。

(1)一個自動構建過程,包括自動編譯、分發、部署和測試等。

(2)一個代碼存儲庫,即需要版本控制軟件來保障代碼的可維護性,同時,其為構建過程的素材庫。

(3)一個持續集成服務器。Jenkins就是一款配置簡單且使用方便的持續集成服務器。

■1.3 持續集成工作流程

實現持續集成需要用到版本控制軟件、構建工具和持續集成軟件等工具。其工作流程如下所述。

(1)當開發人員需要進行源代碼的版本更新時,通過版本控制軟件的賬號和密碼認證,以及對應在的代碼倉庫權限的判斷后,開發人員將更新的源代碼提交到遠程的代碼倉庫中。

(2)當持續集成服務器檢測到代碼變更后,會立即觸發構建過程,從遠程的代碼倉庫中拉取源代碼,然后構建工具對源代碼進行編譯代碼、運行單元測試、執行代碼分析,打包成二進制包等工作。

(3)構建工作完成后,會觸發自動化測試工具執行自動化測試,通過自動化測試來驗證集成是否成功。

(4)測試完成和評審通過后,從其部署到生產環境中。

2 持續集成方案應用案例

■2.1 案例設計

本案例以Docker作為基礎設施環境,整合Git+Maven +Jenkins實現構建持續集成的解決方案。在本方案中,Git作為版本管理服務器,Maven作為項目管理工具、Jenkins作為持續集成服務器。

(1)Docker:Docker作為一個開源的應用容器引擎,可以將開發人員的代碼運行環境、配置文件共同打包到一個可移值的容器中,可隨時發布到任意機器上,由于容器完全采用沙箱機制,利于開發者和運維人員進行使用。

(2)GitHub:GitHub是面向開源及私有軟件項目的托管平臺,具有基于Web服務的管理界面,通過管理界面可以為開發者和管理者提供代碼倉庫服務,以實現創建、訪問、上傳、更新服務。

(3)Maven:Maven是目前較流行的軟件工程管理工具。基于項目對象模型(POM)的理念,可以從項目的各個環節進行管理和控制,主要服務于基于Java平臺的項目構建、依賴管理和項目信息管理。

(4)Jenkins:Jenkins是一個開源的、功能強大可擴展的持續集成工具,是基于Java開發的可視化WEB平臺,對于允許持續集成和持續交付的項目而方,無論采用何種平臺,充分能處理任意類型程序的構建或持續集成。

(5)Docker倉庫:Docker倉庫是用來集中存儲Docker鏡像的地方。Docker鏡像是Docker容器運行的基礎,可以理解為Docker鏡像是靜態的定義,而Docker容器是鏡像運行的實例。

■2.2 案例實現

(1)安裝基礎環境

Docker內核基于Linux,因此本案例使用Centos7作為宿主機操作系統,Docker的版本選擇20.10.6。

(2)安裝JDK+Maven

下載的JDK和Maven安裝包,并進行安裝。安裝完成后,通過修改/etc/profile文件,添加如下環境變量后,重啟系統或利用source /etc/profile命令使配置生效。

export JAVA_HOME=/usr/local/jdk/jdk1.8.0_162

export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/

export PATH=$PATH:$JAVA_HOME/bin

export M2_HOME=/usr/local/maven3

export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin

(3)配置GitHub

①拉取gogs和mysql鏡像,利用獲取的鏡像創建容器,可在拉取鏡像前通過配置鏡像加速器提高拉取速度。

# docker pull gogs/gogs:latest

# docker pull mysql:latest

# docker run -d -p 3000:3000 --name mygogs gogs/gogs:latest

# docker run -d -p 13306:3306 -e MYSQL_ROOT_PASSWORD=000000 --name mygogs-mysql mysql:latest

②進入mygogs-mysql容器,并建立gogs數據庫。

# docker exec -it mygogs-mysql /bin/bash

root@01370d705e5c:/# mysql -uroot -p000000

mysql> create database gogs; //建立gogs數據庫

③配置Gogs服務,并新增倉庫名為hbliti的倉庫,如圖1所示。

圖1 hbliti倉庫

④執行如下命令設置GitHub。

# git clone http://192.168.5.102:3000/hbliti/hbliti.git

(4)Jenkins配置

①在利用Jenkins部署過程中,需要安裝相應的插件,可進入“插件管理”,依次安裝 “docker-build-step”、“Maven Integration”和“Deploy to container”插件。

②新建Maven項目,由于項目利用Git完成代碼托管,利用Jenkins實現代碼版本控制,因此需要在Jenkins的Git插件中設定代碼倉庫的賬號和部署分支。并設置SCM,SCM可設定輪詢時間,包括定時輪詢和循環輪詢,本例設置為“H/1 * * * *”,如圖2所示。

圖2 配置構建觸發器

說明:“H/1 * * * *”表示一分鐘構建一次,各參數代表的含義如下。

n 第1個“*”表示分鐘,取值為0~59。

n 第2個“*”表示小時,取值為0~23。

n 第3個“*”表示一個月的第幾天,取值為1~31。

n 第4個“*”表示第幾月,取值為1~12。

n 第5個“*”表示一周中的第幾天,取值為0~7,其中,0和7代表的都是周日。

③通過“構建環境”選項卡,修改“Build”欄目信息,配置構建環境,如圖3所示。其中pom.xml是Maven項目的核心構建文件,構建時要指明文件的路徑。

圖3 配置構建環境

④將Maven項目上傳到Git倉庫中,上傳時需通過git的賬號和密碼的認證。代碼如下:

# git init

# git add test-maven

# git config --global user.email “hbliti@qq.com”

# git config --global user.name “hbliti”

# git commit -m “first hbliti commit”

# git remote add origin http://192.168.51.100:3000/ hbliti/hbliti.git

# git push -u origin master

⑤通過上述操作,可以實現當Git倉庫中部署分支的代碼發生更新變化后,Jenkins會自動對新代碼進行項目構建。構建完成后,為區分構建版本,可利用Docker tag命令增加版本號信息重命名鏡像,利用docker push命令將鏡像上傳至鏡像倉庫中。

3 結語

本文通過介紹傳統的瀑布式開發在當前軟件開發中存在問題,對持續集成及持續集成的工作進行介紹,并設計了一種以Docker作為基礎設施環境,整合Git+Maven+ Jenkins實現構建持續集成的解決方案并加以實現。希望本文的研究結果能為相關軟件開發團隊引入持續集成帶來實際的借鑒價值。

主站蜘蛛池模板: 免费jizz在线播放| 综合亚洲网| 在线观看精品自拍视频| 亚洲综合色婷婷中文字幕| 国产手机在线小视频免费观看| 97色伦色在线综合视频| 日韩在线永久免费播放| 国产女人18毛片水真多1| 国产精品视屏| 亚洲swag精品自拍一区| 高清精品美女在线播放| 国产主播福利在线观看| 国产精品原创不卡在线| 国产亚洲美日韩AV中文字幕无码成人 | 人妻无码中文字幕一区二区三区| 狠狠色成人综合首页| 欧美高清国产| 亚洲欧美自拍中文| 欧美福利在线观看| 国产成人亚洲欧美激情| 中文字幕在线日本| 人妻21p大胆| 99re这里只有国产中文精品国产精品| 色窝窝免费一区二区三区| 99视频在线免费看| 国产特级毛片| 中文国产成人精品久久| 亚洲无码在线午夜电影| 青青青国产视频| 亚洲视频免| 欧美精品亚洲日韩a| 日韩人妻精品一区| 国产成人欧美| 亚洲二区视频| 99这里精品| 国产自在线播放| 99999久久久久久亚洲| 成人亚洲视频| 日韩国产黄色网站| 亚洲一欧洲中文字幕在线| 青青草原偷拍视频| 一级毛片免费的| 久久综合丝袜长腿丝袜| 免费又黄又爽又猛大片午夜| 日韩精品少妇无码受不了| 亚洲欧美成人综合| 亚洲首页在线观看| 午夜性刺激在线观看免费| 免费无码AV片在线观看国产| 99久久精品免费看国产电影| 亚洲第一极品精品无码| 搞黄网站免费观看| 亚洲综合一区国产精品| 四虎国产精品永久在线网址| 欧美激情首页| 精品成人一区二区三区电影 | 欧美全免费aaaaaa特黄在线| 色偷偷综合网| 麻豆国产在线观看一区二区| jizz在线免费播放| 97se亚洲综合在线| 国产成人精品综合| 国产高清在线精品一区二区三区| 亚洲AV无码乱码在线观看代蜜桃| 国产91在线免费视频| 一级福利视频| 91在线中文| 2021国产乱人伦在线播放| 91探花国产综合在线精品| 日韩欧美中文| 色婷婷国产精品视频| 99久久这里只精品麻豆| 国产日韩欧美中文| 又猛又黄又爽无遮挡的视频网站| 久久96热在精品国产高清| 19国产精品麻豆免费观看| 97人人模人人爽人人喊小说| 成人亚洲国产| 青青操国产| 无码'专区第一页| 日本影院一区| 成人综合网址|