从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目

结合资料,自己梳理的一个大致流程。这里我没有使用docker容器;Gitee、GitHub、GiLab三者使用类似,我这里以Gitee为例。

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目

  • 一.Jenkins介绍
  • 二.安装Jdk、Git、Maven、Tomcat等相关配套工具
    • 1.安装Jdk
    • 2.安装Git
    • 3.安装Maven
    • 4.配置Jdk和Maven的环境变量
    • 5.安装Tomcat
  • 三.安装Jenkins
    • 1.Jenkins官网下载rpm文件
    • 2.文件上传至服务器
    • 3.使用命令安装Jenkins
    • 4.修改Jenkins配置文件
    • 5.启动Jenkins
    • 6.访问Jenkins网页
    • 7.设置Jenkins开机自启动
  • 四.Jenkins相关插件安装
    • 1.安装Git插件
    • 2.安装Pipeline插件
    • 3.安装Pipeline Stage View插件
    • 4.安装Deploy to container插件
  • 五.Jenkin全局配置
    • 1.全局工具配置
    • 2.添加Jenkins全局变量
  • 六.Jenkin凭证管理
    • 1.添加gitee凭证(SSH密钥类型)
      • 1.1gittt配置公钥
      • 1.2.Jenkins配置私钥
    • 2.添加tomcat凭证(用户密码类型)
  • 七.Jenkins构建Pipeline项目
    • 1.新建Pipeline项目
    • 2.修改配置
      • 1.生成拉取代码脚本
      • 2.生成构建项目脚本
      • 3.生成发布项目脚本
    • 3.手动部署
  • 八.Git hook自动触发构建
    • 1.Pipeline Script from SCM
    • 2.安装插件 - Gitee
    • 3.Jenkins配置参数
    • 4.Gitee配置web hook
    • 5.测试自动部署


一.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等。
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第1张图片

二.安装Jdk、Git、Maven、Tomcat等相关配套工具

1.安装Jdk

yum install java-1.8.0-openjdk* -y

JDK的安装路径为:/usr/lib/jvm

2.安装Git

yum install git -y

3.安装Maven

在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目
1.mavne官网下载tar.gz的包
官网地址:https://archive.apache.org/dist/maven/maven-3/3.6.2/binaries/
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第2张图片
2.上传服务器解压缩,移动并重名文件夹

tar -xzf apache-maven-3.6.2-bin.tar.gz # 解压缩命令

具体效果看下图

mavne的路径:/usr/local/maven

3.新建mavne的仓库地址

maven仓库路径:/usr/local/maven/repo


4.编辑mavne的配置文件:修改仓库地址以及更换阿里的镜像地址

vim /usr/local/maven/conf/settings.xml

<mirror>
   <id>alimavenid>
   <name>aliyun mavenname>
   <url>http://maven.aliyun.com/nexus/content/groups/public/url>
   <mirrorOf>centralmirrorOf>
 mirror>

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第3张图片
最后保存并退出就可以了!

4.配置Jdk和Maven的环境变量

1.打开系统环境配置文件

vim /etc/profile 

2…在配置文件中,添加如下配置

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk #jdk路径
export MAVEN_HOME=//usr/local/maven # maven路径
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin 

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第4张图片
3.重新加载配置文件,查看mavne版本

source /etc/profile #配置生效
mvn -v #查找Maven版本

在这里插入图片描述

5.安装Tomcat

1.tomcat官网下载tar.gz的包
官网地址:https://tomcat.apache.org/download-80.cgi

2.上传服务器解压缩,移动并重名文件夹

tar -xzf apache-tomcat-8.5.78.tar.gz # 解压缩命令

具体效果看下图
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第5张图片
3.配置阿里云安全组8080端口
在这里插入图片描述
如果服务器防火墙打开的,还要在服务器打开8080端口。我的服务器防火墙是关闭的,所以这里就不用进行打开防火墙8080端口的相应操作
在这里插入图片描述
4.进入Tomcat的bin目录启动tomcat

./startup.sh


最后输入相应的IP地址+8080端口就可以访问了,看到下图的猫就成功了

5.配置tomcat环境变量

vim /etc/profile

在这里插入图片描述

source /etc/profile

配置好后就可以在任意的路径下使用 startup.sh 命令启动了

6.配置tomcat管理员账号
这里需要配置tomcat的管理员账号的原因:简而言之,就是让Jenkins有权限发布项目到tomcat服务器中,这里所配置的tomcat管理员账号将用于后面jenkins发布项目到tomcat的一个凭证
默认情况下Tomcat是没有配置用户角色权限的
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第6张图片
进入后是没有权限访问的页面

编辑tomcat-users.xml文件,添加管理员账号

vim /usr/local/tomcat/conf/tomcat-users.xml

内容如下:

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

用户和密码都是:tomcat
在这里插入图片描述
注意:为了能够刚才配置的用户登录到Tomcat,还需要修改以下配置

vim /usr/local/tomcat/webapps/manager/META-INF/context.xml

注释掉这行代码
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第7张图片
之后重启Tomcat进入管理员界面登录刚刚配置的账号就可以了
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第8张图片
5.配置tomcat开机自启动
在 /usr/lib/systemd/system/ 路径下,新建 tomcat.service文件,写入如下代码:

vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

启动服务

systemctl daemon-reload

systemctl start tomcat.service

systemctl enable tomcat.service # 开机自启

相关指令

# systemctl start tomcat.service  启动tomcat
# systemctl status tomcat.service  启动并查看详细启动信息
# systemctl restart tomcat.service  重启tomcat
# systemctl stop tomcat.service  关闭tomcat
# systemctl enable tomcat.service 开机自启
# systemctl disable tomcat.service 禁用开机自启

三.安装Jenkins

1.Jenkins官网下载rpm文件

官网地址:http://mirrors.jenkins-ci.org/redhat/

我选择的是:jenkins-2.344-1.1.noarch.rpm

2.文件上传至服务器

3.使用命令安装Jenkins

rpm -ivh jenkins-2.344-1.1.noarch.rpm

在这里插入图片描述

Jenkins的安装路径:/var/lib/jenkins

4.修改Jenkins配置文件

vim /etc/sysconfig/jenkins

修改内容如下: JENKINS_USER=“root” JENKINS_PORT=“8888”

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第9张图片

5.启动Jenkins

systemctl start jenkins

这里有个问题:我们按照第四步的操作修改端口后,我们可以看到下图启动后,查看Jenkins的状态,可以看到端口还是8080

解决办法:在 jenkins 加载目录中修改端口

# 进入目录
cd /usr/lib/systemd/system
vim jenkins.service
# 或者
vim /usr/lib/systemd/system/jenkins.service

# 修改为想要的端口
Environment="JENKINS_PORT=8889"

# 重新加载配置文件
systemctl daemon-reload


然后启动并查看Jenkins状态,我们看到端口已经成功改过来了

# 重新加载
systemctl daemon-reload
# 启动
systemctl start jenkins
# 查看状态
systemctl status jenkins

6.访问Jenkins网页

打开浏览器访问 http://ip:8888

注意:我的服务器把防火墙关闭了,只需要打开阿里云安全组的888端口就可以了,如果开启防火墙,需要在防火墙添加端口
在这里插入图片描述
访问后首页先出现如下的页面
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第10张图片
我们按照提示在服务器输入相应的命令即可获得初始密码:9058fdcd0e2d4c4783c6b77fe6ae80da
在这里插入图片描述
跳过插件安装
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第11张图片
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第12张图片
添加一个管理员账户,并进入Jenkins后台
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第13张图片
进入Jenkins主页
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第14张图片

7.设置Jenkins开机自启动

sudo /sbin/chkconfig jenkins on

在这里插入图片描述

四.Jenkins相关插件安装

插件安装图示
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第15张图片

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第16张图片

1.安装Git插件

为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第17张图片

2.安装Pipeline插件

这个插件主要是让我们能够构建Pipeline项目用的
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第18张图片
安装插件后,创建项目的时候多了“流水线”类型
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第19张图片

3.安装Pipeline Stage View插件

这个插件主要是让我们看到后期部署流水线项目的时候每个阶段的运行时间和状态
效果图如下
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第20张图片
如果没有安装这个插件,效果图如下
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第21张图片
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第22张图片

4.安装Deploy to container插件

Jenkins本身无法实现远程部署到Tomcat的功能,需要安装Deploy to container插件实现
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第23张图片


五.Jenkin全局配置

1.全局工具配置

Jenkins->Manage Jenkins->Global Tool Configuration
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第24张图片

Jenkins关联JDK和Maven

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第25张图片
Jenkins->Manage Jenkins->Global Tool Configuration->JDK->新增JDK,配置如下:

指定JDK的JAVA_HOME即可

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第26张图片

Jenkins->Manage Jenkins->Global Tool Configuration->Maven->新增Maven,配置如下:

同理指定MAVEN的MAVEM_HOME

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第27张图片

2.添加Jenkins全局变量

Manage Jenkins->Configure System->Global Properties
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第28张图片
添加三个全局变量JAVA_HOME、M2_HOME、PATH+EXTRA

 - JAVA_HOME: /usr/lib/jvm/java-1.8.0-openjdk
 - M2_HOME: /usr/local/maven
 - PATH+EXTRA: $M2_HOME/bin

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第29张图片
最后点击应用保存即可。


六.Jenkin凭证管理

凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第30张图片

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第31张图片

添加凭证

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第32张图片

可以添加的凭证有5种:
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密钥)

1.添加gitee凭证(SSH密钥类型)

gitee凭证:用于Jenkins拉取gitee的项目代码

使用root用户生成公钥和私钥

ssh-keygen -t rsa

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第33张图片

在/root/.ssh/目录保存了公钥和私钥
id_rsa:私钥文件
id_rsa.pub:公钥文件

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第34张图片
注意:公钥配置在gitee上,私钥配置在Jenkins中

1.1gittt配置公钥

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第35张图片

获取id_rsa.pub文件中的公钥字符串,复制到相应位置

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第36张图片

1.2.Jenkins配置私钥

进入配置凭证页面,类型为"SSH Username with private key",把刚才生成私钥文件内容复制过来

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第37张图片

编辑后完成后,点击保存

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第38张图片

2.添加tomcat凭证(用户密码类型)

tomcat凭证:用于Jenkins部署项目到tomcat服务器
我这里先配置了,也可以后面用到再进行配置
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第39张图片
配置完成后,我们就可以得到两个全局凭证了
在这里插入图片描述


七.Jenkins构建Pipeline项目

Jenkins中自动构建项目的类型有很多,常用的有以下三种:
自由风格软件项目(FreeStyle Project)
Maven项目(Maven Project)
流水线项目(Pipeline Project)

推荐使用流水线类型

1.新建Pipeline项目

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第40张图片

2.修改配置

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第41张图片

这里我们使用Pipeline脚本进行部署
Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy
Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法

我们使用Scripted脚本式Pipeline

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第42张图片

  • Node:节点,一个 Node 就是一个 Jenkins 节点,Master 或者 Agent,是执行 Step 的具体运行环境,后续讲到Jenkins的Master-Slave架构的时候用到
  • Stage:阶段,一个 Pipeline 可以划分为若干个 Stage,每个 Stage 代表一组操作,比如:Build、Test、Deploy,Stage 是一个逻辑分组的概念
  • Step:步骤,Step 是最基本的操作单元,可以是打印一句话,也可以是构建一个 Docker 镜像,由各类 Jenkins 插件提供,比如命令:sh ‘make’,就相当于我们平时 shell 终端中执行 make 命令一样

三个阶段:拉取代码阶段;构建项目阶段;发布项目阶段

node {
    def mvnHome
    stage('pull code') {
        echo 'Hello World'
 
    }
    stage('build project') {
        echo 'Hello World'
    }
    stage('publish project') {
        echo 'Hello World'
    }
}

接下来我们使用下方箭头的脚本生成器生成相应的脚本即可

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第43张图片

1.生成拉取代码脚本

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第44张图片
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第45张图片

2.生成构建项目脚本

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第46张图片

3.生成发布项目脚本

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第47张图片

最后赋值三个阶段的脚本到相应的位置即可

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第48张图片

3.手动部署

1.点击Build Now

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第49张图片

2.查看控制台输出

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第50张图片
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第51张图片

访问tomcat

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第52张图片

到此为止,Jenkins手动部署项目已经全部结束!

八.Git hook自动触发构建

1.Pipeline Script from SCM

刚才我们都是直接在Jenkins的UI界面编写Pipeline代码,这样不方便脚本维护,建议把Pipeline脚本放在项目中
1.在项目根目录建立Jenkinsfile文件,把内容复制到该文件中
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第53张图片
2.把Jenkinsfile上传到Gitlab

push工程到Gitee

3.在Jenkins的项目配置中引用这文件
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第54张图片
这里建议文件名称就好 Jenkinsfile
从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第55张图片

然后保存,最后自己测试一下用配置文件能否部署项目成功即可

2.安装插件 - Gitee

我这里使用的是Gitee作为代码仓库,所以Jenkins中只需要安装Gitee的插件即可
如果你使用的是GitLab作为你的代码仓库,那么这里需要两个插件:Gitlab Hook和GitLab

废话不多说,我们接下来进行安装插件

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第56张图片

3.Jenkins配置参数

安装完插件后,我们进入Jenkins项目的配置中

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第57张图片

在上图中给了一个URL地址和密码(密码需要生成),这两个参数时需要我们后面配置在gtiee的web hook中的

4.Gitee配置web hook

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第58张图片

保存成功后进行测试

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第59张图片

Gitee中查看测试结果

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第60张图片

Jenkins中查看测试结果

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第61张图片

5.测试自动部署

我们自己在本地修改一下代码内容,然后提交,试试能不能自动部署

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第62张图片

查看Jenkins后台

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第63张图片

最后我们浏览器访问一下项目

从0到1,Gitee + Maven + Idea + Jenkins 实现Pipeline类型工程部署Java的war包项目_第64张图片

完结撒花!!!

你可能感兴趣的:(java,服务器,系统架构,运维开发)