目录

一、CI/CD

1、CI简介

2、CD简介

二、Jenkins

1、Jenkins概述

2、Jenkins目标

3、Jenkins特性

三、Jenkins部署

1、部署git(GIT官网 https://git-scm.com/ )

2、部署jdk

3、部署maven

4、部署Tomcat

5、部署Jenkins

6、管理插件(下面安装的插件会随着Jenkins的版本而有不同的情况)

7、检查错误配置

8、Jenkins系统设置

9、SSH设置

10、新建任务

11、构建任务


一、CI/CD

1、CI简介

 持续集成(Continuous Integration, CI): 代码合并,构建,部署,测试都在一起,不断地执行这个过程,并对结果反馈。

     

2、CD简介

持续部署(Continuous Deployment, CD): 部署到测试环境、预生产环境/灰度环境、生产环境。

持续交付(Continuous Delivery, CD): 将最终产品发布到生产环境、给用户使用。

二、Jenkins

1、Jenkins概述

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建的一些定时执行的任务。
Jenkins用Java语言编写,可在Tomcat等流行的容器中运行,也可独立运行。
jenkins通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT。jenkins构建工具有Maven、Ant、Gradle。

2、Jenkins目标

持续、自动地构建/测试软件项目。
监控软件开放流程,快速问题定位及处理,提高开发效率。

3、Jenkins特性

  • 易于安装:不需要安装、不需要数据库,只需要通过java -jar jenkins.war或部署到一个servlet容器中
  • 易于配置:所有配置都可能通过Jenkins提供的web界面完成,当然如果你喜欢,也可以通过手动修改.xml文件进行配置
  • 测试报告:生成JUnit或TestNG的测试报告,集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知
  • 文件识别:Jenkins能跟踪每次构建生成哪些jar包以及使用哪个版本的jar包
  • 分布式构建:支持Jenkins能够让多台计算机一起构建/测试
  • 插件支持:Jenkins可以通过第三方插件扩展,也可以根据团队需要开发插件

三、Jenkins部署

192.168.172.177 部署Jenkins

192.168.172.178 充当tomcat网站服务器

1、部署git(GIT官网 https://git-scm.com/ )

  • 安装依赖包

[root@localhost ~]# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

  • git官网下载最新版本GIT

//两种方法下载git //第一种: wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.37.4.tar.gz //第二种 下载git-2.37.4.tar.gz,然后再上传到虚拟机 [root@localhost ~]# rz -be [root@localhost ~]# ls anaconda-ks.cfg git-2.37.4.tar.gz

  • 安装git

//解压并切换目录 [root@localhost ~]# tar xf git-2.37.4.tar.gz [root@localhost ~]# cd git-2.37.4/ //编译源码包 [root@localhost git-2.37.4]# make prefix=/usr/local/git all //源码安装 [root@localhost git-2.37.4]# make prefix=/usr/local/git install //修改环境变量 [root@localhost git-2.37.4]# vim /etc/bashrc PATH=$PATH:$HOME/bin:/usr/local/git/bin //在最后追加此内容 [root@localhost git-2.37.4]# source /etc/bashrc //测试是否安装成功 [root@localhost git-2.37.4]# git --version git version 1.8.3.1

关于basherc和profile

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次!!!登录!!!时,该文件被执行。并从/etc/profile.d目录的配置文件中搜索shell的设置。

/etc/bashrc:为每一个运动bash shell的用户执行此文件。当bash shell被打开时,该文件被读取。

2、部署jdk

(下载地址 Java Archive Downloads - Java SE 8u211 and later

  • 下载软件

//我这里下载的是jdk-8u241-linux-x64.tar.gz,注意不能用jdk9和10的
//在Oracle官网下载之后,rz上传tar包就可以了

  • 解压安装

//解压到/usr/local下 [root@localhost ~]# tar xvzf jdk-8u241-linux-x64.tar.gz -C /usr/local/ [root@localhost ~]# cd /usr/local/ [root@localhost local]# ls bin etc games git include jdk1.8.0_241 lib lib64 libexec sbin share src //重命名 [root@localhost local]# mv jdk1.8.0_241 jdk [root@localhost local]# ls bin etc games git include jdk lib lib64 libexec sbin share src

  • 修改环境变量

[root@localhost local]# vim /etc/bashrc //追加以下内容 JAVA_HOME=/usr/local/jdk export PATH=$PATH:$JAVA_HOME/bin [root@localhost local]# source /etc/bashrc

  • 测试jdk

[root@localhost local]# java -version java version "1.8.0_241" Java(TM) SE Runtime Environment (build 1.8.0_241-b07) Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)


3、部署maven

  • 下载和解压Maven

[root@localhost ~]# wget https://mirrors.aliyun.com/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz [root@localhost ~]# tar xvzf apache-maven-3.5.4-bin.tar.gz -C /usr/local/ [root@localhost ~]# cd /usr/local/ [root@localhost local]# ls apache-maven-3.5.4 etc git jdk lib64 sbin src bin games include lib libexec share [root@localhost local]# mv apache-maven-3.5.4 maven [root@localhost local]# ls bin etc games git include jdk lib lib64 libexec maven sbin share src

  • 修改环境变量

[root@localhost local]# vim /etc/bashrc export M2_HOME=/usr/local/maven export M2=$M2_HOME/bin PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin export JAVA_HOME=/usr/local/jdk export PATH [root@localhost local]# source /etc/bashrc

  • 测试Maven

[root@localhost local]# mvn -version Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00) Maven home: /usr/local/maven Java version: 1.8.0_241, vendor: Oracle Corporation, runtime: /usr/local/jdk/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"


4、部署Tomcat

  • 官网下载tomcat

        //这里我是在阿里云镜像站下载的

[root@localhost ~]# wget https://mirrors.aliyun.com/apache/tomcat/tomcat-9/v9.0.68/bin/apache-tomcat-9.0.68.tar.gz

  • 解压部署

[root@localhost ~]# tar zxvf apache-tomcat-9.0.68.tar.gz -C /usr/local/ [root@localhost ~]# mv /usr/local/apache-tomcat-9.0.68/ /usr/local/tomcat [root@localhost ~]# ls /usr/local/ bin games include lib libexec sbin src etc git jdk lib64 maven share tomcat

  • 定义tomcat所需环境变量

//在/etc/profile或者/etc/bashrc里面写都可以 [root@localhost ~]# vim /etc/profile CATALINA_HOME=/usr/local/tomcat export CATALINA_HOME [root@localhost ~]# source /etc/profile

  • 启动tomcat

[root@localhost ~]# /usr/local/tomcat/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/jdk Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Using CATALINA_OPTS: Tomcat started.

  • 测试tomcat

http://192.168.172.177:8080/        注意关闭防火墙

jenkins 如何增量构建 配置 jenkins增量发布_jenkins


  • 关闭tomcat

[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/jdk Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Using CATALINA_OPTS:

  • 配置tomcat的角色和用户

本次用不到角色和用户,所以我就没有配置

//在tomcat目录conf文件夹下tomcat-users.xml <role rolename="manager-gui"/> <role rolename="admin"/> <role rolename="manager"/> <role rolename="manager-script"/> <user username="tomcat" password="tomcat" roles="manager-gui,admin,manager,manager-script"/>


5、部署Jenkins

//我这里是在阿里云镜像站下载的 [root@localhost ~]# wget https://mirrors.aliyun.com/jenkins/war/2.316/jenkins.war

  • 部署jenkins.war到tomcat下

[root@localhost ~]# cp jenkins.war /usr/local/tomcat/webapps/ [root@localhost ~]# ls /usr/local/tomcat/webapps/ docs examples host-manager jenkins.war manager ROOT

  • 启动tomcat,注意启动tomcat会自动解压webapps下的war包

[root@localhost ~]# /usr/local/tomcat/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/jdk Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Using CATALINA_OPTS: Tomcat started.

  • 登录Jenkins

我在登录Jenkins时遇到了报错,根据报错信息提示执行了下列操作再刷新成功进去了

[root@localhost ~]# vim /usr/local/tomcat/bin/startup.sh //在里面添加一行 export CATALINA_OPTS="-Djava.awt.headless=true" [root@localhost ~]# /usr/local/tomcat/bin/startup.sh

jenkins 如何增量构建 配置 jenkins增量发布_tomcat_02

http://192.168.172.177:8080/jenkins,会有一个加载过程,比较慢,稍微等一会会看到如下的界面

jenkins 如何增量构建 配置 jenkins增量发布_jenkins 如何增量构建 配置_03


jenkins 如何增量构建 配置 jenkins增量发布_jenkins 如何增量构建 配置_04


//根据提示,查看自己的密码 [root@localhost ~]# cat /root/.jenkins/secrets/initialAdminPassword 6b1e3bbfdff845aa864f3bf998bb3944

选择suggested的插件进行下载

等待安装完成

jenkins 如何增量构建 配置 jenkins增量发布_jenkins_05

 这里安装插件的时候如果有下载失败的,不要慌,记下名字后面再找它算账,看第6步管理插件

jenkins 如何增量构建 配置 jenkins增量发布_jenkins 如何增量构建 配置_06


创建用户,自己创建

jenkins 如何增量构建 配置 jenkins增量发布_tomcat_07

jenkins 如何增量构建 配置 jenkins增量发布_jenkins_08

 

jenkins 如何增量构建 配置 jenkins增量发布_tomcat_09

jenkins 如何增量构建 配置 jenkins增量发布_tomcat_10


欢迎界面

jenkins 如何增量构建 配置 jenkins增量发布_jenkins 如何增量构建 配置_11


Jenkins的密码如果忘记了可以重置它

/urs/local/tomcat/bin/shutdown.sh //关闭tomcat rm -rf /usr/local/tomcat/webapps/jenkins* rm -rf ~/.jenkins* cp jenkins.war /usr/local/tomcat/webapps/ 启动tomcat即可访问Jenkins


6、管理插件(下面安装的插件会随着Jenkins的版本而有不同的情况)

简介:我们配置的是git+maven方式的自动化部署,所以git和manven的相关插件是必须的,还有一个ssh用于机器间的文件传送。


前面如果有下载失败的插件,在插件管理中搜名字,安装就可以了。

  • 安装插件Deploy to container

        作用:支持自动化将代码部署到tomcat容器

        安装过程

jenkins 如何增量构建 配置 jenkins增量发布_jenkins_12

jenkins 如何增量构建 配置 jenkins增量发布_jenkins_13

jenkins 如何增量构建 配置 jenkins增量发布_jenkins_14

或者点击Install without restart,会出现下面的界面

jenkins 如何增量构建 配置 jenkins增量发布_jenkins 如何增量构建 配置_15



  • 安装插件Maven Intergration

jenkins 如何增量构建 配置 jenkins增量发布_运维_16


  • 安装git相关3个插件

jenkins 如何增量构建 配置 jenkins增量发布_tomcat_17

jenkins 如何增量构建 配置 jenkins增量发布_运维_18


  • 安装插件:Publish Over SSH

jenkins 如何增量构建 配置 jenkins增量发布_tomcat_19

 插件都安装好之后重启一下Jenkins

 

jenkins 如何增量构建 配置 jenkins增量发布_Jenkins_20

7、检查错误配置

点击“系统管理”

如果有“编码问题”错误,在tomcat-->conf-->server.xml文件中修改即可

如果有“反向代理设置有误”错误,请忽略

8、Jenkins系统设置

jenkins 如何增量构建 配置 jenkins增量发布_Jenkins_21

  •  配置jdk目录

jenkins 如何增量构建 配置 jenkins增量发布_运维_22



  • 配置maven并保存

jenkins 如何增量构建 配置 jenkins增量发布_Jenkins_23


9、SSH设置

目的:Jenkins服务器上的maven将开发产生的*.war包通过SSH自动推送到远程tomcat服务器上,需要手工配置ssh key,配合自动化推送。

  • 在Jenkins服务器准备密钥认证

[root@localhost ~]# ssh-keygen //按三次回车即可 [root@localhost ~]# ssh-copy-id -i 192.168.172.178 [root@localhost ~]# ssh 192.168.172.178 Last login: Mon Oct 24 07:35:55 2022 from 192.168.172.1 [root@localhost ~]# ip a | grep inet inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host inet 192.168.172.178/24 brd 192.168.172.255 scope global noprefixroute dynamic ens33 inet6 fe80::73ad:d1bd:7f45:d790/64 scope link tentative noprefixroute dadfailed inet6 fe80::ca34:eb06:7b9e:45e1/64 scope link noprefixroute [root@localhost ~]# exit logout Connection to 192.168.172.178 closed.

  • 在Jenkins上配置ssh信息

//准备密钥,粘贴到Jenkins系统 [root@localhost ~]# cat ~/.ssh/id_rsa -----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAuTCqOyyqFleOzOhp+MDHi4cRwuwKusYQhiyDyQxxRVeSB3Rp G5uVd4CHwyTLzJp8ifwSgdzN6y4hsSpkPQ08JbPTpxgRqOjAum8qajDB66haeV5l GhAtg+awXKop8hQy9HZZdurI9JDGihUz9/Cjt2xYV+qkvQ5M7K8tsmFmdQjJbv/L ZXz9goGAY0dA1dYdCcqcJcWVCjTxKNOwEnujZxGLmmHkVFdobiWHtqqbmb2/DZyd KH085ohmtIhYyeIINcjFPrMWgW8Uk3u6mNt0rxnyyWPhsvWoVmX8rcIiB5zQ5lcm fciVbBs5NhSFfGWSHHHur6tFGWHPkyWySCgPFwIDAQABAoIBAB7CzKQDqUUIyjmT KXceXob4qqScHLQljj0bS9Crdm00PJdsaMEjONKe0O5DQG7+Ak3RRym3CaVVBlet WPUjK6h/lFqfDt/luY2+RWdaLfv8/PpICbcolMbiHM1nnowNeuFMf1PXcAXfvnrV RsqaeDdRkeMYoMCejXyLJKYKs8Agqwh3UjMIuhlF8KSUshfKpmn7zt2cmrpOO7pv sHM+VSKBWG4uRZEs2vgl8Fi3SMWnlj6YGOJxSSrXLV9cGJGfqT0dlqrP+z7cajVK +xNxSkr2v8cDGDJOB1nZZrz+r96DQVoscSqhsve0XS6D1Uf0VbrCyXPbzqWri0u1 bVb0f2ECgYEA6EuW9sReq2ooWF92LVQe03vRsz998+y3tm0lm96G63SCSsqsCaFC Zo+GUog3oYkF2484uMFfTu7fDRAitMc6Mblb/V3yV/K8pmtN/3KrucstBhB04aAN wptJA3ViDGDENUyxEkeVb9DdopnbrzjQiDpR8AUoBu0DN1BnHg1LnHkCgYEAzBaD n6l38FBRBYcN06vvHEtGQkaRjpwgSqlZ0nngG/d8myw1IZdSnfK7CiGGFY62Anvv u7TnwcDoOmZTfNasqXURfrt809fvaCTDqci5NqC87whaBMqQYJVsEasCC6cOClQ7 qLdg92MZWib+AO2FYlOOYD5+216YnFK3+EKIBA8CgYBIu6JBEasysMKBKSKvfq9I OHSoUzD0tyGulO45p6tG/evtzxeezEcmJbpBDTWd9nFHFckE0EcvR8u/I1Y6lEa8 WvVal5fRwccftGlvmk/6lIs8Ytq16o9kZ4qs8owIpCPLLIAk4RUBNbyvtMz8SCXD Ab+2D2dBA+UF5L7kwfTywQKBgBttyzLiK+R4Zus/Q3R3XyOGWmL96QIpqY1fRVss VhpsIKsaPenN1KS1wr2R09uB2qRq08V+gsdfjdaLeh0FHR+JRFisChLOqrZsen+P IpVc9QeLL84FC3Jvop6dRSEbyp9IwtviCX42K2oaY3jsc0jLwg7dV19UT15zH5aW GoGxAoGAWGuRKYgLqfUoklJT1hC86kgrzTXg32mVkJpBLCZlLvJKjyhEUtE3gS6e PUGB5alrn4ojcemiqtQfufCxgfDGNF9SaQdJVnnRZ3iGNBHhlw1BXnFBsPxa4HuU q4ii/FfJsbxYqoXvKsqr8DQVSxDnC/XDViBRXFb8Gc/Qze2ZEME= -----END RSA PRIVATE KEY-----

jenkins 如何增量构建 配置 jenkins增量发布_jenkins_24

jenkins 如何增量构建 配置 jenkins增量发布_jenkins 如何增量构建 配置_25

 

jenkins 如何增量构建 配置 jenkins增量发布_运维_26



10、新建任务

  • 创建任务

jenkins 如何增量构建 配置 jenkins增量发布_jenkins_27


  • 定义名称和类型

jenkins 如何增量构建 配置 jenkins增量发布_jenkins 如何增量构建 配置_28


  • 设置Maven

两种方法:公有git仓库和私有git仓库,我用的是共有git仓库的方法

设置描述

jenkins 如何增量构建 配置 jenkins增量发布_jenkins 如何增量构建 配置_29

选择版本控制器和仓库地址

jenkins 如何增量构建 配置 jenkins增量发布_jenkins_30


设置触发器(保持默认)

jenkins 如何增量构建 配置 jenkins增量发布_jenkins_31


设置构建(编译打包)

jenkins 如何增量构建 配置 jenkins增量发布_jenkins 如何增量构建 配置_32


构建后操作

jenkins 如何增量构建 配置 jenkins增量发布_jenkins 如何增量构建 配置_33

 

jenkins 如何增量构建 配置 jenkins增量发布_jenkins_34

保存


11、构建任务

jenkins 如何增量构建 配置 jenkins增量发布_jenkins 如何增量构建 配置_35

构建任务完成之后可以去192.168.172.178 充当tomcat网站的服务器上去查看war包是否下载好

ls /jenkins/war/