乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      「Jenkins Git Maven Shell Tomcat持續(xù)集成」經(jīng)典教程

       liang1234_ 2019-08-30

      作者:mousycoder(極簡小站)  

      來源地址:segmentfault.com/a/1190000002895521

      Jenkins 是一個(gè)開源軟件項(xiàng)目,旨在提供一個(gè)開放易用的軟件平臺(tái),使軟件的持續(xù)集成變得可能?,F(xiàn)在軟件開發(fā)追求的是效率以及質(zhì)量,Jenkins使得自動(dòng)化成為可能!

      亮點(diǎn)

      1.采用shell自定義腳本,控制集成部署環(huán)境更加方便靈活

      2.精簡war包中的lib包,常駐tomcat里,減少war包傳輸時(shí)間

      3.Jenkins 用戶權(quán)限管理,不讓淘氣鬼亂動(dòng)

      4.構(gòu)建失敗發(fā)郵件通知相關(guān)人員解決

      5.自動(dòng)按天備份war包,Jenkins配置備份以及版本控制化

      環(huán)境

      Ubuntu 14.10 (GNU/Linux 3.16.0-33-generic x86_64)

      準(zhǔn)備工作

      1.Git版本控制服務(wù)器

      2.Tomcat發(fā)布服務(wù)器

      3.Jenkins服務(wù)器(提前安裝好Maven,Git,Jdk)

      實(shí)驗(yàn)時(shí)可以在同一臺(tái)機(jī)器配置,但是生產(chǎn)不建議,一臺(tái)機(jī)器掛了,所有服務(wù)器都掛了。

      廢話不多說,直接上干貨!

      步驟

      安裝Jenkins

      下載Jenkins War包,Jenkins官網(wǎng) 。

      啟動(dòng)Jenkins ,將War包放入Tomcat容器里,啟動(dòng)Tomcat。

      提示:

      此時(shí)Jenkins在初始化配置目錄,其默認(rèn)配置目錄路徑為當(dāng)前用戶下的.jenkins目錄,用戶也可以自定義目錄,Jenkins默認(rèn)是把配置文件中的數(shù)據(jù)讀到內(nèi)存中,如果你替換了之前的配置文件,此時(shí)需要點(diǎn)擊Jenkins的讀取設(shè)置或者重啟Tomcat,如果此時(shí)Jenkins頁面無響應(yīng),則應(yīng)該查看Tomcat的Catalina.out,多半是由于內(nèi)存溢出造成(解決方法增大Tomcat調(diào)用Java虛擬機(jī)時(shí)內(nèi)存大小,本文不做重點(diǎn)),運(yùn)行Jenkins的服務(wù)器配置最好內(nèi)存1G以上,因?yàn)楹罄m(xù)會(huì)加入一些Jenkins插件,有一些會(huì)比較占用內(nèi)存,導(dǎo)致Jenkins啟動(dòng)不了。

      安裝Jenkins插件

      1.Email Extension Plugin (郵件通知)

      2.GIT plugin (可能已經(jīng)默認(rèn)安裝了)

      3.Publish Over SSH (遠(yuǎn)程Shell)

      安裝方法:

      首頁->系統(tǒng)管理->管理插件->可選插件->過濾(搜索插件名)->勾選->點(diǎn)擊最下面直接安裝即可(需要等待一段時(shí)間,詳情可以看catalina.out日志變化)

      配置Jenkins

      配置基本信息

      每個(gè)選項(xiàng)后都有個(gè)問號(hào)解釋當(dāng)前含義(此步新手可以略過,默認(rèn)不填即可)

      配置方法:首頁->系統(tǒng)管理->系統(tǒng)設(shè)置

      配置郵件

      管理員郵件地址就是郵件的發(fā)件人地址(必須和后面郵件配置發(fā)件人郵箱一致,否則發(fā)不成功郵件)

      配置Jdk

      JAVA_HOME為Jdk路徑 其中Jdk也可以從這里下載安裝解壓(不推薦,需要填寫oracle account)

      配置 Maven

      配置 Maven Configuration

      路徑為maven的setting.xml路徑(Maven安裝略)

      配置Maven項(xiàng)目

      配置Maven安裝目錄

      配置 Git

      其中Path to Git executable為你git執(zhí)行的路徑 一般默認(rèn)是/usr/bin/git ,如有差異,可以whereis git

      配置 Publish over SSH

      遠(yuǎn)程執(zhí)行shell腳本 采用公鑰私鑰連接 其中Key里貼的是私鑰 遠(yuǎn)程被管理的主機(jī)里貼的是公鑰,這2臺(tái)主機(jī)就是相互信任,這樣scp等操作就不需要輸入用戶名和密碼。

      公鑰私鑰生成方法:

      1.管理主機(jī)linux 上 ssh-keygen -t rsa -C 'mousycoder@foxmail.com 一路回車 會(huì)在/root/.ssh下生成id_rsa(私鑰) id_rsa.pub(公鑰)。

      2.copy 公鑰的內(nèi)容到遠(yuǎn)程需要通信(被管理)的主機(jī) /root/.ssh/authorized_keys 如無此目錄文件則手動(dòng)創(chuàng)建。

      配置完之后可以Test Configuration

      配置 Job

      步驟:首頁->新建->構(gòu)建一個(gè)maven項(xiàng)目(輸入item名稱)->進(jìn)入該項(xiàng)目->配置

      JOB基本信息

      項(xiàng)目源碼管理

      Repository UR 項(xiàng)目地址 Credentials授權(quán)可以是SSH也可以是用戶名密碼(SSH方法同上)

      選擇需要構(gòu)建的分支,我們項(xiàng)目采用git工作流 默認(rèn)master和develop 平時(shí)開發(fā)構(gòu)建develop分支,正式上線構(gòu)建master并且打標(biāo)簽(前公司git提交標(biāo)準(zhǔn)化相當(dāng)復(fù)雜,分支相當(dāng)多,這里大家可以根據(jù)實(shí)際情況來)。

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

      這里我們選擇poll輪詢每隔1分鐘去檢測git倉庫代碼庫版本,如果有更改則立刻構(gòu)建,這里大家可以根據(jù)自己團(tuán)隊(duì)實(shí)際情況去制定,當(dāng)然還有另外一個(gè)插件gitlab-hook可以主動(dòng)去通知jenkins構(gòu)建,不過插件所占內(nèi)存比較大,需要增大tomcat虛擬機(jī)內(nèi)存配置,不然會(huì)內(nèi)存溢出,個(gè)人覺得如果一個(gè)團(tuán)隊(duì)人很多的話,選擇poll更適合并且時(shí)間間隔設(shè)置長一些,避免頻繁構(gòu)建,gitlab-hook 適合人很少甚至一個(gè)人的情況。

      構(gòu)建命令

      我們采用最簡單的clean install 當(dāng)然這里可以根據(jù)各自需求

      例如 部署后的產(chǎn)物上傳到nexus等,詳情參考 Maven命令

      clean install deploy:deploy-file -DgroupId=com.weitoo -DartifactId=common -Dversion=0.1-SNAPSHOT -Dpackaging=jar -Dfile=D:\workspace\server-aggregator\common\target\common-0.1-SNAPSHOT.jar -Durl=http://192.168.0.200:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty

      Add post-build step

      構(gòu)建成功后執(zhí)行shell命令

      該shell的目的是取出war包lib中其他所有l(wèi)ib包 只留下common-0.1-SNAPSHOT.jar 大大減少war包大小(完整war包30M 傳包到阿里云服務(wù)器需要2分多,精簡后2M,10秒多,大大提高構(gòu)建速度)。

      分享我的Shell

      mv ~/.jenkins/jobs/server/workspace/server/target/server/WEB-INF/lib/common-0.1-SNAPSHOT.jar ~/.jenkins/jobs/server/workspace/server/target/
      rm -rf ~/.jenkins/jobs/server/workspace/server/target/server/WEB-INF/lib/*
      rm -rf ~/.jenkins/jobs/server/workspace/server/target/server.war
      mv ~/.jenkins/jobs/server/workspace/server/target/common-0.1-SNAPSHOT.jar ~/.jenkins/jobs/server/workspace/server/target/server/WEB-INF/lib/
      cd ~/.jenkins/jobs/server/workspace/server/target/server/
      zip -r ~/.jenkins/jobs/server/workspace/server/target/server.war * -r
      scp /root/.jenkins/jobs/server/workspace/server/target/server.war root@123.56.xxx.xx:/opt/war/

      構(gòu)建成功遠(yuǎn)程執(zhí)行shell腳本

      exec command 是遠(yuǎn)程sh的路徑

      分享我的publish.sh文件

      作用是備份每次上傳的war包 重啟Tomcat。

      export JAVA_HOME=/opt/software/jdk1.7.0_25
      TOMCAT_HOME='/opt/software/apache-tomcat-7.0.59'
      TOMCAT_PORT=80
      PROJECT='server'
      BAK_DIR=/opt/war/bak/$PROJECT/`date %Y%m%d`



      mkdir -p '${BAK_DIR}'
      cp /opt/war/'${PROJECT}'.war '${BAK_DIR}'/'${PROJECT}'_`date %Y%m%d%H%M%S`.war


      #shutdown tomcat
      /opt/sh/kill-tomcat-force.sh

      #publish project
      rm -rf '${TOMCAT_HOME}'/webapps/${PROJECT}
      cp /opt/war/'${PROJECT}'.war '${TOMCAT_HOME}'/webapps/${PROJECT}.war

      #remove tmp
      rm -rf /opt/war/${PROJECT}.war

      #unzip war
      unzip '${TOMCAT_HOME}'/webapps/${PROJECT}.war -d '${TOMCAT_HOME}'/webapps/${PROJECT}

      rm -rf '${TOMCAT_HOME}'/webapps/${PROJECT}.war

      ##copy lib
      cp /opt/lib/* '${TOMCAT_HOME}'/webapps/${PROJECT}/WEB-INF/lib/

      ## start tomcat

      sleep 3

      #start tomcat
      /opt/software/apache-tomcat-7.0.59/bin/startup.sh
      echo 'tomcat is starting!'   

      分享我的kill-tomcat-force.sh文件

      作用是強(qiáng)制關(guān)閉tomcat進(jìn)程

      set fileformat=unix


      path=/opt/software/apache-tomcat-7.0.59/bin

      ps -ef|grep $path|grep tomcat|awk '{print $2}'

      echo 'exec $path/shutdown.sh'
      $path/shutdown.sh

      sleep 3s

      #kill -9 pid
      ps -ef|grep $path|grep tomcat|awk '{print $2}'|xargs kill -9

      #success msg
      echo 'shutdown success'

      ps -ef|grep $path|grep java|awk '{print $2}'

      分享我的Tomcat精簡方法

      1.在tomcat_home/lib下新建自定義jar包文件,導(dǎo)入項(xiàng)目所需其他jar包(以后有新增的話,單獨(dú)再導(dǎo)一次)

      2.修改tomcat_home/conf/catalina.properties 搜索=shared.loader加上路徑

      shared.loader=${catalina.base}/lib/server,${catalina.base}/lib/server/*.jar,${catalina.home}/lib/server,${catalina.home}/lib/server/*.jar

      此時(shí)Tomcat運(yùn)行前會(huì)加載server下的lib包,如果是多個(gè)項(xiàng)目公用一個(gè)tomcat的時(shí)候,就需要這里放公共的lib包,避免tomcat加載多余的jar包,消耗內(nèi)存。

      構(gòu)建后郵件設(shè)置

      郵件主題收件人配置

      郵件觸發(fā)器

      局部配置會(huì)覆蓋掉全局配置,我們之前在全局配置里配置了構(gòu)建失敗郵件觸發(fā)器,這里是更加精細(xì)的配置,

      我們選擇構(gòu)建失敗Failure-1st觸發(fā)器,失敗以后發(fā)郵件給開發(fā)者,(這里可以根據(jù)實(shí)際需要,配置,可以配置多個(gè)觸發(fā)器)開發(fā)者的郵件在Recipient List里配置。

      Jenkins用戶權(quán)限管理

      步驟:首頁-> 系統(tǒng)管理-> Configure Global Security

      基本配置:

      只有注冊(cè)的用戶才能操作,當(dāng)然如果是大企業(yè)的話,可以采用項(xiàng)目矩陣授權(quán)策略,詳情可以Google。

      Jenkins配置的備份和版本控制

      很多情況下稍不注意改變了Jenkins的配置,把平臺(tái)弄壞了,又想去恢復(fù),這個(gè)時(shí)候就得把Jenkins的配置文件進(jìn)行配置或者版本化,只需要把/root/.jenkins/加入git版本庫里即可,該目錄下包含Jenkins所有信息,包括每次構(gòu)建歷史信息和歷史jar包

      進(jìn)行全備份然后覆蓋掉該文件夾的時(shí)候,重新構(gòu)建JOB會(huì)出現(xiàn)文件夾已經(jīng)存在等exception,只需要手動(dòng)刪掉這些目錄即可,不會(huì)丟失數(shù)據(jù)。(這是Jenkins的一個(gè)bug,參考 JENKINS-21330)

      能點(diǎn)個(gè)「在看」再走嘛??

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多