日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

持续集成/持续部署(3)Jenkins(2)

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 持续集成/持续部署(3)Jenkins(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JenkinsPipeline

CI/CD持續集成/持續部署

持續集成(Continuous integration)是一種軟件開發實踐,即團隊開發成員經常集成它們的工作,通過每個成員每天至少集成一次,也就意味著每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡早地發現集成錯誤。
比如(你家裝修廚房,其中一項是鋪地磚,邊角地磚要切割大小。如果一次全切割完再鋪上去,發現尺寸有誤的話浪費和返工時間就大了,不如切一塊鋪一塊。這就是持續集成。)

持續部署(continuous deployment)是通過自動化的構建、測試和部署循環來快速交付高質量的產品。某種程度上代表了一個開發團隊工程化的程度,畢竟快速運轉的互聯網公司人力成本會高于機器,投資機器優化開發流程化相對也提高了人的效率。
比如(裝修廚房有很多部分,每個部分都有檢測手段,如地磚鋪完了要測試漏水與否,線路鋪完了要通電測試電路通順,水管裝好了也要測試冷水熱水。如果全部裝完了再測,出現問題可能會互相影響,比如電路不行可能要把地磚給挖開……。那么每完成一部分就測試,這是持續部署。)

持續交付 Continuous Delivery:頻繁地將軟件的新版本,交付給質量團隊或者用戶,以供評審盡早發現生產環境中存在的問題;如果評審通過,代碼就進入生產階段
比如(全部裝修完了,你去驗收,發現地磚顏色不合意,水池太小,灶臺位置不對,返工嗎?所以不如沒完成一部分,你就去用一下試用驗收,這就是持續交付。)
敏捷思想中提出的這三個觀點,還強調一件事:通過技術手段自動化這三個工作。加快交付速度。

pipeline介紹

  • 什么是pipeline
    Jenkins 2.0的精髓是Pipeline as Code,是幫助Jenkins實現CI到CD轉變的重要角色。什么是Pipeline,簡單來說,就是一套運行于Jenkins上的工作流框架,將原本獨立運行于單個或者多個節點的任務連接起來,實現單個任務難以完成的復雜發布流程。Pipeline的實現方式是一套Groovy DSL,任何發布流程都可以表述為一段Groovy腳本,并且Jenkins支持從代碼庫直接讀取腳本,從而實現了Pipeline as Code的理念。
  • Pipeline 概念
    Pipeline 是一個用戶定義的 CD 流水線模式。Pipeline 代碼定義了通常包含構建、測試和發布步驟的完整的構建過程。
  • Node
    ???node 是一個機器,它是 Jenkins 環境的一部分,并且能夠執行 Pipeline。同時,node 代碼塊也是腳本式 Pipeline 語法的關鍵特性。

    Stage
    ???Stage 塊定義了在整個 Pipeline 中執行的概念上不同的任務子集(例如“構建”,“測試”和“部署”階段),許多插件使用它來可視化或呈現 Jenkins 管道狀態/進度。

    Step
    ???一項任務。從根本上講,一個步驟告訴 Jenkins 在特定時間點(或過程中的“步驟”)要做什么。例如,使用 sh step:sh ‘make’ 可以執行 make 這個 shell 命令。

    創建pipeline項目

    將測試代碼粘貼到pipeline腳本中

    pipeline{ agent any stages{stage("get code"){steps{echo "get code from scm"}}stage("package"){steps{echo "packge code"}}stage("deploy"){steps{echo "deploy packge to node1"}} } }

    執行完成查看結果

    將freestyle項目集成到pipeline

    將jenkinsfile寫入到game項目中

    pipeline{ agent any // agent { label 'node1' } stages{stage("get code"){steps{echo "get code"} }stage("unit test"){steps{sh '/usr/local/sonar/bin/sonar-scanner -Dsonar.projectKey=html -Dsonar.projectName=${JOB_NAME} -Dsonar.sources=.'}}stage("package"){steps{sh 'tar zcf /opt/web-${BUILD_ID}.tar.gz ./* --exclude=./git --exclude=jenkinsfile'}}stage("deploy"){steps{sh 'ssh 10.0.0.7 "cd /code/ && mkdir web-${BUILD_ID}"'sh 'scp /opt/web-${BUILD_ID}.tar.gz 10.0.0.7:/code/web-${BUILD_ID}'sh 'ssh 10.0.0.7 "cd /code/web-${BUILD_ID} && tar xf web-${BUILD_ID}.tar.gz && rm -rf web-${BUILD_ID}.tar.gz"'sh 'ssh 10.0.0.7 "cd /code && rm -rf html && ln -s web-${BUILD_ID} html"'}} } }


    完成后點擊提交改變

    在jenkins執行pipeline測試

    在sonar客戶端配置文件中需要配置 服務端的信息

    [root@jenkins conf]# pwd /usr/local/sonar/conf [root@jenkins conf]# cat sonar-scanner.properties #Configure here general information about the environment, such as SonarQube server connection details for example #No information about specific project should appear here#----- Default SonarQube server sonar.host.url=http://10.0.0.202:9000 sonar.login=f254aa77ea29dead6ac3f9990052cab3f3809918#----- Default source code encoding sonar.sourceEncoding=UTF-8

    配置完成在繼續執行pipeline

    參數化構建



    執行參數化構建

    腳本

    [root@jenkins scripts]# cat deploy.sh #!/bin/sh CODE_DIR="/var/lib/jenkins/workspace/devloy-job/" WEB_DIR="/code"get_code_tar(){cd $CODE_DIR && tar zcf /opt/web_${git_version}.tar.gz ./* }scp_code_web(){scp /opt/web_${git_version}.tar.gz 10.0.0.7:$WEB_DIR }code_tarxf(){ssh 10.0.0.7 "cd $WEB_DIR &&mkdir web_${git_version} && tar xf web_${git_version}.tar.gz -C web_${git_version} && rm -rf web_${git_version}.tar.gz"} ln_html(){ssh 10.0.0.7 "cd $WEB_DIR && rm -rf html && ln -s web_${git_version} html" }main(){get_code_tar;scp_code_web;code_tarxf;ln_html; } if [ "$deploy_env" == "deploy" ];then.#判斷如果版本已經發布過則退出if [ $GIT_COMMIT = $GIT_PREVIOUS_SUCCESSFUL_COMMIT ]thenecho "當前版本已經發布過不允許重復構建"exitelsemainfi elif [ "$deploy_env" == "rollback" ];thenln_html fi

    Jenkins創建Maven

    安裝maven

    在jenkins服務器執行 刪除maven rpm包解壓 [root@jenkins ~]# ll total 291048 -rw-r--r-- 1 root root 8491533 Aug 27 2018 apache-maven-3.3.9-bin.tar.gz [root@jenkins ~]# tar xf apache-maven-3.3.9-bin.tar.gz [root@jenkins ~]# mv apache-maven-3.3.9-bin.tar.gz /usr/local/mavenPATH變量添加mvn命令路徑 [root@jenkins ~]# tailf -1 /etc/profile export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sonar/bin/:/usr/local/maven/bin"

    使用mvn編譯代碼

    1. 上傳hellow word包 [root@jenkins ~]# ll drwxr-xr-x 5 root root 91 Aug 6 2019 hello-world-war [root@jenkins ~]# cd hello-world-war/ [root@jenkins hello-world-war]# #mvn package 打包 #mvn clean 清除上一次的打包編譯 [root@jenkins hello-world-war]# mvn package ...........執行成功


    執行成功后會看到 jar包

    [root@jenkins hello-world-war]# ll target/ total 4 -rw-r--r-- 1 root root 2402 Aug 11 15:02 hello-world-war-1.0.0.war

    安裝tomcat

    10.0.0.7:安裝jdk和tomcat
    1.下載tomcat

    [root@test ~]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz --no-check-certificate

    2.將war包放入ROOT代碼目錄

    [root@jenkins hello-world-war]# scp target/hello-world-war-1.0.0.war 10.0.0.7:/usr/local/tomcat/webapps/ROOT hello-world-war-1.0.0.war 100% 2402 2.5MB/s 00:00

    3.啟動tomcat

    [root@test ~]# /usr/local/tomcat/bin/startup.sh

    4.訪問10.0.0.7:8080

    代碼集成到jenkins

    1.上傳java代碼到gitlab
    上傳java代碼到10.0.0.200
    2.在gitlab上創建java項目
    自己在gitlab創建一個名稱為java的項目 屬于test組
    3. 設置遠程倉庫 將代碼推送到gitlab java項目

    [root@gitlab ~]# cd hello-world-war/ [root@gitlab hello-world-war]# git remote remove origin [root@gitlab hello-world-war]# git remote add origin git@gitlab.ahui.com:test/java.git [root@gitlab hello-world-war]# git push -u origin master Counting objects: 37, done. Compressing objects: 100% (24/24), done. Writing objects: 100% (37/37), 4.48 KiB | 0 bytes/s, done. Total 37 (delta 8), reused 0 (delta 0) To git@gitlab.ahui.com:test/java.git* [new branch] master -> master Branch master set up to track remote branch master from origin.

    2.jenkins創建項目拉取代碼并執行mvn編譯

    創建后在全局工具配置maven的家目錄

    修改maven的默認倉庫

    將配置粘貼到配置文件中的第158行的下面
    /usr/local/maven/conf/settings.xml

    <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>---------------------------------------------------------------------------- [root@jenkins conf]# cd /usr/local/maven/conf/ [root@jenkins conf]# vim settings.xml 157 </mirror> 158 --> 159 <mirror> 160 <id>nexus-aliyun</id> 161 <mirrorOf>*</mirrorOf> 162 <name>Nexus aliyun</name> 163 <url>http://maven.aliyun.com/nexus/content/groups/public</url> 164 </mirror> 165 </mirrors> 166 167 <!-- profiles

    命令行測試mvn

    [root@jenkins ~]# cd hello-world-war/ [root@jenkins hello-world-war]# mvn package #查看走的是阿里云的maven倉庫 Downloading: http://maven.aliyun.com/nexus/content/groups/public/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar Downloaded: http://maven.aliyun.com/nexus/content/groups/public/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar (0 B at 0.0 KB/sec)

    安裝nexus私服

    [root@nexus ~]# ll total 286068 -rw-r--r-- 1 root root 170023183 Aug 14 2018 jdk-8u181-linux-x64.rpm -rw-r--r-- 1 root root 122904706 Aug 22 2018 nexus-3.13.0-01-unix.tar.gz [root@nexus ~]# tar xf nexus-3.13.0-01-unix.tar.gz [root@nexus ~]# ll total 286068 -rw-r--r-- 1 root root 170023183 Aug 14 2018 jdk-8u181-linux-x64.rpm drwxr-xr-x 9 root root 163 Aug 11 15:44 nexus-3.13.0-01 -rw-r--r-- 1 root root 122904706 Aug 22 2018 nexus-3.13.0-01-unix.tar.gz drwxr-xr-x 3 root root 20 Aug 11 15:44 sonatype-work [root@nexus ~]# mv nexus-3.13.0-01 /usr/local/nexus啟動nexus [root@nexus ~]# cd /usr/local/nexus/bin/ [root@nexus bin]# ll [root@nexus bin]# ./nexus start

    登錄nexus

    http://10.0.0.203:8081/
    默認用戶名: admin
    默認密碼: admin123

    配置maven

    將/usr/local/maven/conf/settings.xml備份
    將settings.xml復制到/usr/local/maven/conf
    IP地址修改成自己nexus服務器的地址

    配置jenkins的集群

    安裝部署基礎環境

    第一步: 把10.0.0.8作為jenkins的從節點
    安裝 jdk

    安裝 git

    10.0.0.8和10.0.0.7做免秘鑰(需要推送代碼到7)

    [root@web02 ~]# ssh-copy-id -i .ssh/id_rsa.pub 10.0.0.7

    將jenkins的sonar客戶端目錄拷貝到10.0.0.8

    [root@jenkins ~]# scp -r /usr/local/sonar/ 10.0.0.8:/usr/local/

    將jenkins的maven目錄拷貝到10.0.0.8

    [root@jenkins ~]# scp -r /usr/local/maven/ 10.0.0.8:/usr/local/

    創建腳本目錄

    [root@web02 ~]# mkdir -p /server/scripts [root@jenkins ~]# scp /server/scripts/* 10.0.0.8:/server/scripts/

    做 hosts解析

    [root@web02 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.200 gitlab.ahui.com

    第二步: jenkins服務器和從節點10.0.0.8做免秘鑰

    [root@jenkins ~]# ssh-copy-id -i .ssh/id_rsa.pub 10.0.0.8

    第三步: 將10.0.0.8從節點的公鑰放到gitlab的root賬號下 擁有下載代碼的權限

    [root@web02 ~]# ssh-keygen [root@web02 ~]# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0qPazNGJ+PsJk5109Zn7qEnlnZ+sipEUKJn4oS2AYMxMPvHacgRtzEyNI35rOVKPb6G/N5dF+F+SwHfCHz2/mIrTmVkvBCTROHQ4EhTReR9BdW9y0Eo1S9fmI7zoBchqH0SJQRazoVuhmxWkDhwLAQ93IDMm1eMKFZgxpXXoxy0e7FBOcH+xWwd4OmrYWgp0SQOXgZcQRegeRcLNJp2+sBFwwEGxPCUgl7lgUokAaICRpNpmZgXwnIcqYt0b5Zfgefej0yNnIMnioYIWwTkSfvU+3LmYa92ibBWRFxMVlTnTiIYa7cUP5tNqT+hMYg+M7ukTICT82O3g0ObpETB57 root@web02

    添加節點


    配置從節點SSH連接方式

    添加jenkins的私鑰

    添加客戶端的工具位置

    總結

    以上是生活随笔為你收集整理的持续集成/持续部署(3)Jenkins(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文在线а√天堂官网 | 免费欧美日韩 | 日本伊人色 | 爽爽影院在线免费观看 | av生活片| jizzjizz日本免费视频 | 麻豆传媒在线免费 | 国产区二区 | 97精品人人a片免费看 | 夜夜骑夜夜操 | 88xx成人永久免费观看 | 久久国产精品影院 | 欧美天堂网站 | 中文字幕人成乱码熟女香港 | 狠狠干夜夜草 | 国内精品人妻无码久久久影院蜜桃 | 极品尤物魔鬼身材啪啪仙踪林 | 黄色一级淫片 | 日韩高清欧美 | 国产一区二区视频播放 | 亚洲精品天堂在线 | 91精品福利在线 | 欧美日韩在线视频一区二区 | av在线网址大全 | 人妻精品一区二区在线 | 韩国无码av片在线观看网站 | 中文人妻熟女乱又乱精品 | 九一在线观看免费高清视频 | 黑人玩弄人妻一区二区绿帽子 | 涩涩视频免费 | 香蕉视频一区二区 | 久久综合高清 | 黄色视屏在线免费观看 | 久久精品国产网红主播 | 妞干网这里只有精品 | 欧美性大战久久久久久 | 另类专区欧美 | 精品成人av| 激情婷 | 在线观看亚洲a | 大色综合 | 色婷婷国产 | 国产内射老熟女aaaa∵ | 欧美岛国国产 | 亚洲熟妇av乱码在线观看 | 网站在线看 | 免费观看毛片网站 | 亚洲性生活 | 中文字幕国产视频 | 天美视频在线观看 | 在线视频福利 | 小镇姑娘高清播放视频 | 韩日一级片 | 成人国产精品免费观看视频 | 老熟妻内射精品一区 | 日韩欧美大陆 | 1024福利 | 欧美大肚乱孕交hd孕妇 | 最近的中文字幕在线看视频 | 小说肉肉视频 | 91肉色超薄丝袜脚交一区二区 | 精品久久蜜桃 | 国产精品无码白浆高潮 | 影音先锋美女 | 免费成人av片 | 亚洲最大综合网 | 天天色综合天天 | 亚洲欧洲日韩综合 | 超碰超碰超碰超碰超碰 | 国产wwwxxx| 久久亚洲AV无码精品 | 国产伦精品一区二区三区千人斩 | 草草影院在线免费观看 | 国产女人呻吟高潮抽搐声 | 青青青在线视频观看 | 欧美成人一二三区 | 天天操天天干天天爱 | 国产精品一区二区三区线羞羞网站 | 亚洲欧美一区二区视频 | 久操影视 | 午夜宫| 精品蜜桃一区二区三区 | 一级看片免费视频 | 狼性av懂色av禁果av | 日韩精品在线免费观看 | 成人短视频在线观看 | 欧美视频一区二区在线观看 | 亚洲精品二区 | 亚洲精品视频免费在线观看 | 免费一级片网址 | 男女日批网站 | 青青青在线免费观看 | 怨女1988国语版在线观看高清 | 一区二区精品视频在线观看 | 91黄色片 | 国产精品欧美性爱 | 日韩一级片在线观看 | 上原亚衣av一区二区三区 | 国产精品日韩精品欧美精品 |