Jenkins持续化继承持续化发布

目录

一、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/        注意关闭防火墙

  • 关闭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

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

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

选择suggested的插件进行下载

等待安装完成

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

创建用户,自己创建

 

欢迎界面

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容器

        安装过程

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

  • 安装插件Maven Intergration

  • 安装git相关3个插件

  • 安装插件:Publish Over SSH

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

 

7、检查错误配置

点击“系统管理”

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

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

8、Jenkins系统设置

  •  配置jdk目录

  • 配置maven并保存

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-----

 

10、新建任务

  • 创建任务

  • 定义名称和类型

  • 设置Maven

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

设置描述

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

设置触发器(保持默认)

设置构建(编译打包)

构建后操作

 

保存

11、构建任务

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

ls /jenkins/war/

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值