<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      jenkins+gitlab+docker+springboot構建及回滾實現

      1、需求及實現方案

      1.1 需求:

      應用服務是一個springboot的java項目,項目中需要注意的是服務端口和日志映射目錄。代碼托管在gitlab上,服務的打包及發布是在jenkins這臺服務器上。

      1.2 實現方案:

      之前的實現方法是jenkins創建maven項目來構建,然后通過ssh方式發布到應用服務器,但因為是maven項目,實現發布新版本好說,要回滾不好在jenkins上實現,因為每次構建項目都要調用mvn,不管有沒有用到新包,會浪費時間。

      所以稍微改版一下,jenkins創建自由風格項目,然后用參數化構建,用build_id來作為每次備份的目錄名。shell腳本通過參數來判斷新發布的時mvn構建,回滾時根據參數選項回滾到指定版本。

      2、實現過程

      2.1 各軟件的安裝過程就不在這介紹了,列一下需要的服務器及軟件:

      gitlab:獨立服務器,代碼托管。

      jenkins:獨立服務器,可以docker方式啟動,也可以物理機啟動。因為我們是用maven打包,所以需要安裝maven,另外本機安裝了jar私庫,nexus,具體打包需要哪些依賴,maven怎么調用nexus,自己上傳配置就好了。

      應用服務器:docker,CentOS 7.7,java:8基礎鏡像。

      2.2 jenkins+gitlab操作:

      jenkins需要與gitlab作ssh-key認證,應用服務器也需要在jenkins里做一下ssh認證,在jenkins的系統管理-系統設置里,Publish over SSH

      然后主要是jenkins創建任務:

      創建自由風格的任務-在general中選擇-參數化構建,先填寫選項參數,然后再填加字符參數。

       

       

       

      下邊是git地址:

       

      下邊選擇Build中的執行shell

       

       

       

      case $deploy_type in
          deploy)
              echo "deploy:$deploy_type"
              /usr/local/apache-maven-3.6.1/bin/mvn -s /usr/local/apache-maven-3.6.1/conf/settings.xml clean install -Dmaven.test.skip=true -f salary_wallet/pom.xml -P test
              path="${WORKSPACE}/bak"
                 [ -d $path ] || mkdir -p $path
        
              cd ${WORKSPACE}
              rm -rf *.tar.gz
                   tar czf bak/${JOB_NAME}-${BUILD_NUMBER}.tar.gz salary_wallet/target/*.jar --exclude=bak
                  find $path  -mtime 2 -name "*.tar.gz"  -exec rm -rf {} \;
                  echo "Deployment Completed!"
              ;;
          rollback)
              echo  "rollback:$deploy_type"
              echo "buildNum:"$buildNum
              rm -rf target
              cd ${WORKSPACE}
              rm -rf *.tar.gz
              if [ -f bak/${JOB_NAME}-$buildNum.tar.gz ];
              then
                  cp bak/${JOB_NAME}-$buildNum.tar.gz ${WORKSPACE}
                  tar -zxvf ${JOB_NAME}-$buildNum.tar.gz
                  echo  "Rollbacked To build Number:$buildNum"
                  pwd && ls
              else
       
                  echo  "=========================================================================================="
                  echo  "Build Number $buildNum is a Rollback build number ;Please chose a deploy build number!"
                  echo  "========================================================================================== "
                  cp bak/${JOB_NAME}-$buildNum.tar.gz ${WORKSPACE}
              fi
              ;;
              *)
              exit
                  ;;
      esac

       

      然后到Post-build Actions,選擇Send build artifacts over SSH,在里邊選擇之前創建好的目錄應用服務:

      這里需要注意的是Remote directory這是相對于系統設置里創建的ssh連接的目錄,如果寫就是下邊的子目錄。

       

      如果是回滾或者頻繁發布未改變代碼的build,每次的鏡像是不會改變的,所以會同時出現多個同IMAGE ID的鏡像,腳本刪不掉原來的,不必擔心,當代碼有改變時構建就會刪除了。

      該腳本中APP_HOME下邊的Dockerfile內容,是在應用服務器上,先pull好java:8基礎鏡像,會加快速度,在生產環境建議使用自建倉庫:

      cat Dockerfile 

      FROM java:8
      MAINTAINER hk
      #VOLUME
      VOLUME /tmp

      #拷貝jar包
      ADD saXXXXX-0.0.1-SNAPSHOT.jar saXXXXX-0.0.1-SNAPSHOT.jar

      #容器啟動命令 也可以用CMD 但CMD會被docker run的指令覆蓋
      ENTRYPOINT ["java","-jar","/saXXXXX-0.0.1-SNAPSHOT.jar"]

       

      小建議及記錄:

      可以看到我的jenkins腳本中限制了docker 的內存及CPU,不然多個docker在同一宿主機,在資源緊張的時候會殺死部分docker進程。我沒有加禁止oom本docker的參數,自己在創建分配docker的時候根據宿主機配置來,不要盲目。

      docker run -itd --name $TAG_NAME --cpuset-cpus "0-2" -m 4G --memory-reservation 500M  -p 3780:3780 -v ${APP_HOME}/log:/log ${TAG_NAME}:${TODAY}

       這樣就算配置完成了,jenkins構建按扭就不是原來的立即構建了,點進去會有選項,新發不需要指定參數,直接點就可以,選擇rollback的時候注意選擇回退到哪次buildNum就可以了。

       

      posted @ 2021-03-04 10:41  莫莫學習  閱讀(763)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 青青青青国产免费线在线观看| 十八禁午夜福利免费网站 | 无码人妻黑人中文字幕| 波多野结衣无内裤护士| 亚洲中文字幕成人综合网| 国产精品国产三级国产午| 少妇性bbb搡bbb爽爽爽欧美| 国产成人高清亚洲综合| 欧美成人黄在线观看| 天堂a无码a无线孕交| 久久一级精品久熟女人妻| 亚洲欧美日韩综合在线丁香| 国产高潮国产高潮久久久| 香蕉EEWW99国产精选免费| 国产激情一区二区三区在线| 亚洲成人av一区免费看| 亚洲VA久久久噜噜噜久久无码| 兴海县| 亚洲一区二区精品另类| 无码国产偷倩在线播放老年人| 人妻日韩人妻中文字幕| 国产精品爽黄69天堂a| 成人国产乱对白在线观看| 高清无码18| 久久香蕉国产线看观看怡红院妓院| 国产高跟黑色丝袜在线| 亚洲成av人片天堂网无码| 久久精品国产亚洲av亚| 亚洲国产精品自在拍在线播放蜜臀| 免费无码又爽又刺激网站| 国产精品成| 亚洲一区二区av观看| 国产 亚洲 制服 无码 中文| 日韩人妻一区二区三区蜜桃视频| 亚洲av无码牛牛影视在线二区| 国产精品播放一区二区三区| 精品国产福利一区二区| 亚洲一区二区精品另类| 麻豆成人久久精品二区三| 国产亚洲精品国产福APP| 免费观看又色又爽又黄的崩锅|