• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Jenkins持續(xù)集成部署研究與實(shí)現(xiàn)

      2021-12-17 09:08:38程寧戴遠(yuǎn)泉
      電子制作 2021年22期
      關(guān)鍵詞:源代碼插件鏡像

      程寧,戴遠(yuǎn)泉

      (湖北輕工職業(yè)技術(shù)學(xué)院,湖北武漢,430070)

      0 引言

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

      持續(xù)集成正是針對(duì)這一類問題的一種軟件開發(fā)實(shí)踐。持續(xù)集成鼓勵(lì)團(tuán)隊(duì)開發(fā)成員經(jīng)常集成編譯、構(gòu)件、部署、測(cè)試和發(fā)布工作,并且每次集成都是自動(dòng)化實(shí)現(xiàn)的。通過持續(xù)集成的引入,降低了軟件開發(fā)風(fēng)險(xiǎn),提高代碼質(zhì)量,使項(xiàng)目管理人員能更好地了解項(xiàng)目的開發(fā)進(jìn)度,從而使團(tuán)隊(duì)能夠更快地開發(fā)內(nèi)聚的軟件。

      1 持續(xù)集成的概述

      ■1.1 持續(xù)集成定義

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

      持續(xù)集成包含自動(dòng)化構(gòu)建和自動(dòng)化測(cè)試。自動(dòng)化構(gòu)建可以在持續(xù)的基礎(chǔ)上收到反饋并進(jìn)行改進(jìn),有利于減少開發(fā)的重復(fù)過程,縮短開發(fā)周期和降低費(fèi)用和工作量。自動(dòng)化測(cè)試解決了傳統(tǒng)手工測(cè)試中存在的高重復(fù)性測(cè)試工作,能更加充分的測(cè)試系統(tǒng)中的各個(gè)單元,其對(duì)單元測(cè)試較為依賴。測(cè)試覆蓋率越高,單元測(cè)試越準(zhǔn)確,越能體現(xiàn)持續(xù)集成的效果。因此,持續(xù)集成能提高交付效率和交付軟件的質(zhì)量。

      ■1.2 持續(xù)集成系統(tǒng)的組成

      一個(gè)完整的持續(xù)集成系統(tǒng)必須包括以下幾項(xiàng)。

      (1)一個(gè)自動(dòng)構(gòu)建過程,包括自動(dòng)編譯、分發(fā)、部署和測(cè)試等。

      (2)一個(gè)代碼存儲(chǔ)庫,即需要版本控制軟件來保障代碼的可維護(hù)性,同時(shí),其為構(gòu)建過程的素材庫。

      (3)一個(gè)持續(xù)集成服務(wù)器。Jenkins就是一款配置簡(jiǎn)單且使用方便的持續(xù)集成服務(wù)器。

      ■1.3 持續(xù)集成工作流程

      實(shí)現(xiàn)持續(xù)集成需要用到版本控制軟件、構(gòu)建工具和持續(xù)集成軟件等工具。其工作流程如下所述。

      (1)當(dāng)開發(fā)人員需要進(jìn)行源代碼的版本更新時(shí),通過版本控制軟件的賬號(hào)和密碼認(rèn)證,以及對(duì)應(yīng)在的代碼倉庫權(quán)限的判斷后,開發(fā)人員將更新的源代碼提交到遠(yuǎn)程的代碼倉庫中。

      (2)當(dāng)持續(xù)集成服務(wù)器檢測(cè)到代碼變更后,會(huì)立即觸發(fā)構(gòu)建過程,從遠(yuǎn)程的代碼倉庫中拉取源代碼,然后構(gòu)建工具對(duì)源代碼進(jìn)行編譯代碼、運(yùn)行單元測(cè)試、執(zhí)行代碼分析,打包成二進(jìn)制包等工作。

      (3)構(gòu)建工作完成后,會(huì)觸發(fā)自動(dòng)化測(cè)試工具執(zhí)行自動(dòng)化測(cè)試,通過自動(dòng)化測(cè)試來驗(yàn)證集成是否成功。

      (4)測(cè)試完成和評(píng)審?fù)ㄟ^后,從其部署到生產(chǎn)環(huán)境中。

      2 持續(xù)集成方案應(yīng)用案例

      ■2.1 案例設(shè)計(jì)

      本案例以Docker作為基礎(chǔ)設(shè)施環(huán)境,整合Git+Maven +Jenkins實(shí)現(xiàn)構(gòu)建持續(xù)集成的解決方案。在本方案中,Git作為版本管理服務(wù)器,Maven作為項(xiàng)目管理工具、Jenkins作為持續(xù)集成服務(wù)器。

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

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

      (3)Maven:Maven是目前較流行的軟件工程管理工具?;陧?xiàng)目對(duì)象模型(POM)的理念,可以從項(xiàng)目的各個(gè)環(huán)節(jié)進(jìn)行管理和控制,主要服務(wù)于基于Java平臺(tái)的項(xiàng)目構(gòu)建、依賴管理和項(xiàng)目信息管理。

      (4)Jenkins:Jenkins是一個(gè)開源的、功能強(qiáng)大可擴(kuò)展的持續(xù)集成工具,是基于Java開發(fā)的可視化WEB平臺(tái),對(duì)于允許持續(xù)集成和持續(xù)交付的項(xiàng)目而方,無論采用何種平臺(tái),充分能處理任意類型程序的構(gòu)建或持續(xù)集成。

      (5)Docker倉庫:Docker倉庫是用來集中存儲(chǔ)Docker鏡像的地方。Docker鏡像是Docker容器運(yùn)行的基礎(chǔ),可以理解為Docker鏡像是靜態(tài)的定義,而Docker容器是鏡像運(yùn)行的實(shí)例。

      ■2.2 案例實(shí)現(xiàn)

      (1)安裝基礎(chǔ)環(huán)境

      Docker內(nèi)核基于Linux,因此本案例使用Centos7作為宿主機(jī)操作系統(tǒng),Docker的版本選擇20.10.6。

      (2)安裝JDK+Maven

      下載的JDK和Maven安裝包,并進(jìn)行安裝。安裝完成后,通過修改/etc/profile文件,添加如下環(huán)境變量后,重啟系統(tǒng)或利用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鏡像,利用獲取的鏡像創(chuàng)建容器,可在拉取鏡像前通過配置鏡像加速器提高拉取速度。

      # 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

      ②進(jìn)入mygogs-mysql容器,并建立gogs數(shù)據(jù)庫。

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

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

      mysql> create database gogs; //建立gogs數(shù)據(jù)庫

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

      圖1 hbliti倉庫

      ④執(zhí)行如下命令設(shè)置GitHub。

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

      (4)Jenkins配置

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

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

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

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

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

      n 第2個(gè)“*”表示小時(shí),取值為0~23。

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

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

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

      ③通過“構(gòu)建環(huán)境”選項(xiàng)卡,修改“Build”欄目信息,配置構(gòu)建環(huán)境,如圖3所示。其中pom.xml是Maven項(xiàng)目的核心構(gòu)建文件,構(gòu)建時(shí)要指明文件的路徑。

      圖3 配置構(gòu)建環(huán)境

      ④將Maven項(xiàng)目上傳到Git倉庫中,上傳時(shí)需通過git的賬號(hào)和密碼的認(rèn)證。代碼如下:

      # 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

      ⑤通過上述操作,可以實(shí)現(xiàn)當(dāng)Git倉庫中部署分支的代碼發(fā)生更新變化后,Jenkins會(huì)自動(dòng)對(duì)新代碼進(jìn)行項(xiàng)目構(gòu)建。構(gòu)建完成后,為區(qū)分構(gòu)建版本,可利用Docker tag命令增加版本號(hào)信息重命名鏡像,利用docker push命令將鏡像上傳至鏡像倉庫中。

      3 結(jié)語

      本文通過介紹傳統(tǒng)的瀑布式開發(fā)在當(dāng)前軟件開發(fā)中存在問題,對(duì)持續(xù)集成及持續(xù)集成的工作進(jìn)行介紹,并設(shè)計(jì)了一種以Docker作為基礎(chǔ)設(shè)施環(huán)境,整合Git+Maven+ Jenkins實(shí)現(xiàn)構(gòu)建持續(xù)集成的解決方案并加以實(shí)現(xiàn)。希望本文的研究結(jié)果能為相關(guān)軟件開發(fā)團(tuán)隊(duì)引入持續(xù)集成帶來實(shí)際的借鑒價(jià)值。

      猜你喜歡
      源代碼插件鏡像
      人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
      基于TXL的源代碼插樁技術(shù)研究
      鏡像
      自編插件完善App Inventor與樂高機(jī)器人通信
      電子制作(2019年22期)2020-01-14 03:16:34
      鏡像
      小康(2018年23期)2018-08-23 06:18:52
      軟件源代碼非公知性司法鑒定方法探析
      揭秘龍湖產(chǎn)品“源代碼”
      MapWindowGIS插件機(jī)制及應(yīng)用
      鏡像
      小康(2015年4期)2015-03-31 14:57:40
      鏡像
      小康(2015年6期)2015-03-26 14:44:27
      肥西县| 西宁市| 安化县| 怀宁县| 九台市| 湘潭市| 丹东市| 福海县| 敖汉旗| 神农架林区| 出国| 伊宁县| 衡南县| 临西县| 亳州市| 兰西县| 玉田县| 渝中区| 通江县| 普定县| 沁阳市| 石嘴山市| 左权县| 邳州市| 那坡县| 中宁县| 偃师市| 隆子县| 湖南省| 耿马| 清水河县| 天长市| 南召县| 龙州县| 双峰县| 阳新县| 安图县| 禄丰县| 汝阳县| 定西市| 喀喇沁旗|