Jenkins持续集成,原来那么简单

1、持续基础介绍

(1)软件开发生命周期
软件开发生命周期又叫做SDLC(Software Development Life Cycle),它是集合了计划、开发、测试和部署过程的集合。如下图所示 :
需求
在这里插入图片描述

  • 需求分析
    这是生命周期的第一阶段,根据项目需求,团队执行一个可行性计划的分析。项目需求可能是公司内部或者客户提出的。这阶段主要是对信息的收集,也有可能是对现有项目的改善和重新做一个新的项目。还要分析项目的预算多长,可以从哪方面受益及布局,这也是项目创建的目标。

  • 设计
    第二阶段就是设计阶段,系统架构和满意状态(就是要做成什么样子,有什么功能),和创建一个

  • 项目
    计划。计划可以使用图表,布局设计或者文者的方式呈现。

  • 实现
    优势劣势简单易用和理解各个阶段的划分完全固定,阶段之间产生大量的文档,极大地
    增加了工作量。当前一阶段完成后,您只需要去关注后续阶段。由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。为项目提供了按阶段划分的检查节点瀑布模型的突出缺点是不适应用户需求的变化。
    第三阶段就是实现阶段,项目经理创建和分配工作给开者,开发者根据任务和在设计阶段定义的目标进行开发代码。依据项目的大小和复杂程度,可以需要数月或更长时间才能完成。

  • 测试
    测试人员进行代码测试 ,包括功能测试、代码测试、压力测试等。

  • 进化
    最后进阶段就是对产品不断的进化改进和维护阶段,根据用户的使用情况,可能需要对某功能进行修改,bug修复,功能增加等。

软件开发瀑布模型
瀑布模型是最著名和最常使用的软件开发模型。瀑布模型就是一系列的软件开发过程。它是由制造业繁衍出来的。一个高度化的结构流程在一个方向上流动,有点像生产线一样。在瀑布模型创建之初,没有其它开发的模型,有很多东西全靠开发人员去猜测,去开发。这样的模型仅适用于那些简单的软件开发, 但是已经不适合现在的开发了。
下图对软件开发模型的一个阐述。
在这里插入图片描述
在这里插入图片描述
软件的敏捷开发
什么是敏捷开发?

敏捷开发(Agile Development) 的核心是迭代开发(Iterative Development) 与 增量开发
(Incremental Development) 。
何为迭代开发?
对于大型软件项目,传统的开发方式是采用一个大周期(比如一年)进行开发,整个过程就是一次"大开发";迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开发",每次小开发都是同样的流程,所以看上去就好像重复在做同样的步骤。
举例来说,SpaceX 公司想造一个大推力火箭,将人类送到火星。但是,它不是一开始就造大火箭,而是先造一个最简陋的小火箭 Falcon 1。结果,第一次发射就爆炸了,直到第四次发射,才成功进入轨道。然后,开发了中型火箭 Falcon 9,九年中发射了70次。最后,才开发 Falcon 重型火箭。如果SpaceX 不采用迭代开发,它可能直到现在还无法上天。
何为增量开发?
软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。
举例来说,房产公司开发一个10栋楼的小区。如果采用增量开发的模式,该公司第一个迭代就是交付一号楼,第二个迭代交付二号楼…每个迭代都是完成一栋完整的楼。而不是第一个迭代挖好10栋楼的地基,第二个迭代建好每栋楼的骨架,第三个迭代架设屋顶…
敏捷开发如何迭代?
虽然敏捷开发将软件开发分成多个迭代,但是也要求,每次迭代都是一个完整的软件开发周期,必须按照软件工程的方法论,进行正规的流程管理。
在这里插入图片描述
敏捷开发有什么好处?
早期交付

敏捷开发的第一个好处,就是早期交付,从而大大降低成本。 还是以上一节的房产公司为例,如果按照传统的"瀑布开发模式",先挖10栋楼的地基、再盖骨架、然后架设屋顶,每个阶段都等到前一个阶段完成后开始,可能需要两年才能一次性交付10栋楼。也就是说,如果不考虑预售,该项目必须等到两年后才能回款。 敏捷开发是六个月后交付一号楼,后面每两个月交付一栋楼。因此,半年就能回款10%,后面每个月都会有现金流,资金压力就大大减轻了。
降低风险
敏捷开发的第二个好处是,及时了解市场需求,降低产品不适用的风险。 请想一想,哪一种情况损失比较小:10栋楼都造好以后,才发现卖不出去,还是造好第一栋楼,就发现卖不出去,从而改进或停建后面9栋楼?
什么是持续集成
持续集成( Continuous integration , 简称 CI )指的是,频繁地(一天多次)将代码集成到主干。
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
通过持续集成, 团队可以快速的从一个功能到另一个功能,简而言之,敏捷软件开发很大一部分都要归功于持续集成。
持续集成的流程
在这里插入图片描述

根据持续集成的设计,代码从提交到生产,整个过程有以下几步。

  • 提交

流程的第一步,是开发者向代码仓库提交代码。所有后面的步骤都始于本地代码的一次提交
(commit)。

  • 测试(第一轮)

代码仓库对commit操作配置了钩子(hook),只要提交代码或者合并进主干,就会跑自动化测试。

  • 构建

通过第一轮测试,代码就可以合并进主干,就算可以交付了。
交付后,就先进行构建(build),再进入第二轮测试。所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片)等等。

  • 测试(第二轮)

构建完成,就要进行第二轮测试。如果第一轮已经涵盖了所有测试内容,第二轮可以省略,当然,这时构建步骤也要移到第一轮测试前面。

  • 部署

过了第二轮测试,当前代码就是一个可以直接部署的版本(artifact)。将这个版本的所有文件打包(
tar filename.tar * )存档,发到生产服务器。

  • 回滚

一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。
持续集成的组成要素

  • 一个自动构建过程, 从检出代码、 编译构建、 运行测试、 结果记录、 测试统计等都是自动完成 的, 无需人工干预。
  • 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,一般 使用SVN或Git。
  • 一个持续集成服务器, Jenkins 就是一个配置简单和使用方便的持续集成服务器。
    在这里插入图片描述

持续集成的好处
1、降低风险,由于持续集成不断去构建,编译和测试,可以很早期发现问题,所以修复的代价就少;
2、对系统健康持续检查,减少发布风险带来的问题;
3、减少重复性工作;
4、持续部署,提供可部署单元包;
5、持续交付可供使用的版本;
6、增强团队信心;

2、Jenkins介绍

在这里插入图片描述

Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。

官网: http://jenkins-ci.org/。

Jenkins的特征:

  • 开源的Java语言开发持续集成工具,支持持续集成,持续部署。
  • 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可 方便web界面配置管理。
  • 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。
  • 分布式构建:支持Jenkins能够让多台计算机一起构建/测试。
  • 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
  • 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven, docker等。

3、Jenkins安装和持续集成环境配置

持续集成流程说明
在这里插入图片描述

3.1 Centos7安装gitlab

在这里插入图片描述

官网: https://about.gitlab.com/

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。

(1) 安装相关依赖

yum -y install policycoreutils openssh-server openssh-clients postfix

(2)启动ssh服务&设置为开机启动

systemctl enable sshd && sudo systemctl start sshd

(3)设置postfix开机自启,并启动,postfix支持gitlab发信功能

systemctl enable postfix && systemctl start postfix

(4) 开放ssh以及http服务,然后重新加载防火墙列表

firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

如果关闭防火墙就不需要做以上配置
(5) 下载gitlab包,并且安装
在线下载安装包:

 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm

安装:【若有安装包可以直接执行以下命令安装】

rpm -i gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm

(6) 修改gitlab配置

vim /etc/gitlab/gitlab.rb

修改gitlab访问地址和端口,默认为80,我们改为82

external_url 'http://192.168.66.100:82'
nginx['listen_port'] = 82

(7) 重载配置及启动gitlab

gitlab-ctl reconfigure
gitlab-ctl restart

(8)把端口添加到防火墙

firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload

启动成功后,看到以下修改管理员root密码的页面,修改密码后,然后登录即可
【ip为安装gitlab机器,上文配置的端口】

访问:http://192.168.32.111:82

在这里插入图片描述
登录后:
在这里插入图片描述

3.2 私仓gitlab使用

(1)创建组添加成员
在这里插入图片描述
在这里插入图片描述
创建用户的时候,可以选择Regular或Admin类型。
在这里插入图片描述
在这里插入图片描述

注意:regular:用于普通用户,只能访问属于他的组和项目 admin则是管理员级别,可以访问所有组和项目

在这里插入图片描述
点击用户
在这里插入图片描述
在这里插入图片描述
修改密码
在这里插入图片描述

将用户添加到组中
选择某个用户组,进行Members管理组的成员
在这里插入图片描述
点击对应组
在这里插入图片描述
创建一个项目
在这里插入图片描述
在这里插入图片描述
选择新加的用户并授权
在这里插入图片描述
在这里插入图片描述
Gitlab用户在组里面有5种不同权限:

  • Guest:可以创建issue、发表评论,不能读写版本库
  • Reporter:可以克隆代码,不能提交,QA、PM 可以赋予这个权限
  • Developer :可以克隆代码、开发、提交、push,普通开发可以赋予这个权限
  • Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个 权限
  • Owner :可以设置项目访问权限-Visibility Level、删除项目、迁移项目、管理组成员,开发组组 长可以赋予这个权限

Gitlab用户在组里面有5种不同权限:客人:可以创建问题,发表评论,不能读写版本库记者:可以克隆代码,不能提交,QA,下午可以赋予这个权限开发人员:可以克隆代码,开发,提交,推动,普通开发可以赋予这个权限维护者:可以创建项目,添加标签,保护分支,添加项目成员,编辑项目,核心开发可以赋予这个权限所有者:可以设置项目访问权限以水平,删除项目,迁移项目,管理组成员,开发组组长可以赋予这个权限

最后用新用户重新登录即可

(2)本地向仓库推送代码
步骤:
A:创建版本目录
在这里插入图片描述
B:选择git
在这里插入图片描述
C:将文件add进本地
在这里插入图片描述
D:commit和push
在这里插入图片描述
在这里插入图片描述
E:设置用户登录账号密码以及url
在这里插入图片描述
在这里插入图片描述
F:刷新gitlab项目
在这里插入图片描述

3.3 Jenkins安装

A:实机安装

(1)到官网下载安装包

https://jenkins.io/zh/download/

(2)安装jdk【jenkins是java编写的】
1、上传到/opt 下
在这里插入图片描述

2、解压缩到/opt目录下
在这里插入图片描述

3、配置环境变量的配置文件vim /etc/profile

JAVA_HOME=/opt/jdk1.8.0_122
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib:.
export JAVA_HOME PATH CLASSPATH

4、使配置文件生效
在这里插入图片描述
5、测试安装成功
在这里插入图片描述
(3)把安装包上传到服务器,进行安装
下载

https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/?C=M&O=D

rpm -ivh jenkins-2.346.3-1.1.noarch.rpm

注意:需要考虑jdk的版本与jenkins兼容性,这次使用的版本是jdk8最后一个支持的版本

在这里插入图片描述
(4)修改Jenkins配置

vim /etc/sysconfig/jenkins

修改内容如下:

JENKINS_USER=“root”
JENKINS_PORT=“8888”

(5)启动Jenkins
旧版本:

systemctl start jenkins

新版本启动或关闭需要进到以下目录

    cd /etc/init.d
     
    # 输入此命令启动
    ./jenkins start
     
    # 关闭命令
    ./jenkins stop
    # 重启命令
    ./jenkins restart

(6)打开浏览器访问【ip按实际jenkins部署机子为准】

http://192.168.32.xxx:8888

注意:本服务器把防火墙关闭了,如果开启防火墙,需要在防火墙添加端口

端口放开: firewall-cmd --zone=public --add-port=8888/tcp --permanent

在这里插入图片描述
密码则需要带安装jenkins的机子下的取:

cat /var/lib/jenkins/secrets/initialAdminPassword

(7)跳过插件安装【因为初始是外国镜像,下载很慢,可先不安装插件】
选择第二个:
在这里插入图片描述
在这里插入图片描述

(9)创建用户
在这里插入图片描述
(10)完成
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时有可能会报部分插件加载失败,那就需要一个一个安装
修改为国内镜像
1、进到配置目录

cd /var/lib/jenkins/updates

2、备份原文件

 mv default.json default_bak.json

3、下载国内配置文件并将下载文件名改为default.json

wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.346/update-center.json
mv update-center.json default.json

4、重启一下jenkins

./jenkins restart

5、页面修改镜像

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.346/update-center.json

在这里插入图片描述
6、下载汉化插件
Jenkins->Manage Jenkins->Manage Plugins,点击Available,搜索"Chinese"
在这里插入图片描述
在这里插入图片描述
等待下载完,重起一下即可
勾选该选项下载完就会自动重启
在这里插入图片描述
或直接修改url

http://192.168.32.xxxx:8888/restart
在这里插入图片描述

重启完就完成汉化了
在这里插入图片描述
注意,有些插件在Jenkins->Manage Jenkins->Manage Plugins->Available是没有的,可以网上下载对应的hpi文件手动导入
Jenkins->Manage Jenkins->Manage Plugins->Advanced
在这里插入图片描述B:docker安装jenkins
(1)拉去jenkins

 docker pull jenkins/jenkins:2.470

(2)启动容器

docker run --name jenkins -p 8888:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -d jenkins/jenkins:2.470

注意:jenkins默认是8080,所以我们需要指定一个本地端口对应docker的jenkins的8080端口

(3)访问jenkins
初始化密码可以查看日志

docker logs jenkins

在这里插入图片描述
(4)修改镜像
到路径/var/jenkins_home下修改文件:
在这里插入图片描述

换成清华镜像:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.346/update-center.json

在这里插入图片描述
在这里插入图片描述

3.4 jenkins权限控制

因为jenkins权限控制做得不好,所以需要先安装个权限控制插件
(1)安装插件
Role-Based Strategy
在这里插入图片描述
(2)修改策略
在这里插入图片描述
在这里插入图片描述

(2)创建角色
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
赋予只读权限
在这里插入图片描述
添加项目权限
在这里插入图片描述
在这里插入图片描述

扩展:
以下是当搭建jenkins才配置的权限
在这里插入图片描述
最后点击save即可

(3)测试
先创建用户
在这里插入图片描述

在这里插入图片描述
此时切换创建用户登录出现如下页面
在这里插入图片描述

给用户授予角色
Manage Jenkins --> Manage and Assign Roles–>Assign Role
在这里插入图片描述
赋予全局角色权限
在这里插入图片描述
赋予访问项目的权限
在这里插入图片描述
扩展:
以下是当搭建jenkins集群才设置的
在这里插入图片描述
创建个项目测试
在这里插入图片描述
用管理员账号创建项目
在这里插入图片描述
切换新建的用户登录,此时就会看到符合正则的项目展示
在这里插入图片描述

3.5 jenkins凭据管理

主要用户管理账号密码等凭据
依赖插件
Credentials Binding
在这里插入图片描述
演示:
管理gitlab拉去代码本地构建
A:基于http的jenkins拉去gitlab代码
(1)jenkins安装git插件
在这里插入图片描述
(2)在安装Gitlab的Linux安装git

yum install git -y
git --version

在这里插入图片描述
(3)配置全局凭证
Manager Jenkins–》Manage Credentials --》全局–》添加凭据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • Username with password:用户名和密码
  • SSH Username with private key: 使用SSH用户和密钥
  • Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
  • Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token
  • Certificate:通过上传证书文件的方式
    常用的凭证类型有:Username with password(用户密码)和SSH Username with private key(SSH密钥)

案例一:Username with password(用户密码)
在这里插入图片描述
描述自定义即可
(4)项目绑定凭据
创建项目
在这里插入图片描述
点击项目
在这里插入图片描述
在这里插入图片描述
下滑,选择git
在这里插入图片描述
gitlab获取地址
在这里插入图片描述
配置jenkins绑定Git与凭据

在这里插入图片描述
点击build now,编译项目
在这里插入图片描述
就会自动编译项目
在这里插入图片描述
点击编译日志–》控制台输出
在这里插入图片描述
进jenkins部署的机子,进到以下目录就可以看到对应项目
在这里插入图片描述
案例二:SSH Username with private key(SSH密钥)
(1)在gitlab部署的机子生产公钥和秘钥

ssh-keygen -t rsa

【生成的秘钥在:/root/.ssh/】
在这里插入图片描述
(2)将公钥复制黏贴到gitlab
【点击用户头像–》setting–》ssh key】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)到jenkins配置凭据
在这里插入图片描述
在这里插入图片描述
(3)绑定项目与凭据
创建项目设置绑定
在这里插入图片描述
(4)构建一下项目
在这里插入图片描述
扩展:
当使用ssh的时候build project有可能会报错

If you are using OpenSSH < 7.6 please choose another strategy to
verify ssh host key in ‘Manage Jenkins’ -> ‘Configure Global Security’
-> 'Git Host Key Verification Configuration’You’re using ‘Known hosts file’ strategy to verify ssh host keys, but your known_hosts file does
not exist, please go to ‘Manage Jenkins’ -> ‘Configure Global
Security’ -> ‘Git Host Key Verification Configuration’ and configure
host key verification.

则需要到
Manage Jenkins --》Configure Global Security
设置为
在这里插入图片描述
若是这个报错

You’re using ‘Known hosts file’ strategy to verify ssh host keys, but
your known_hosts file does not exist, please go to ‘Manage Jenkins’ ->
‘Configure Global Security’ -> ‘Git Host Key Verification
Configuration’ and configure host key verification.

考虑升级一下github部署的机子的git
升级方式:
1、卸载旧版本

yum remove git

2、安装git仓库

rpm -ivh http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-1.noarch.rpm

3、安装最新版git

yum -y install git

4、验证

git --version

在这里插入图片描述

3.6 jenkins安装项目管理工具【Maven&Gradle】

A:Maven
(1)在jenkins部署的服务器下载maven包

官网地址:https://maven.apache.org/
下载地址:https://maven.apache.org/download.cgi
在这里插入图片描述
(2)将压缩包传到Linux,解压

tar -zxvf apache-maven-3.6.2-bin.tar.gz

在这里插入图片描述
(3)修改maven配置文件setting

/apache-maven-3.6.2/conf/settings.xml

配置仓库路径【路径自定义】
在这里插入图片描述

<localRepository>/opt/app/maven/localResource</localRepository>

配置阿里云镜像
在这里插入图片描述

    <mirror>
      <id>aliMaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

(4)新增环境变量【若java之前有配置就不用重复配置!】

vim /etc/profile

配置:

MAVEN_HOME=/opt/app/maven/apache-maven-3.6.2
JAVA_HOME=/opt/app/java/jdk1.8.0_121
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$GRADLE_HOME/bin
CLASSPATH=$JAVA_HOME/lib:.
export MAVEN_HOME JAVA_HOME PATH CLASSPATH

(5) 刷新资源

source profile

(6)检验

mvn -v

在这里插入图片描述
(7)jenkins配置maven

manage jenkins --》Global Tool Configuration
配置jdk和maven
在这里插入图片描述
在这里插入图片描述
(8)配置系统配置
manage jenkins --》 Cofigure System
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(9)项目配置构建方式
项目–》设置–》构建触发器
在这里插入图片描述

#!/bin/sh -l
mvn clean package

(10)build项目
在这里插入图片描述
在这里插入图片描述
B:Grable
(1)下载grable安装包

wget https://services.gradle.org/distributions/gradle-5.6.2-bin.zip

(2)解压下载的安装包

unzip gradle-5.6.2-bin.zip

(3)配置环境变量

vim /etc/profile

配置:

GRADLE_HOME=/opt/app/gradle/gradle-5.6.2
JAVA_HOME=/opt/app/java/jdk1.8.0_121
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$GRADLE_HOME/bin
CLASSPATH=$JAVA_HOME/lib:.
export GRADLE_HOME JAVA_HOME PATH CLASSPATH

(4)生效资源

source /etc/profile

(5)测试

gradle -version

在这里插入图片描述
(6)安装grable插件【按自己jenkins实际,若已安装就不需要】
在这里插入图片描述
(7)jenkins配置gradle配置
manage jenkins --》Global Tool Configuration
配置jdk和gradle【jdk请看上面maven配置(略)】
在这里插入图片描述
(8)配置gradle系统配置
manage jenkins --》 Cofigure System
在这里插入图片描述

在这里插入图片描述
(9)项目配置构建方式
在这里插入图片描述

#!/bin/sh -l
gradle clean build

(10)build项目
在这里插入图片描述

在这里插入图片描述

3.7 jenkins安装服务器

A:tomcat
(1)下载tomcat包

wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.99/src/apache-tomcat-8.5.99-src.tar.gz

(2)解压

tar -zxvf apache-tomcat-8.5.99-src.tar.gz

(3) 启动

cd /tomcat-8.5.99/bin
./startup.sh

(4)访问测试
http://192.168.32.xxx:8080
在这里插入图片描述
注意:
若访问失败可以先排查以下问题

  • 端口是否占用
  • 是否firewalld是否没开放端口

排除以上问题,可以到 /tomcat-8.5.99/logs看启动日志
在这里插入图片描述
端口冲突

cd /tomcat-8.5.99/conf
vim server.xml

修改端口,重启tomcat即可
在这里插入图片描述
firewalld没开放端口
(i)直接关闭防火墙
systemctl stop firewalld

(ii)开放端口,重启防火墙

firewall-cmd --zone=public --add-port=8787/tcp --permanent
systemctl restart firewalld

(5)开方tomcat管理
在这里插入图片描述
但此时没配置权限会报403
在这里插入图片描述
配置如下:
(i)添加以下配置【按以下配置账号密码都为tomcat】

<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="manager-script"/>
  <role rolename="admin-gui"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <user username="tomcat" password="xxxx" roles="manager-gui,admin-gui,manager-script"/>
</tomcat-users>

在这里插入图片描述
(ii)为了能够刚才配置的用户登录到Tomcat,还需要修改以下配置

vim /opt/tomcat-8.5.99/webapps/manager/META-INF/context.xml

注释掉以下配置

<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->

(iii)重启tomcat

cd bin
./shutdown.sh
./startup.sh

输入账号密码登录:tomcat/tomcat
在这里插入图片描述
B:jetty
(1) 下载jetty安装包【以下是以jetty9为例,与10+的版本配置有不同】

下载地址:https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.22.v20191022

wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.22.v20191022/jetty-distribution-9.4.22.v20191022.zip

(2)解压

unzip jetty-distribution-9.4.22.v20191022.zip

(3)修改端口【jetty10+是没有start.ini,若使用10+版本,请自行查找修改方式】

cd jetty-distribution-9.4.22/
vim start.ini

添加以下配置【端口自定义即可】

jetty.http.port=8686

(4)开放防火墙端口

firewall-cmd --zone=public --add-port=8686/tcp --permanent
systemctl restart firewall

(5)测试访问

http://192.168.32.xx:8686
在这里插入图片描述

3.8 jenkins+tomcat实现自动部署

A:自由式风格发布
(1)修改tomcat配置【略,若想了解请看上面tomcat安装】

(2)jenkins配置自动发包
点击项目中的配置–》构建
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后点击保存
点击项目中的 build now
在这里插入图片描述
尝试访问
在这里插入图片描述
B、配置maven项目
(1) 安装依赖插件

Maven Integration

在这里插入图片描述
(2)创建maven项目
在这里插入图片描述
(3)选择git
在这里插入图片描述
(4)设置构建方式
在这里插入图片描述
在这里插入图片描述
(5)测试
更新git代码,然后再build now,观察是否有修改的页面是否有变化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
C、使用pipline配置流水
(1)概念
Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。

(2)使用Pipeline有以下好处(来自翻译自官方文档):
代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。 持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。 可停止:Pipeline可接收交互式输入,以确定是否继续执行Pipeline。 多功能:Pipeline支持现实世界中复杂的持续交付要求。它支持fork/join、循环执行,并行执行任务的功能。 可扩展:Pipeline插件支持其DSL的自定义扩展 ,以及与其他插件集成的多个选项。

(3)如何创建 Jenkins Pipeline呢?
Pipeline 脚本是由 Groovy 语言实现的
Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法
Pipeline 也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一
个 Jenkinsfile 脚本文件放入项目源码库中(一般我们都推荐在 Jenkins 中直接从源代码控制(SCM)中直接载入 Jenkinsfile Pipeline 这种方法)

(4)演示

  • 安装插件
    在这里插入图片描述

  • 创建流水
    在这里插入图片描述

  • 编写流水脚本
    此处可以使用jenkins提供的代码生成器生成
    在这里插入图片描述
    在这里插入图片描述
    演示:
    配置拉取代码
    在这里插入图片描述
    在这里插入图片描述
    然后复制到新创建的流水配置里
    在这里插入图片描述
    生成构建项目shell
    在这里插入图片描述
    生产发布配置
    在这里插入图片描述

  • 测试
    修改代码,加了个测试01
    在这里插入图片描述
    提交合并一下代码
    在这里插入图片描述
    点击bulid now执行一下流水
    在这里插入图片描述
    结果:
    在这里插入图片描述
    (5)将配置文件放到项目中
    好处:
    主要是好管理配置,防止因jenkins宕机等原因导致配置丢失。

步骤:

  • 在项目二级目录创建一个名为jenkinsFile文件,将配置粘到文件里,然后将文件push到代码仓库
    在这里插入图片描述

  • 修改jenkins对应流水的配置
    在这里插入图片描述
    注意:脚本路径就是在项目中创建的文件名,若有修改,需要同时修改该目录的配置

  • 测试
    在这里插入图片描述
    扩展:若想看阶段视图,需要安装插件Pipeline Stage View
    阶段视图主要方便观测各阶段执行情况
    在这里插入图片描述
    在这里插入图片描述

3.9 jenkins内置触发器

Jenkins内置4种构建触发器:

  • 触发远程构建

  • 其他工程构建后触发(Build after other projects are build)

  • 定时构建(Build periodically)

  • 轮询SCM(Poll SCM)

在这里插入图片描述
(1) 触发远程构建
触发构建实际就是一种携带令牌请求jenkins触发构建流程的一种构建方式
eg:假设现在token为45545454545454545878【时间开发场景需要使用对应的加密串】在这里插入图片描述
然后访问:

http://192.168.32.133:8989/job/jackstyle01/build?token=45545454545454545878
在这里插入图片描述

在这里插入图片描述此时可以看到流程会被触发构建
在这里插入图片描述
(2)其他工程构建后触发(Build after other projects are build)
该种构建方式实际就是通过其他工程构建后拉动后置驱动某工程
eg:
(i)配置前置工程【因现在模拟就随意配置一个】
在这里插入图片描述
(ii)构建工程反绑定前置工程(主要)
在这里插入图片描述
当前置工程执行后就会驱动当前工程

(iii)定时构建
该种构建方式就是依靠时间触发流程调度
eg:设置每分钟调度一次
在这里插入图片描述

在这里插入图片描述
(iv)轮询scn
该种触发器主要是会隔段时间就会扫描仓库代码是否变化,有变化就会调度
eg:
配置扫描时间
在这里插入图片描述
模拟修改文件
在这里插入图片描述
效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值