<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      一、前言

      Jenkins是一款開源 CI&CD 軟件,用于自動(dòng)化各種任務(wù),包括構(gòu)建、測(cè)試和部署軟件。Jenkins 支持各種運(yùn)行方式,可通過系統(tǒng)包、Docker
      或者通過一個(gè)獨(dú)立的 Java 程序。
      Jenkins是一個(gè)廣泛用于持續(xù)構(gòu)建的可視化Web工具,持續(xù)構(gòu)建就是將項(xiàng)目自動(dòng)化編譯、打包、部署。通過規(guī)范化來完成,簡(jiǎn)單,繁瑣,浪費(fèi)時(shí)間的重復(fù)工作。

      ?Jenkins名言:構(gòu)建偉大,無(wú)所不能!?
      Jenkins用戶手冊(cè)傳送門:https://jenkins.io/zh/doc/ <https://jenkins.io/zh/doc/>

      二、發(fā)布流程



      ?工作詳細(xì)流程:



      三、環(huán)境準(zhǔn)備

      服務(wù)器角色 IP地址 主機(jī)名 運(yùn)行服務(wù) 系統(tǒng)版本
      ?Jenkins/Docker ?192.168.115.21 ?jenkins
      安裝Docker、Tomcat運(yùn)行Jenkins、Git客戶端、JDK、Maven CentOS 7.4?
      ?Git/Registry ?192.168.115.22 ?git ?安裝Docker、Git服務(wù)、Registry私有倉(cāng)庫(kù)容器 ?CentOS 7.4
      ?Docker ?192.168.115.23 ?docker ?安裝Docker、拉取Tomcat鏡像運(yùn)行Java項(xiàng)目 ?CentOS 7.4
      四、部署思路梳理



      五、三臺(tái)機(jī)器上操作

      i. 配置好yum源安裝必要的一些系統(tǒng)工具
      [root@jenkins ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
      ?ii. 添加軟件源信息
      [root@jenkins ~]# yum-config-manager --add-repo http://
      mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      iii. 更新并安裝 Docker-CE
      [root@jenkins ~]# yum makecache fast [root@jenkins ~]# yum -y install docker-ce
      iv. 開啟Docker服務(wù)
      [root@jenkins ~]# systemctl start docker [root@jenkins ~]# systemctl enable
      docker
      v. 檢查docker版本



      注:以上步驟三臺(tái)服務(wù)器都需要同樣的操作。

      六、Git機(jī)器上操作

      6.1、部署Git倉(cāng)庫(kù),Git機(jī)器上操作

      i. 安裝Git
      [root@git ~]# yum install git -y
      ii. 創(chuàng)建Git用戶和設(shè)置密碼
      [root@git ~]# useradd git [root@git ~]# passwd git Changing password for user
      git. New password:******* BAD PASSWORD: The password is shorter than 8
      characters Retypenew password: ******* passwd: all authentication tokens
      updated successfully.
      iii. 創(chuàng)建倉(cāng)庫(kù)
      [root@git ~]# su - git [git@git ~]$ mkdir test-jenkins.git [git@git ~]$ cd
      test-jenkins.git/ [git@git test-jenkins.git]$ git --bare init Initialized empty
      Git repositoryin /home/git/test-jenkins.git/
      6.2、訪問Git倉(cāng)庫(kù)測(cè)試,Jenkins機(jī)器上操作

      i. 安裝Git客戶端
      [root@jenkins ~]# yum install git -y
      ii. 生成公鑰,拷貝到Git服務(wù)器
      [root@jenkins ~]# ssh-keygen -t rsa // 三個(gè)回車 [root@jenkins ~]# ssh-copy-id git@
      192.168.115.22 // 注意是git用戶
      iii. 拉取Git項(xiàng)目測(cè)試
      [root@jenkins ~]# git clone [email protected]:/home/git/test-jenkins.git
      Cloning into'test-jenkins'... warning: You appear to have cloned an empty
      repository.
      6.3、部署Docker私有倉(cāng)庫(kù),Git機(jī)器上操作

      i. 創(chuàng)建Registry容器
      [root@git ~]# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000
      --restart=always --name rregistry registry
      ii. 檢查Registry容器狀態(tài),已經(jīng)成功啟動(dòng)了



      七、Docker機(jī)器上操作

      i. 配置私有倉(cāng)庫(kù)
      [root@docker ~]# cat /etc/docker/daemon.json {"registry-mirrors": ["
      http://abcd1234.m.daocloud.io"], "insecure-registries": [ "192.168.115.22:5000"
      ]}
      注:第2行是192.168.115.22 Docker私有倉(cāng)庫(kù)地址。

      ii. 重啟Docker服務(wù)
      [root@docker ~]# systemctl restart docker
      iii. 配置JDK
      JDK1.8下載:
      https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

      <https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html>
      [root@docker ~]# tar zxvf jdk-8u221-linux-x64.tar.gz [root@docker ~]# mv jdk1.8
      .0_221/ /usr/local/jdk
      iv. 構(gòu)建Tomcat基礎(chǔ)鏡像
      [root@docker ~]# cat Dockerfile # 基礎(chǔ)鏡像 FROM centos:7 # 維護(hù)者信息 MAINTAINER test-
      Jenkins # Tomcat版本 ENV VERSION=8.5.45 # jdk目錄 ENV JAVA_HOME /usr/local/jdk #
      安裝wget命令 RUN yum install wget-y # 下載Tomcat RUN wget http://
      mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz
      && \ # 解壓tomcat tar zxf apache-tomcat-${VERSION}.tar.gz && \ # 移動(dòng)解壓出來的tomcat文件
      mv apache-tomcat-${VERSION} /usr/local/tomcat-jenkins && \ # 刪除不需要的文件,減輕容器體積 rm
      -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat-jenkins/webapps/* && \ #
      創(chuàng)建ROOT,tomcat默認(rèn)目錄 mkdir /usr/local/tomcat-jenkins/webapps/ROOT # 映射端口 EXPOSE
      8080 # 啟動(dòng)tomcat CMD ["/usr/local/tomcat-jenkins/bin/catalina.sh", "run"]
      v. 構(gòu)建鏡像上傳Registry倉(cāng)庫(kù)
      [root@docker ~]# docker build -t 192.168.115.22:5000/tomcat-jenkins -f
      Dockerfile .
      vi. 推送到鏡像倉(cāng)庫(kù)
      [root@docker ~]# docker push 192.168.115.22:5000/tomcat-jenkins
      vii. 驗(yàn)證是否上傳Registry鏡像倉(cāng)庫(kù)
      [root@docker ~]# curl -XGET http://192.168.115.22:5000/v2/_catalog {"
      repositories":["tomcat-jenkins"]}
      八、Jenkins機(jī)器上操作

      8.1、配置私有倉(cāng)庫(kù)、Git、JDK、Maven

      i. 配置私有倉(cāng)庫(kù)
      [root@docker ~]# cat /etc/docker/daemon.json {"registry-mirrors": ["
      http://abcd1234.m.daocloud.io"], "insecure-registries": [ "192.168.115.22:5000"
      ]} 重啟Docker服務(wù): [root@docker~]# systemctl restart docker
      注:第2行是192.168.115.22 Docker私有倉(cāng)庫(kù)地址。

      ii. 安裝JDK?
      JDK1.8下載:
      https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

      <https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html>
      [root@jenkins ~]# tar zxvf jdk-8u221-linux-x64.tar.gz [root@jenkins ~]# mv
      jdk1.8.0_221/ /usr/local/jdk
      iii. 配置JDK
      [root@jenkins ~]# vim /etc/profile
      --------------------添加環(huán)境變量--------------------- JAVA_HOME=/usr/local/jdk PATH
      =$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/
      tools.jar export JAVA_HOME PATH CLASSPATH
      iv. 更新系統(tǒng)環(huán)境變量
      [root@jenkins ~]# source /etc/profile
      v. 驗(yàn)證
      [root@jenkins ~]# java -version
      vi. 安裝Maven?
      Maven下載連接:http://maven.apache.org/download.cgi
      <http://maven.apache.org/download.cgi>
      [root@jenkins ~]# tar zxvf apache-maven-3.6.1-bin.tar.gz [root@jenkins ~]# mv
      apache-maven-3.6.1 /usr/local/maven
      8.2、安裝Jenkins和Tomcat

      Jenkins下載鏈接:https://jenkins.io/zh/download/ <https://jenkins.io/zh/download/>?
      Tomcat下載鏈接:
      http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.45/bin/apache-tomcat-8.5.45.tar.gz

      <http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.45/bin/apache-tomcat-8.5.45.tar.gz>

      i. 解壓和拷貝Jenkins.war到Tomcat目錄下
      [root@jenkins ~]# tar zxvf apache-tomcat-8.5.45.tar.gz [root@jenkins ~]# mv
      apache-tomcat-8.5.45 /usr/local/tomcat-jenkins [root@jenkins ~]# rm -rf
      /usr/local/tomcat-jenkins/webapps/* [root@jenkins ~]# unzip jenkins.war -d
      /usr/local/tomcat-jenkins/ROOT
      ii. 啟動(dòng)Tomcat
      [root@jenkins ~]# /usr/local/tomcat-jenkins/bin/startup.sh
      8.3、配置Jenkins

      i. 訪問Jenkins(http://IP:8080 <http://ip:8080/>)



      ii. 獲取密碼
      [root@jenkins ~]# cat /var/jenkins_home/secrets/initialAdminPassword
      e3218946860a4e62b5b4808db0a7f2b6
      iii. 選擇插件的安裝(不熟悉的情況下推薦安裝即可,省得麻煩)



      iv. 創(chuàng)建用戶



      v. 配置Maven、jdk、git環(huán)境

      注:系統(tǒng)管理 —> ?全局工具配置,指定JDK、Maven路徑,Git保持默認(rèn)



      vi. Jenkins安裝必要插件

      注:系統(tǒng)管理 —> 管理插件(安裝SSH與Git Parameter插件)





      插件說明:
      SSH:用于SSH遠(yuǎn)程Docker主機(jī)執(zhí)行Shell命令; Git Parameter:動(dòng)態(tài)獲取Git倉(cāng)庫(kù)Branch、Tag;
      vii. 配置SSH插件



      viii. 輸入Docker主機(jī)的用戶名/密碼



      ix. 添加SSH遠(yuǎn)程主機(jī)





      注:記得點(diǎn)擊左下角“保存”按鈕。

      九、上傳JAVA項(xiàng)目代碼到Git倉(cāng)庫(kù)

      先下載并安裝git:https://git-scm.com/download/ <https://git-scm.com/download/>



      9.1、使用IDEA創(chuàng)建測(cè)試項(xiàng)目

      創(chuàng)建新項(xiàng)目:



      選擇Spring Initializr:本地提前配置好JDK環(huán)境和Maven環(huán)境



      選擇war:



      選擇Web —> Sping Web Starter:



      隨便起個(gè)項(xiàng)目名稱:



      來個(gè)簡(jiǎn)單的“Hello World”:



      代碼如下:
      package com.example.demo; import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication; import
      org.springframework.web.bind.annotation.RequestMapping; import
      org.springframework.web.bind.annotation.RestController; @RestController
      @SpringBootApplicationpublic class DemoApplication { public static void
      main(String[] args) { SpringApplication.run(DemoApplication.class, args); }
      @RequestMappingpublic String hello() { return "Hello Jenkins v1.0"; } }
      本地運(yùn)行測(cè)試項(xiàng)目:



      本地瀏覽器訪問測(cè)試:



      9.2、連接Git倉(cāng)庫(kù)上傳代碼

      i. 在IDEA中設(shè)置Git,在File-->Setting->Version Control-->Git-->Path to Git
      executable選擇你的git安裝后的git.exe文件,然后點(diǎn)擊Test,測(cè)試是否設(shè)置成功。



      ii. 選擇要上傳的項(xiàng)目



      iii. 將本項(xiàng)目添加到本地倉(cāng)庫(kù)

      注:我們?cè)陧?xiàng)目文件名上右鍵選擇 git,通過 add 添加到本地庫(kù)的跟蹤區(qū),再comment 正式提交到本地倉(cāng)庫(kù)。



      iv. 添加Git倉(cāng)庫(kù)地址



      v. 上傳代碼







      vi. 在Jenkins機(jī)器上下載項(xiàng)目驗(yàn)證是否上傳成功
      [root@jenkins ~]# git clone [email protected]:/home/git/test-jenkins.git
      [root@jenkins~]# cd test-jenkins/ [root@jenkins test-jenkins]# ls mvnw mvnw.cmd
      pom.xml src
      9.3、給項(xiàng)目添加Tag

      9.3.1、IDEA測(cè)試項(xiàng)目連接Git添加Tag

      i. 進(jìn)入Version Control-->log



      ii. 在之前版本中,右鍵,新建標(biāo)簽



      iii. Push標(biāo)簽

      注:由于不是在當(dāng)前最新版本打入的標(biāo)簽,push 時(shí)需要選擇 push tags (all),不然不能push。



      iv. 在Git倉(cāng)庫(kù)上查看Tag驗(yàn)證一下
      [root@git ~]# su - git [git@git ~]$ cd test-jenkins.git/ [git@git test-
      jenkins.git]$ git tag v1.0
      9.3.2、如果是直接上傳項(xiàng)目到Git倉(cāng)庫(kù),加Tag方法
      [root@git ~]# su - git [git@git ~]$ cd test-jenkins.git/ [git@git test-
      jenkins.git]$ git branch [git@git test-jenkins.git]$ git tag v1.0 [git@git test-
      jenkins.git]$ git tag v1.0
      額外補(bǔ)充刪除Tag:
      [git@git test-jenkins.git]$ git tag -d v1.0
      十、Jenkins發(fā)布測(cè)試

      10.1、配置Jenkins項(xiàng)目

      安裝Maven插件,構(gòu)建一個(gè)Maven項(xiàng)目:



      配置項(xiàng)目(新建任務(wù) -> 輸入任務(wù)名稱,構(gòu)建一個(gè)Maven項(xiàng)目)



      配置Git參數(shù)化構(gòu)建:



      動(dòng)態(tài)獲取Git倉(cāng)庫(kù)Tag,與用戶交互選擇Tag發(fā)布:



      指定項(xiàng)目Git倉(cāng)庫(kù)地址:

      注:修改*/master為$Tag,Tag是上面動(dòng)態(tài)獲取的變量名,表示根據(jù)用戶選擇打代碼版本。



      設(shè)置maven構(gòu)建命令選項(xiàng)(clean package -Dmaven.test.skip=true):



      Jenkins本機(jī)鏡像構(gòu)建和推送到私有鏡像倉(cāng)庫(kù):



      代碼如下:
      # 定義變量 REPOSITORY=192.168.115.22:5000/tomcat-jenkins:${Tag} # 開始構(gòu)建鏡像 cat >
      Dockerfile << EOF # 拉取私有倉(cāng)庫(kù)的鏡像 FROM 192.168.115.22:5000/tomcat-jenkins:latest #
      刪除Tomcat下不需要的ROOT項(xiàng)目 RUN rm-rf /usr/local/tomcat-jenkins/webapps/ROOT #
      將jenkins編譯好的war包拷貝到Tomcat目錄下 COPY target/*.war
      /usr/local/tomcat-jenkins/webapps/ROOT.war # 運(yùn)行Tomcat CMD
      ["/usr/local/tomcat-jenkins/bin/catalina.sh", "run"] EOF # 清除Jenkins主機(jī)舊的構(gòu)建鏡像
      docker image rm 192.168.115.22:5000/tomcat-jenkins:${Tag} # 構(gòu)建自定義鏡像 docker
      build -t $REPOSITORY . # 開始上傳鏡像 docker push $REPOSITORY
      SSH遠(yuǎn)程在Docker主機(jī)上執(zhí)行創(chuàng)建容器命令:



      代碼如下:
      # 定義變量 REPOSITORY=192.168.115.22:5000/tomcat-jenkins:${Tag} # 刪除之前容器和鏡像 docker
      rm-f tomcat-jenkins |true docker image rm $REPOSITORY |true # 開始部署容器 docker
      container run-d --name tomcat-jenkins -v /usr/local/jdk:/usr/local/jdk -p 80:
      8080 $REPOSITORY
      10.2、開始構(gòu)建

      點(diǎn)擊項(xiàng)目名稱 —> 選擇版本 —> 開始構(gòu)建



      查看構(gòu)建過程以及信息輸出:



      查看是否構(gòu)建成功:



      驗(yàn)證項(xiàng)目是否可以訪問:



      十一、后面再?gòu)U話兩句
      到此就簡(jiǎn)單體驗(yàn)了Jenkins+Docker+Git+
      Registry實(shí)現(xiàn)一套CI自動(dòng)化發(fā)布流程,本來打算Jenkins放在容器上運(yùn)行的,發(fā)現(xiàn)Jenkins容器里面需要Docker命令,但是比較繁瑣,也感覺沒必要好像,就直接采用方法一了。
      感興趣的可以通過以下方式實(shí)現(xiàn):- 不使用任何Jenkins鏡像,宿主機(jī)安裝Jenkins [宿主機(jī)有Docker服務(wù)] -
      不使用官方Jenkins鏡像,自己構(gòu)造帶有Docker服務(wù)的Jenkins鏡像- Docker-in-Docker [DinD] -
      Docker-outside-of-Docker [DooD] - 使用Jenkins的Docker插件
      注:如有問題請(qǐng)指點(diǎn)出來,非常感謝。?
      注:本文參考這篇博客,非常感謝博主:https://blog.51cto.com/lizhenliang/2159817
      <https://blog.51cto.com/lizhenliang/2159817>

      ?

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          日逼网站免费 | 欧美性猛交XXXXXX乱大交交 | 大鸡吧在线观看视频 | 中文字幕在线观看无码 | 日日小处女的骚逼 | 欧美5区 成人免费A片视频网站 | 大屌一区二区三区 | 毛片1| 亚洲成人网在线 | 好大老师好爽快点深一点漫画 |