国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付

這篇具有很好參考價值的文章主要介紹了【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一、Devops

1、什么是Devops

一個軟件的生命周期包括:需求分析階、設(shè)計(jì)、開發(fā)、測試、上線、維護(hù)、升級、廢棄。詳細(xì)如下:

  • 產(chǎn)品人員進(jìn)行需求分析
  • 設(shè)計(jì)人員進(jìn)行軟件架構(gòu)設(shè)計(jì)和模塊設(shè)計(jì)
  • 每個模塊的開發(fā)人員并行開發(fā),設(shè)計(jì)接口、進(jìn)行編碼,并進(jìn)行單元測試
  • 開發(fā)完畢,將代碼集成部署到測試服務(wù)器,測試人員進(jìn)行測試
  • 測試人員發(fā)現(xiàn)bug,提交bug、開發(fā)人員修改bug
  • bug修改完畢再次集成、測試
  • 測試完畢,項(xiàng)目上線
  • 運(yùn)維人員進(jìn)行安裝部署、培訓(xùn)
  • 用戶提出問題,返回給運(yùn)維人員
  • 運(yùn)維人員反饋給開發(fā)人員,開發(fā)人員進(jìn)行問題處理
  • 再次提交測試
  • 測試完畢再次部署升級

整個生命周期中有兩個核心階段:開發(fā)階段和維護(hù)階段 ? ? 提高開發(fā)階段、運(yùn)維階段的工作效率是企業(yè)在進(jìn)行軟件項(xiàng)目管理的重點(diǎn)。? ?Devops

【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付

DevOps(Development和Operations的組合詞),DevOps不是一種工具,也不是一個工作崗位,而是一種思想理念,它涵蓋開發(fā)、測試、運(yùn)維的整個過程。DevOps強(qiáng)調(diào)軟件開發(fā)人員與軟件測試、軟件運(yùn)維、質(zhì)量保障(QA)部門之間有效的溝通與協(xié)作,強(qiáng)調(diào)通過自動化的方法去管理軟件變更、軟件集成,使軟件從構(gòu)建到測試、發(fā)布更加快捷、可靠,最終按時交付軟件。

【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付

2、什么是CI/CD

關(guān)于Devops理念如何落地,對每個階段都開發(fā)出一大批工具,這些工具包含了開發(fā)、測試、運(yùn)維等各個階段。下圖是Devops工具集:

【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付

有了工具,接下來就是實(shí)施Devops的具體方案? ?CI/CD,其中:

  • CI:Continuous Intergration,即持續(xù)集成
  • CD:Continuous Delivery 和 Continuous Depolyment,即持續(xù)交付和持續(xù)部署
CI:持續(xù)集成

即團(tuán)隊(duì)成員需要頻繁的集成他們的工作(將開發(fā)分支合并到主分支),每次集成都通過自動化構(gòu)建(包括編譯、構(gòu)建、自動化測試)來驗(yàn)證,從而盡快地發(fā)現(xiàn)集成中的錯誤,讓產(chǎn)品可以快速迭代,同時還能保持高質(zhì)量

【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付

CD:持續(xù)交付

持續(xù)交付將集成后的代碼部署到類生產(chǎn)環(huán)境(測試、預(yù)發(fā)布環(huán)境),除了交付到類生產(chǎn)環(huán)境之外,還會執(zhí)行一些集成測試、API測試。持續(xù)交付強(qiáng)調(diào)的是“交付”,交付給測試、產(chǎn)品驗(yàn)收,不管怎么更新,軟件是隨時隨地可以交付的。

【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付

CD:持續(xù)部署

在持續(xù)交付的基礎(chǔ)上由開發(fā)人員或運(yùn)維人員自助式的定期向生產(chǎn)環(huán)境部署穩(wěn)定的構(gòu)建版本,持續(xù)部署的目標(biāo)是代碼在任何時刻都是可部署的,并可自動進(jìn)入到生產(chǎn)環(huán)境。

【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
以上三個過程環(huán)環(huán)相扣,每個過程都自動化執(zhí)行。

3、Devops方案參考

下圖是一種可行的CI/CD方案:

【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付

二、人工部署

1、項(xiàng)目打jar包

STEP1:項(xiàng)目打包

  • 在父工程pom文件中使用<modules>聚合各模塊
<!--聚合的好處是Maven自動識別依賴關(guān)系,如checkcode服務(wù)依賴base服務(wù),打包的時候則會先把base打包,再打包c(diǎn)heckcode-->
<modules>
    <module>../xuecheng-plus-base</module>
    <module>../xuecheng-plus-checkcode</module>
    <module>../xuecheng-plus-gateway</module>
    <module>../xuecheng-plus-auth</module>
    <module>../xuecheng-plus-content</module>
    <module>../xuecheng-plus-learning</module>
    <module>../xuecheng-plus-media</module>
    <module>../xuecheng-plus-orders</module>
    <module>../xuecheng-plus-message-sdk</module>
    <module>../xuecheng-plus-search</module>
    <module>../xuecheng-plus-system</module>
</modules>
<!--父工程中還有依賴版本的統(tǒng)一管理-->
  • 配置打包插件(在每個要打可執(zhí)行jar包的工程中配置該插件,否則直接執(zhí)行maven的package指令出來的jar包無法運(yùn)行。base這種工程就不用加了。)
<!--在需要打可執(zhí)行包的工程中配置spring-boot-maven-plugin插件
否則報 “jar中沒有主清單屬性” 
"Unable to access jarfile "-->
<build>
 <!--以后jar包的名字-->   
 <finalName>${project.artifactId}-${project.version}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

  • 插件安裝成功
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
# 功能說明
build-info: 生成項(xiàng)目的構(gòu)建信息文件 build-info.properties
repackage: 這個是默認(rèn) goal,在 mvn package 執(zhí)行之后,這個命令再次打包生成可執(zhí)行的 jar,同時將 mvn package 生成的 jar 重命名為 *.origin
run: 這個可以用來運(yùn)行 Spring Boot 應(yīng)用
start: 這個在 mvn integration-test 階段,進(jìn)行 Spring Boot 應(yīng)用生命周期的管理
stop: 這個在 mvn integration-test 階段,進(jìn)行 Spring Boot 應(yīng)用生命周期的管理

  • 在父工程執(zhí)行:clean install -DskipTests -f pom.xml 對所有工程進(jìn)行打包
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
package、install、deploy三者的區(qū)別:
package: 打包
install: 打包完以后拷貝到本地倉庫
deploy: 打包完后上傳到局域網(wǎng)的私服
# -DskipTests跳過測試
  • 等待打包成功,在target目錄下即可看到j(luò)ar包
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
  • 驗(yàn)證一下jar包是否正常,打開cmd:java -Dfile.encoding=utf-8 -jar xuecheng-plus-checkcode-0.0.1-SNAPSHOT.jar
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付

2、生成鏡像、創(chuàng)建容器

STEP2:部署到Linux

  • 在Linxu目錄下編寫DockerFile文件
FROM java:8u20
MAINTAINER docker_maven docker_maven@email.com
WORKDIR /ROOT
ADD xuecheng-plus-checkcode-0.0.1-SNAPSHOT.jar xuecheng-plus-checkcode.jar
CMD ["java", "-version"]
//對比啟動jar包的指令
ENTRYPOINT ["java", "-Dfile.encoding=utf-8","-jar", "xuecheng-plus-checkcode.jar"]
EXPOSE 63075


  • 將打好的jar包拷貝到該目錄
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
  • 執(zhí)行鏡像構(gòu)建指令docker build -t checkcode:1.0 .

指令中最后的. 即當(dāng)前目錄【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
報這個錯,是因?yàn)镈ockerfile文件被命名成了DockerFile,不想改名就-f指定一下
docker build -t checkcode:1.0 -f DockerFiler .

  • 構(gòu)建成功
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付

  • 根據(jù)鏡像啟動容器
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付

docker run --name checkcode -p 63075:63075 -idt checkcode:1.0

到此,Java工程,從代碼到j(luò)ar包,再到鏡像,再到Docker容器部署到Linux上的整個過程,手動完成了!

此時,請求虛擬機(jī)IP:63075/checkcode/pic即可
docker logs -f 容器ID查看日志

三、自動化部署

接下來使用Jenkins來完成CI/CD:

【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付

  • 代碼使用git托管
  • 在jenkins創(chuàng)建任務(wù),從Git拉取代碼
  • 拉取代碼后進(jìn)行自動構(gòu)建
  • 將代碼打成鏡像包上傳到docker私服
  • 自動創(chuàng)建容器、啟動容器
  • 當(dāng)有代碼push到git實(shí)現(xiàn)自動構(gòu)建

1、代碼提交到git

git commit
git push

【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付

2、修改pom.xml文件

添加docker-maven-plugin插件實(shí)現(xiàn)將springboot工程創(chuàng)建鏡像。在要部署到容器的每個微服務(wù)中添加以下插件:文章來源地址http://www.zghlxwxcb.cn/news/detail-447064.html

<build>

<!--生成可執(zhí)行的jar包-->    
<finalName>${project.artifactId}-${project.version}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!--創(chuàng)建鏡像,上傳鏡像-->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.2.2</version>
            <configuration>
                <!--修改imageName節(jié)點(diǎn)的內(nèi)容,改為私有倉庫地址和端口,再加上鏡像id和 TAG,我們要直接傳到私服-->
                <!--配置最后生成的鏡像名,docker images里的,我們這邊取項(xiàng)目名:版本-->
                <!--<imageName>${project.artifactId}:${project.version}</imageName>-->
                <imageName>192.168.101.65:5000/${project.artifactId}:${project.version}</imageName>
                <!--也可以通過以下方式定義image的tag信息。 -->
                <!-- <imageTags>
                     <imageTag>${project.version}</imageTag>
                     &lt;!&ndash;build 時強(qiáng)制覆蓋 tag,配合 imageTags 使用&ndash;&gt;
                     <forceTags>true</forceTags>
                     &lt;!&ndash;build 完成后,push 指定 tag 的鏡像,配合 imageTags 使用&ndash;&gt;
                     <pushImageTag>true</pushImageTag>
                 </imageTags>-->
                <baseImage>java:8u20</baseImage>
                <maintainer>docker_maven docker_maven@email.com</maintainer>
                <workdir>/root</workdir>
                <cmd>["java", "-version"]</cmd>
                <!--來指明Dockerfile文件的所在目錄,如果配置了dockerDirectory則忽略baseImage,maintainer等配置-->
                <!--<dockerDirectory>./</dockerDirectory>-->
                <!--2375是docker的遠(yuǎn)程端口,插件生成鏡像時連接docker,這里需要指定docker遠(yuǎn)程端口-->
                <dockerHost>http://192.168.101.65:2375</dockerHost>
                <!--入口點(diǎn),project.build.finalName就是project標(biāo)簽下的build標(biāo)簽下 的filename標(biāo)簽內(nèi)容,testDocker-->
                <!--相當(dāng)于啟動容器后,會自動執(zhí)行java -jar ...-->
                <entryPoint>["java", "-Dfile.encoding=utf-8","-jar", "/root/${project.build.finalName}.jar"]</entryPoint>
                <!--是否推送到docker私有倉庫,舊版本插件要配置maven的settings文件。 -->
                <pushImage>true</pushImage>
                <registryUrl>192.168.101.65:5000</registryUrl>  <!-- 這里是復(fù)制 jar 包到 docker 容器指定目錄配置 -->
                <resources>
                    <resource>
                        <targetPath>/root</targetPath>
                        <directory>${project.build.directory}</directory>
                        <!--把哪個文件上傳到docker,相當(dāng)于Dockerfile里的add app.jar /-->
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>
    </plugins>
</build>

  • 在Jenkins源碼管理中配置git倉庫的地址
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
  • 打包指令、生成鏡像上傳鏡像到私服
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
  • 進(jìn)入任務(wù)點(diǎn)擊build now
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
  • 控制臺查看日志
    【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付
  • 配置觸發(fā)器,當(dāng)代碼提交時,jenkins自動構(gòu)建任務(wù)

3、前端部署

  • 在docker中部署nginx,修改nginx.conf配置文件
  • 將靜態(tài)資源拷貝到容器映射到宿主機(jī)的目錄
  • 將機(jī)構(gòu)端的前端工程打包,運(yùn)行yarn build
  • 打包成功在工程目錄生成dist目錄
  • 將此目錄的內(nèi)容拷貝到虛擬機(jī)的/data/soft/nginx/xuecheng_portal_static/dist

到了這里,關(guān)于【網(wǎng)課平臺】Day15.Devops:持續(xù)集成與持續(xù)交付的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包