中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

蘇州做網(wǎng)站外包的公司有哪些win7優(yōu)化

蘇州做網(wǎng)站外包的公司有哪些,win7優(yōu)化,大一html網(wǎng)頁(yè)制作期末源代碼,網(wǎng)頁(yè)小游戲的網(wǎng)站1 今日內(nèi)容介紹 1.1 什么是持續(xù)集成 持續(xù)集成( Continuous integration , 簡(jiǎn)稱 CI )指的是,頻繁地(一天多次)將代碼集成到主干 持續(xù)集成的組成要素 一個(gè)自動(dòng)構(gòu)建過(guò)程, 從檢出代碼、 編譯構(gòu)建…

1 今日內(nèi)容介紹

1.1 什么是持續(xù)集成

持續(xù)集成( Continuous integration , 簡(jiǎn)稱 CI )指的是,頻繁地(一天多次)將代碼集成到主干

image-20210802000658790

持續(xù)集成的組成要素

一個(gè)自動(dòng)構(gòu)建過(guò)程, 從檢出代碼、 編譯構(gòu)建、 運(yùn)行測(cè)試、 結(jié)果記錄、 測(cè)試統(tǒng)計(jì)等都是自動(dòng)完成的, 無(wú)需人工干預(yù)。

一個(gè)代碼存儲(chǔ)庫(kù),即需要版本控制軟件來(lái)保障代碼的可維護(hù)性,同時(shí)作為構(gòu)建過(guò)程的素材庫(kù),一般使用SVN或Git。

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

1.2 持續(xù)集成的好處

1、降低風(fēng)險(xiǎn),由于持續(xù)集成不斷去構(gòu)建,編譯和測(cè)試,可以很早期發(fā)現(xiàn)問(wèn)題,所以修復(fù)的代價(jià)就少; 2、對(duì)系統(tǒng)健康持續(xù)檢查,減少發(fā)布風(fēng)險(xiǎn)帶來(lái)的問(wèn)題; 3、減少重復(fù)性工作; 4、持續(xù)部署,提供可部署單元包; 5、持續(xù)交付可供使用的版本; 6、增強(qiáng)團(tuán)隊(duì)信心;

1.3 今日內(nèi)容

image-20210802000829722

2 軟件開(kāi)發(fā)模式

2.1 軟件開(kāi)發(fā)生命周期

軟件開(kāi)發(fā)生命周期又叫做SDLC(Software Development Life Cycle),它是集合了計(jì)劃、開(kāi)發(fā)、測(cè)試和部署過(guò)程的集合。如下圖所示 :

image-20210802011508487

  • 需求分析

    這是生命周期的第一階段,根據(jù)項(xiàng)目需求,團(tuán)隊(duì)執(zhí)行一個(gè)可行性計(jì)劃的分析。項(xiàng)目需求可能是公司內(nèi)部或者客戶提出的。這階段主要是對(duì)信息的收集,也有可能是對(duì)現(xiàn)有項(xiàng)目的改善和重新做一個(gè)新的項(xiàng)目。還要分析項(xiàng)目的預(yù)算多長(zhǎng),可以從哪方面受益及布局,這也是項(xiàng)目創(chuàng)建的目標(biāo)。

  • 設(shè)計(jì)

    第二階段就是設(shè)計(jì)階段,系統(tǒng)架構(gòu)和滿意狀態(tài)(就是要做成什么樣子,有什么功能),和創(chuàng)建一個(gè)項(xiàng)目計(jì)劃。計(jì)劃可以使用圖表,布局設(shè)計(jì)或者文字的方式呈現(xiàn)。

  • 實(shí)現(xiàn)

    第三階段就是實(shí)現(xiàn)階段,項(xiàng)目經(jīng)理創(chuàng)建和分配工作給開(kāi)者,開(kāi)發(fā)者根據(jù)任務(wù)和在設(shè)計(jì)階段定義的目標(biāo)進(jìn)行開(kāi)發(fā)代碼。依據(jù)項(xiàng)目的大小和復(fù)雜程度,可以需要數(shù)月或更長(zhǎng)時(shí)間才能完成。

  • 測(cè)試

    測(cè)試人員進(jìn)行代碼測(cè)試 ,包括功能測(cè)試、代碼測(cè)試、壓力測(cè)試等。

  • 進(jìn)化

    最后進(jìn)階段就是對(duì)產(chǎn)品不斷的進(jìn)化改進(jìn)和維護(hù)階段,根據(jù)用戶的使用情況,可能需要對(duì)某功能進(jìn)行修改,bug修復(fù),功能增加等。

2.2 軟件開(kāi)發(fā)瀑布模型

瀑布模型是最著名和最常使用的軟件開(kāi)發(fā)模型。瀑布模型就是一系列的軟件開(kāi)發(fā)過(guò)程。它是由制造業(yè)繁衍出來(lái)的。一個(gè)高度化的結(jié)構(gòu)流程在一個(gè)方向上流動(dòng),有點(diǎn)像生產(chǎn)線一樣。在瀑布模型創(chuàng)建之初,沒(méi)有其它開(kāi)發(fā)的模型,有很多東西全靠開(kāi)發(fā)人員去猜測(cè),去開(kāi)發(fā)。這樣的模型僅適用于那些簡(jiǎn)單的軟件開(kāi)發(fā), 但是已經(jīng)不適合現(xiàn)在的開(kāi)發(fā)了。

下圖對(duì)軟件開(kāi)發(fā)模型的一個(gè)闡述。

image-20210802011525024

優(yōu)勢(shì)劣勢(shì)
簡(jiǎn)單易用和理解各個(gè)階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量。
當(dāng)前一階段完成后,您只需要去關(guān)注后續(xù)階段。由于開(kāi)發(fā)模型是線性的,用戶只有等到整個(gè)過(guò)程的末期才能見(jiàn)到開(kāi)發(fā)成果,從而增加了開(kāi)發(fā)風(fēng)險(xiǎn)。
為項(xiàng)目提供了按階段劃分的檢查節(jié)點(diǎn)瀑布模型的突出缺點(diǎn)是不適應(yīng)用戶需求的變化。

2.3 軟件的敏捷開(kāi)發(fā)

  • 什么是敏捷開(kāi)發(fā)?

    敏捷開(kāi)發(fā)(Agile Development) 的核心是迭代開(kāi)發(fā)(Iterative Development) 與 增量開(kāi)發(fā)(Incremental Development)。

  • 何為迭代開(kāi)發(fā)?

    對(duì)于大型軟件項(xiàng)目,傳統(tǒng)的開(kāi)發(fā)方式是采用一個(gè)大周期(比如一年)進(jìn)行開(kāi)發(fā),整個(gè)過(guò)程就是一次"大開(kāi)發(fā)";迭代開(kāi)發(fā)的方式則不一樣,它將開(kāi)發(fā)過(guò)程拆分成多個(gè)小周期,即一次"大開(kāi)發(fā)"變成多次"小開(kāi)發(fā)",每次小開(kāi)發(fā)都是同樣的流程,所以看上去就好像重復(fù)在做同樣的步驟。

    舉例來(lái)說(shuō),SpaceX 公司想造一個(gè)大推力火箭,將人類送到火星。但是,它不是一開(kāi)始就造大火箭,而是先造一個(gè)最簡(jiǎn)陋的小火箭 Falcon 1。結(jié)果,第一次發(fā)射就爆炸了,直到第四次發(fā)射,才成功進(jìn)入軌道。然后,開(kāi)發(fā)了中型火箭 Falcon 9,九年中發(fā)射了70次。最后,才開(kāi)發(fā) Falcon 重型火箭。如果SpaceX 不采用迭代開(kāi)發(fā),它可能直到現(xiàn)在還無(wú)法上天。

  • 何為增量開(kāi)發(fā)?

    軟件的每個(gè)版本,都會(huì)新增一個(gè)用戶可以感知的完整功能。也就是說(shuō),按照新增功能來(lái)劃分迭代。

    舉例來(lái)說(shuō),房產(chǎn)公司開(kāi)發(fā)一個(gè)10棟樓的小區(qū)。如果采用增量開(kāi)發(fā)的模式,該公司第一個(gè)迭代就是交付一號(hào)樓,第二個(gè)迭代交付二號(hào)樓......每個(gè)迭代都是完成一棟完整的樓。而不是第一個(gè)迭代挖好10棟樓的地基,第二個(gè)迭代建好每棟樓的骨架,第三個(gè)迭代架設(shè)屋頂......

  • 敏捷開(kāi)發(fā)如何迭代?

    雖然敏捷開(kāi)發(fā)將軟件開(kāi)發(fā)分成多個(gè)迭代,但是也要求,每次迭代都是一個(gè)完整的軟件開(kāi)發(fā)周期,必須按照軟件工程的方法論,進(jìn)行正規(guī)的流程管理。

image-20210802011540379

  • 敏捷開(kāi)發(fā)有什么好處?

    • 早期交付

      敏捷開(kāi)發(fā)的第一個(gè)好處,就是早期交付,從而大大降低成本。 還是以上一節(jié)的房產(chǎn)公司為例,如果按照傳統(tǒng)的"瀑布開(kāi)發(fā)模式",先挖10棟樓的地基、再蓋骨架、然后架設(shè)屋頂,每個(gè)階段都等到前一個(gè)階段完成后開(kāi)始,可能需要兩年才能一次性交付10棟樓。也就是說(shuō),如果不考慮預(yù)售,該項(xiàng)目必須等到兩年后才能回款。 敏捷開(kāi)發(fā)是六個(gè)月后交付一號(hào)樓,后面每?jī)蓚€(gè)月交付一棟樓。因此,半年就能回款10%,后面每個(gè)月都會(huì)有現(xiàn)金流,資金壓力就大大減輕了。

    • 降低風(fēng)險(xiǎn)

      敏捷開(kāi)發(fā)的第二個(gè)好處是,及時(shí)了解市場(chǎng)需求,降低產(chǎn)品不適用的風(fēng)險(xiǎn)。 請(qǐng)想一想,哪一種情況損失比較小:10棟樓都造好以后,才發(fā)現(xiàn)賣不出去,還是造好第一棟樓,就發(fā)現(xiàn)賣不出去,從而改進(jìn)或停建后面9棟樓?

3 Jenkins安裝配置

3.1 Jenkins介紹

image-20210802011553923

Jenkins 是一款流行的開(kāi)源持續(xù)集成(Continuous Integration)工具,廣泛用于項(xiàng)目開(kāi)發(fā),具有自動(dòng)化構(gòu)建、測(cè)試和部署等功能。官網(wǎng):?http://jenkins-ci.org/。

Jenkins的特征:

  • 開(kāi)源的 Java語(yǔ)言開(kāi)發(fā)持續(xù)集成工具,支持持續(xù)集成,持續(xù)部署。
  • 易于安裝部署配置:可通過(guò) yum安裝,或下載war包以及通過(guò)docker容器等快速實(shí)現(xiàn)安裝部署,可方便web界面配置管理。
  • 消息通知及測(cè)試報(bào)告:集成 RSS/E-mail通過(guò)RSS發(fā)布構(gòu)建結(jié)果或當(dāng)構(gòu)建完成時(shí)通過(guò)e-mail通知,生成JUnit/TestNG測(cè)試報(bào)告。
  • 分布式構(gòu)建:支持 Jenkins能夠讓多臺(tái)計(jì)算機(jī)一起構(gòu)建/測(cè)試。
  • 文件識(shí)別: Jenkins能夠跟蹤哪次構(gòu)建生成哪些jar,哪次構(gòu)建使用哪個(gè)版本的jar等。
  • 豐富的插件支持:支持?jǐn)U展插件,你可以開(kāi)發(fā)適合自己團(tuán)隊(duì)使用的工具,如 git,svn,maven,docker等。

Jenkins安裝和持續(xù)集成環(huán)境配置

image-20210802011607894

1 )首先,開(kāi)發(fā)人員每天進(jìn)行代碼提交,提交到Git倉(cāng)庫(kù)

2)然后,Jenkins作為持續(xù)集成工具,使用Git工具到Git倉(cāng)庫(kù)拉取代碼到集成服務(wù)器,再配合JDK,Maven等軟件完成代碼編譯,代碼測(cè)試與審查,測(cè)試,打包等工作,在這個(gè)過(guò)程中每一步出錯(cuò),都重新再執(zhí)行一次整個(gè)流程。

3)最后,Jenkins把生成的jar或war包分發(fā)到測(cè)試服務(wù)器或者生產(chǎn)服務(wù)器,測(cè)試人員或用戶就可以訪問(wèn)應(yīng)用。

3.2 Jenkins環(huán)境搭建

3.2.1 Jenkins安裝配置

可以導(dǎo)入資料中的鏡像:

服務(wù)器用戶名:root   密碼:itcastjenkins  用戶名:itcast   密碼:itcastCopy to clipboardErrorCopied
  1. 采用YUM方式安裝

    加入jenkins安裝源:

    sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificatesudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.keyCopy to clipboardErrorCopied

    執(zhí)行yum命令安裝:

    yum -y install jenkinsCopy to clipboardErrorCopied
  2. 采用RPM安裝包方式

    Jenkins安裝包下載地址

    wget https://pkg.jenkins.io/redhat-stable/jenkins-2.190.1-1.1.noarch.rpmCopy to clipboardErrorCopied

    執(zhí)行安裝:

    rpm -ivh jenkins-2.190.1-1.1.noarch.rpmCopy to clipboardErrorCopied
  3. 配置:

    修改配置文件:

    vi /etc/sysconfig/jenkinsCopy to clipboardErrorCopied

    修改內(nèi)容:

    # 修改為對(duì)應(yīng)的目標(biāo)用戶, 這里使用的是root
    $JENKINS_USER="root"
    # 服務(wù)監(jiān)聽(tīng)端口
    JENKINS_PORT="16060"Copy to clipboardErrorCopied

    目錄權(quán)限:

    chown -R root:root /var/lib/jenkins
    chown -R root:root /var/cache/jenkins
    chown -R root:root /var/log/jenkinsCopy to clipboardErrorCopied

    重啟:

    systemctl restart jenkinsCopy to clipboardErrorCopied

    如果啟動(dòng)失敗, 出現(xiàn)錯(cuò)誤信息:

    Starting Jenkins bash: /usr/bin/java: No such file or directoryCopy to clipboardErrorCopied

    創(chuàng)建JAVA環(huán)境的軟鏈接:

    ln -s /usr/local/jdk/bin/java /usr/bin/javaCopy to clipboardErrorCopied
  4. 管理后臺(tái)初始化設(shè)置

    http://192.168.200.100:16060/

    需要輸入管理密碼, 在以下位置查看:

    cat /var/lib/jenkins/secrets/initialAdminPasswordCopy to clipboardErrorCopied

    image-20210802011625800

    按默認(rèn)設(shè)置,把建議的插件都安裝上

    image-20210802011638639

    這一步等待時(shí)間較長(zhǎng), 安裝完成之后, 創(chuàng)建管理員用戶:

    image-20210802011653454

配置訪問(wèn)地址:

image-20210802011707013

配置完成之后, 會(huì)進(jìn)行重啟, 之后可以看到管理后臺(tái):

image-20210802011723835

3.2.2 Jenkins插件安裝

在實(shí)現(xiàn)持續(xù)集成之前, 需要確保以下插件安裝成功。

  • Maven Integration plugin: Maven 集成管理插件。
  • Docker plugin: Docker集成插件。
  • GitLab Plugin: GitLab集成插件。
  • Publish Over SSH:遠(yuǎn)程文件發(fā)布插件。
  • SSH: 遠(yuǎn)程腳本執(zhí)行插件。

安裝方法:

  1. 進(jìn)入【系統(tǒng)管理】-【插件管理】

  2. 點(diǎn)擊標(biāo)簽頁(yè)的【可選插件】

    在過(guò)濾框中搜索插件名稱

    image-20210802011740056

  3. 勾選插件, 點(diǎn)擊直接安裝即可。

注意,如果沒(méi)有安裝按鈕,需要更改配置

在安裝插件的高級(jí)配置中,修改升級(jí)站點(diǎn)的連接為:http://updates.jenkins.io/update-center.json?保存

image-20210802011758588

3.2.3 Git安裝配置
  1. yum 安裝方式

    yum -y install gitCopy to clipboardErrorCopied
  2. 采用源碼包方式安裝

    • 安裝依賴包

      yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
      yum -y install gcc perl-ExtUtils-MakeMakerCopy to clipboardErrorCopied
    • 如果之前有安裝舊版本, 先做卸載, 沒(méi)有安裝則忽略

      yum remove gitCopy to clipboardErrorCopied
    • 下載源碼包

      cd /usr/local
      wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-1.8.3.1.tar.gz
      tar -xvf git-1.8.3.1.tar.gzCopy to clipboardErrorCopied

      也可以安裝其他版本, 地址:Index of /pub/software/scm/git/

    • 編譯安裝

      cd git-1.8.3.1
      make prefix=/usr/local/git all
      make prefix=/usr/local/git install
      echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
      source /etc/bashrcCopy to clipboardErrorCopied
  3. 檢查git版本

    [root@localhost jenkins]# git version
    git version 1.8.3.1Copy to clipboardErrorCopied
3.2.4 Maven安裝配置
  1. 下載安裝包

    下載地址:?Maven – Download Apache Maven

  2. 解壓安裝包

    cd /usr/local
    unzip -o apache-maven-3.6.1.zip Copy to clipboardErrorCopied

    上傳本地倉(cāng)庫(kù)并解壓

    image-20210802013808080

  3. 配置

    環(huán)境變量配置

    vi /etc/profileCopy to clipboardErrorCopied

    增加:

    export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.1
    export PATH=$PATH:$MAVEN_HOME/binCopy to clipboardErrorCopied

    如果權(quán)限不夠,則需要增加當(dāng)前目錄的權(quán)限

    chmod 777 /usr/local/maven/apache-maven-3.6.1/bin/mvnCopy to clipboardErrorCopied

    修改鏡像倉(cāng)庫(kù)配置:

    vi /usr/local/maven/apache-maven-3.6.1/conf/settings.xmlCopy to clipboardErrorCopied

    需要把本機(jī)的倉(cāng)庫(kù)打包上傳到服務(wù)器上(不上傳會(huì)自動(dòng)下載)

    然后指定上傳后的倉(cāng)庫(kù)配置

    image-20210802013533421

3.2.5 Docker安裝配置
  1. 更新軟件包版本

    yum -y updateCopy to clipboardErrorCopied
  2. 卸載舊版本

    yum -y remove docker  docker-common docker-selinux docker-engineCopy to clipboardErrorCopied
  3. 安裝軟件依賴包

    yum install -y yum-utils device-mapper-persistent-data lvm2Copy to clipboardErrorCopied
  4. 設(shè)置yum源為阿里云

    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoCopy to clipboardErrorCopied
  5. 安裝后查看docker版本

    docker -vCopy to clipboardErrorCopied
  6. 啟動(dòng)

    設(shè)置開(kāi)機(jī)啟動(dòng):

    systemctl enable dockerCopy to clipboardErrorCopied

    啟動(dòng)docker

    systemctl start dockerCopy to clipboardErrorCopied
3.2.6 Docker Registry私有倉(cāng)庫(kù)安裝配置

3.3 Jenkins工具配置

  1. 進(jìn)入【系統(tǒng)管理】--> 【全局工具配置】

    image-20210802011944005

  2. MAVEN配置全局設(shè)置

    image-20210802011956261

  3. 指定JDK配置

    image-20210802012010244

  1. 指定MAVEN 目錄

    image-20210802012026476

  2. 指定DOCKER目錄

    image-20210802012038581

    如果不清楚docker的安裝的目錄,可以使用whereis docker?命令查看docker的安裝的目錄

4 后端項(xiàng)目部署

4.1 多環(huán)境切換

在項(xiàng)目開(kāi)發(fā)部署的過(guò)程中,一般都會(huì)有三套項(xiàng)目環(huán)境

  • Development :開(kāi)發(fā)環(huán)境

  • Production :生產(chǎn)環(huán)境

  • Test :測(cè)試環(huán)境

例如:開(kāi)發(fā)環(huán)境的mysql連接的是本地,生產(chǎn)環(huán)境需要連接線上的mysql環(huán)境

4.2 多環(huán)境切換-微服務(wù)中多環(huán)境配置

1.在微服務(wù)中的bootstrap.yml中新增配置

server:port: 51801
spring:application:name: leadnews-usercloud:nacos:discovery:server-addr: 192.168.200.130:8848config:server-addr: 192.168.200.130:8848file-extension: ymlprofiles:active: devCopy to clipboardErrorCopied

2.在nacos的配置中心中新增各個(gè)環(huán)境的配置文件,例如user微服務(wù)中新增

修改bootstrap.yml 添加內(nèi)容

spring:profiles:active: devCopy to clipboardErrorCopied

創(chuàng)建對(duì)應(yīng)的nacos的多環(huán)境配置:

image-20210623143417530

image-20210623143557710

注意事項(xiàng):

其中DataID屬性命名有規(guī)范:

  • prefix,默認(rèn)使用${spring.application.name},也可以通過(guò)spring.cloud.nacos.config.prefix來(lái)配置。
  • spring.profile.active,即為當(dāng)前環(huán)境對(duì)應(yīng)的 profile,詳情可以參考 Spring Boot文檔。 注意:當(dāng) spring.profile.active 為空時(shí),對(duì)應(yīng)的連接符 - 也將不存在,dataId 的拼接格式變成 ${prefix}.${file-extension}
  • file-exetension,為配置內(nèi)容的數(shù)據(jù)格式,可以通過(guò)配置項(xiàng) spring.cloud.nacos.config.file-extension 來(lái)配置。目前只支持 properties 和 yaml 類型。

4.3 整體思路

目標(biāo):把黑馬頭條的app端相關(guān)的微服務(wù)部署到192.168.200.100這臺(tái)服務(wù)器上

image-20210802003955971

image-20210802004007699

4.4 服務(wù)集成Docker配置

目標(biāo):部署的每一個(gè)微服務(wù)都是先創(chuàng)建docker鏡像后創(chuàng)建對(duì)應(yīng)容器啟動(dòng)

方式一:本地微服務(wù)打包以后上傳到服務(wù)器,編寫(xiě)Dockerfile文件完成。

方式二:使用dockerfile-maven-plugin插件,可以直接把微服務(wù)創(chuàng)建為鏡像使用(更省事)

服務(wù)集成Docker配置

image-20210802004133439

每個(gè)微服務(wù)都引入該依賴,以heima-leadnews-user微服務(wù)為例

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>heima-leadnews-service</artifactId><groupId>com.heima</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>heima-leadnews-user</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><docker.image>docker_storage</docker.image></properties><build><finalName>heima-leadnews-user</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.7.0</version><configuration><source>${java.version}</source><target>${java.version}</target></configuration></plugin><plugin><groupId>com.spotify</groupId><artifactId>dockerfile-maven-plugin</artifactId><version>1.3.6</version><configuration><repository>${docker.image}/${project.artifactId}</repository><buildArgs><JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE></buildArgs></configuration></plugin></plugins></build></project>Copy to clipboardErrorCopied

服務(wù)集成Dockerfile文件

# 設(shè)置JAVA版本
FROM java:8
# 指定存儲(chǔ)卷, 任何向/tmp寫(xiě)入的信息都不會(huì)記錄到容器存儲(chǔ)層
VOLUME /tmp
# 拷貝運(yùn)行JAR包
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
# 設(shè)置JVM運(yùn)行參數(shù), 這里限定下內(nèi)存大小,減少開(kāi)銷
ENV JAVA_OPTS="\
-server \
-Xms256m \
-Xmx512m \
-XX:MetaspaceSize=256m \
-XX:MaxMetaspaceSize=512m"
#空參數(shù),方便創(chuàng)建容器時(shí)傳參
ENV PARAMS=""
# 入口點(diǎn), 執(zhí)行JAVA運(yùn)行命令
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]Copy to clipboardErrorCopied

4.5 jenkins基礎(chǔ)依賴打包配置

在微服務(wù)運(yùn)行之前需要在本地倉(cāng)庫(kù)中先去install所依賴的jar包,所以第一步應(yīng)該是從git中拉取代碼,并且把基礎(chǔ)的依賴部分安裝到倉(cāng)庫(kù)中

1,父工程heima-leadnews

image-20210802004744531

2,找到自己指定的git倉(cāng)庫(kù),設(shè)置用戶名和密碼

image-20210802004803711

3,把基礎(chǔ)依賴信息安裝到服務(wù)器上的本地倉(cāng)庫(kù)

image-20210802004818581

4,執(zhí)行

執(zhí)行日志,部分截圖,下面是從git中拉取代碼

image-20210802004838998

執(zhí)行日志,部分截圖,編譯打包

image-20210802004858057

執(zhí)行日志,部分截圖,執(zhí)行成功

image-20210802004915042

4.6 jenkins微服務(wù)打包配置

所有微服務(wù)打包的方式類似,以heima-leadnews-user微服務(wù)為例

1,新建任務(wù)

image-20210802004942366

2,找到自己指定的git倉(cāng)庫(kù),設(shè)置用戶名和密碼

image-20210802005000376

3,執(zhí)行maven命令

image-20210802005018020

image-20210802005027229

clean install -Dmaven.test.skip=true  dockerfile:build -f heima-leadnews/heima-leadnews-service/heima-leadnews-user/pom.xmlCopy to clipboardErrorCopied

注意:根據(jù)自己的實(shí)際代碼路徑配置

-Dmaven.test.skip=true 跳過(guò)測(cè)試

dockerfile:build 啟動(dòng)dockerfile插件構(gòu)建容器

-f heima-leadnews-user/pom.xml 指定需要構(gòu)建的文件(必須是pom)

4,并執(zhí)行shell腳本

image-20210802005318464

image-20210802005329034

if [ -n  "$(docker ps -a -f  name=$JOB_NAME  --format '{{.ID}}' )" ]then#刪除之前的容器docker rm -f $(docker ps -a -f  name=$JOB_NAME  --format '{{.ID}}' )
fi# 清理鏡像
docker image prune -f # 啟動(dòng)docker服務(wù)
docker run -d --net=host -e PARAMS="--spring.profiles.active=prod"  --name $JOB_NAME docker_storage/$JOB_NAMECopy to clipboardErrorCopied

5,執(zhí)行日志

拉取代碼

image-20210802005404751

編譯打包

image-20210802005417489

構(gòu)建鏡像

image-20210802005438400

清理容器,創(chuàng)建新的容器

image-20210802005452184

4.7 部署服務(wù)到遠(yuǎn)程服務(wù)器上

目標(biāo):使用jenkins(192.168.200.100)把微服務(wù)打包部署到192.168.200.130服務(wù)器上

image-20210802005538404

4.7.1 安裝配置私有倉(cāng)庫(kù)

對(duì)于持續(xù)集成環(huán)境的配置,Jenkins會(huì)發(fā)布大量的微服務(wù), 要與多臺(tái)機(jī)器進(jìn)行交互, 可以采用docker鏡像的保存與導(dǎo)出功能結(jié)合SSH實(shí)現(xiàn), 但這樣交互繁瑣,穩(wěn)定性差, 而且不便管理, 這里我們通過(guò)搭建Docker的私有倉(cāng)庫(kù)來(lái)實(shí)現(xiàn), 這個(gè)有點(diǎn)類似GIT倉(cāng)庫(kù), 集中統(tǒng)一管理資源, 由客戶端拉取或更新。

  1. 下載最新Registry鏡像

    docker pull registry:latestCopy to clipboardErrorCopied
  2. 啟動(dòng)Registry鏡像服務(wù)

    docker run -d -p 5000:5000 --name registry -v /usr/local/docker/registry:/var/lib/registry registry:latestCopy to clipboardErrorCopied

    映射5000端口; -v是將Registry內(nèi)的鏡像數(shù)據(jù)卷與本地文件關(guān)聯(lián), 便于管理和維護(hù)Registry內(nèi)的數(shù)據(jù)。

  3. 查看倉(cāng)庫(kù)資源

    訪問(wèn)地址:http://192.168.200.100:5000/v2/_catalog

    啟動(dòng)正常, 可以看到返回:

    {"repositories":[]}Copy to clipboardErrorCopied

    目前并沒(méi)有上傳鏡像, 顯示空數(shù)據(jù)。

    如果上傳成功, 可以看到數(shù)據(jù):?

    image-20210802005839314

  4. 配置Docker客戶端

    正常生產(chǎn)環(huán)境中使用, 要配置HTTPS服務(wù), 確保安全,內(nèi)部開(kāi)發(fā)或測(cè)試集成的局域網(wǎng)環(huán)境,可以采用簡(jiǎn)便的方式, 不做安全控制。

    先確保持續(xù)集成環(huán)境的機(jī)器已安裝好Docker客戶端, 然后做以下修改:

    vi /lib/systemd/system/docker.serviceCopy to clipboardErrorCopied

    修改內(nèi)容:

    ExecStart=/usr/bin/dockerd --insecure-registry 192.168.200.100:5000Copy to clipboardErrorCopied

    指向安裝Registry的服務(wù)IP與端口。

    重啟生效:

    systemctl daemon-reolad
    systemctl restart docker.serviceCopy to clipboardErrorCopied
4.7.2 jenkins中安裝插件

image-20210802005913026

4.7.3 jenkins系統(tǒng)配置遠(yuǎn)程服務(wù)器鏈接

位置:Manage Jenkins-->Configure System

image-20210802005937966

需要添加憑證

位置:Manage Jenkins-->Manage CreDentials

image-20210802010324224

添加鏈接到130服務(wù)器的用戶名和密碼

image-20210802010525665

image-20210802010429136

image-20210802010201146

4.7.4 jenkins項(xiàng)目創(chuàng)建與其他微服務(wù)相同

創(chuàng)建項(xiàng)目參考之前創(chuàng)建過(guò)的用戶微服務(wù)

4.7.5 設(shè)置參數(shù)

image-20210802010650039

4.7.6 構(gòu)建執(zhí)行Execute shell

image-20210802010720937

maven命令

clean install -Dmaven.test.skip=true dockerfile:build -f heima-leadnews/heima-leadnews-service/heima-leadnews-article/pom.xmlCopy to clipboardErrorCopied

shell腳本

image_tag=$docker_registry/docker_storage/$JOB_NAME
echo '================docker鏡像清理================'
if [ -n  "$(docker ps -a -f  name=$JOB_NAME  --format '{{.ID}}' )" ]then#刪除之前的容器docker rm -f $(docker ps -a -f  name=$JOB_NAME  --format '{{.ID}}' )
fi# 清理鏡像
docker image prune -f # 創(chuàng)建TAG
docker tag docker_storage/$JOB_NAME $image_tag
echo '================docker鏡像推送================'
# 推送鏡像
docker push $image_tag
# 刪除TAG
docker rmi $image_tag
echo '================docker tag 清理 ================'Copy to clipboardErrorCopied
4.7.7 在遠(yuǎn)程服務(wù)器上執(zhí)行腳本

image-20210802010750809

遠(yuǎn)程服務(wù)器執(zhí)行的shell腳本

echo '================拉取最新鏡像================'
docker pull $docker_registry/docker_storage/$JOB_NAMEecho '================刪除清理容器鏡像================'
if [ -n  "$(docker ps -a -f  name=$JOB_NAME  --format '{{.ID}}' )" ]then#刪除之前的容器docker rm -f $(docker ps -a -f  name=$JOB_NAME  --format '{{.ID}}' )
fi# 清理鏡像
docker image prune -f echo '===============啟動(dòng)容器================'
docker run -d   --net=host -e PARAMS="--spring.profiles.active=prod" --name $JOB_NAME $docker_registry/docker_storage/$JOB_NAMECopy to clipboardErrorCopied
4.7.8 構(gòu)建完成以后,可以登錄130服務(wù)器,查看是否有相關(guān)的鏡像和容器

鏡像

image-20210802010824088

容器

image-20210802010835702

4.8 聯(lián)調(diào)測(cè)試

1.參考jenkins中heima-leadnews-user微服務(wù)把a(bǔ)pp端網(wǎng)關(guān)部署起來(lái)

2.修改本地nginx中的配置反向代理地址為100這臺(tái)服務(wù)器:heima-leadnews-app.conf

upstream  heima-app-gateway{server 192.168.200.100:51601;
}Copy to clipboardErrorCopied

3.啟動(dòng)nginx,打開(kāi)頁(yè)面進(jìn)行測(cè)試

5 jenkins觸發(fā)器配置

5.1 URL觸發(fā)遠(yuǎn)程構(gòu)建

觸發(fā)遠(yuǎn)程構(gòu)建,修改jenkins的配置,如下

image-20210802011202642

觸發(fā)構(gòu)建url:?http://192.168.200.100:16060/job/leadnews-admin/build?token=88888888

5.2 其他工程構(gòu)建后觸發(fā)

配置需要觸發(fā)的工程

image-20210802011225737

5.3 定時(shí)構(gòu)建

定時(shí)構(gòu)建( Build periodically)

image-20210802011245118

定時(shí)字符串從左往右分別為: 分 時(shí) 日 月 周

定時(shí)構(gòu)建-定時(shí)表達(dá)式

定時(shí)字符串從左往右分別為: 分 時(shí) 日 月 周

組成部分含義取值范圍
第一部分minute (分)0~59
第二部分hour(小時(shí))0~23
第三部分day(天)1~31
第四部分month(月)1~12
第五部分week(周)0~7,0 和 7 都是表示星期天
  • 符號(hào)H 表示一個(gè)隨機(jī)數(shù)

  • 符號(hào)* 取值范圍的任意值

案例:

  • 每30分鐘構(gòu)建一次:H/30 * * * * 10:02 10:32

  • 每2個(gè)小時(shí)構(gòu)建一次: H H/2 * * *

  • 每天的8點(diǎn),12點(diǎn),22點(diǎn),一天構(gòu)建3次: (多個(gè)時(shí)間點(diǎn)中間用逗號(hào)隔開(kāi)) 0 8,12,22 * * *

  • 每天中午12點(diǎn)定時(shí)構(gòu)建一次 H 12 * * *

  • 每天下午18點(diǎn)定時(shí)構(gòu)建一次 H 18 * * *

5.4 輪詢

輪詢 SCM(Poll SCM)

輪詢SCM,是指定時(shí)掃描本地代碼倉(cāng)庫(kù)的代碼是否有變更,如果代碼有變更就觸發(fā)項(xiàng)目構(gòu)建。

image-20210802011431941

Jenkins會(huì)定時(shí)掃描本地整個(gè)項(xiàng)目的代碼,增大系統(tǒng)的開(kāi)銷,不建議使用。

http://www.risenshineclean.com/news/59758.html

相關(guān)文章:

  • 英文二手汽車網(wǎng)站建設(shè)網(wǎng)絡(luò)項(xiàng)目免費(fèi)的資源網(wǎng)
  • 蘇州個(gè)人制作公司seo sem
  • web網(wǎng)站開(kāi)發(fā)課程設(shè)計(jì)南昌seo搜索排名
  • 石家莊網(wǎng)站怎么建設(shè)今日頭條搜索引擎
  • wordpress wiki 模版海南seo
  • 設(shè)計(jì)專業(yè)新手網(wǎng)站百度推廣公司
  • 臨汾市建設(shè)局網(wǎng)站app推廣接單
  • 山東天元建設(shè)集團(tuán)破產(chǎn)網(wǎng)站優(yōu)化企業(yè)排名
  • 網(wǎng)站設(shè)計(jì)常用軟件免費(fèi)的h5制作網(wǎng)站模板
  • 廣東東莞最新消息通知seo及網(wǎng)絡(luò)推廣招聘
  • 上海網(wǎng)頁(yè)設(shè)計(jì)是什么溫州seo排名優(yōu)化
  • ui設(shè)計(jì)界面效果圖長(zhǎng)沙搜索排名優(yōu)化公司
  • 公司網(wǎng)站服務(wù)器租用專業(yè)的網(wǎng)站建設(shè)公司
  • 東莞人才服務(wù)中心官網(wǎng)seo網(wǎng)站診斷文檔案例
  • 網(wǎng)站怎么做 凡科網(wǎng)站策劃書(shū)的撰寫(xiě)流程
  • 自己如何做電影網(wǎng)站今日熱點(diǎn)新聞大事件
  • 門戶網(wǎng)站建設(shè)情況哪家網(wǎng)絡(luò)營(yíng)銷好
  • 兒童做的小游戲下載網(wǎng)站市場(chǎng)seo是什么意思
  • 邢臺(tái)做網(wǎng)站哪個(gè)網(wǎng)絡(luò)公司好贛州seo優(yōu)化
  • 電商網(wǎng)站建設(shè)網(wǎng)蘭州seo
  • 新媒體公司網(wǎng)站怎么做北京網(wǎng)站推廣排名
  • 河間網(wǎng)站建設(shè)價(jià)格hyein seo是什么牌子
  • 風(fēng)中有朵雨做的云在線網(wǎng)站查域名注冊(cè)詳細(xì)信息查詢
  • 網(wǎng)站制作主要公司2022網(wǎng)站seo
  • dw怎么做網(wǎng)站注冊(cè)登入頁(yè)面推廣平臺(tái)有哪些渠道
  • 做風(fēng)險(xiǎn)投資網(wǎng)站優(yōu)化大師的作用
  • 商丘建網(wǎng)站百度競(jìng)價(jià)排名廣告定價(jià)
  • 品牌設(shè)計(jì)公司簡(jiǎn)介廣東seo網(wǎng)絡(luò)培訓(xùn)
  • 學(xué)網(wǎng)站建設(shè) 去哪里百度推廣客戶端下載安裝
  • 中國(guó)建設(shè)銀行網(wǎng)站查詢密碼是什么意思媒體發(fā)布平臺(tái)