Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > linux之Jenkins自动化项目部署

linux之Jenkins自动化项目部署流程

作者:yutao99

本文介绍了持续集成和持续交付(CI/CD)的基本概念,并详细描述了如何在CentOS 7环境下使用Jenkins、Maven、Git和Tomcat实现自动化构建和部署

CI/CD

CI (continuous integration-CI) -- 持续集成

Jenkins

Jenkins概述

是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控一些定时执行的任务。

Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。 jenkins通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT。

jenkins构建工具有Maven、Ant、Gradle。

Jenkins目标

是监控软件开发流程 快速显示问题 提高开发效率 过程控制

Jenkins特性

不需要安装、不需要数据库,只需通过java -jar jenkins.war或部署到一个servlet容器中

所有的配置都可能通过jenkins提供的web界面完成,当然如果你喜欢,也可以通过手动修改xml文件进行配置

生成JUnit或TestNG的测试报告.集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。

jenkins能跟踪每次构建生成哪些jar包以及使用哪个版本的jar包

支持Jenkins能够让多台计算机一起构建/测试。

jenkins可以通过第三方插件扩展,也可以根据团队需要开发插件

任务:(Job)是Jenkins的一个执行计划,是一系列操作的集合。 构建:是Jenkins的任务的一次运行。

Jenkins实战案例

环境

1、安装相关工具

1,mave安装

要在java环境下才能用,下面有安装jdk

1,官网https://maven.apache.org/

2,下载 maven3.8.8 包

https://dlcdn.apache.org/mave选择自己需要的maven版本

[root@yt ~]# wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz

也可以下载好直接上传到linux中

3,解压后不用安装,直接放到/usr/local/下

[root@yt ~]# tar -zxvf apache-maven-3.8.8-bin.tar.gz  -C /usr/local/
[root@yt ~]# mv /usr/local/apache-maven-3.8.8/ /usr/local/maven

 4,配置环境变量

[root@yt ~]# vim /etc/profile.d/jenkins_tools.sh

export M2_HOME=/usr/local/maven 
export M2=$M2_HOME/bin 
PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin 
export MAVEN_HOME=/usr/local/maven 
export PATH=${MAVEN_HOME}/bin:$PATH 

5,刷新环境变量

[root@test8 ~]# source /etc/profile.d/jenkins_tools.sh

2,部署git

[root@test8 ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker fontconfig -y
[root@test8 ~]# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz

也可以下载好上传到linux中

源码安装
[root@test8 ~]# tar xf git-2.9.5.tar.gz
[root@test8 ~]# cd git-2.9.5/

编译源码包,安装在/usr/local/git目录下
[root@test8 git-2.9.5]# make prefix=/usr/local/git all
时间会有些久!!

安装包
[root@test8 git-2.9.5]# make prefix=/usr/local/git install
编辑/etc/bashrc文件
[root@test8 git-2.9.5]#  vi /etc/bashrc 

最下面添加:
PATH=$PATH:$HOME/bin:/usr/local/git/bin

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

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

[root@test8 git-2.9.5]#  source /etc/bashrc
[root@test8 git-2.9.5]#  git --version
git version 1.8.3.1
[root@test8 git-2.9.5]#  yum remove git.x86_64
[root@test8 git-2.9.5]#  source /etc/bashrc
[root@test8 git-2.9.5]#  git --version
git version 2.9.5

3、安装Jenkins

搭建jdk环境和Tomcat服务

1、上传 jdk-11.0.16_linux-x64_bin.tar.gz apache-tomcat-9.0.79.tar.gz

2、解压jdk

[root@test8 ~]# tar xf jdk-11.0.16_linux-x64_bin.tar.gz

3、解压tomcat

[root@test8 ~]# tar xf apache-tomcat-9.0.79.tar.gz

4、拷贝并修改名称

5、处理环境变量

[root@test8 ~]# vi /etc/profile.d/java.sh
​
编辑一下内容:
TOMCAT_HOME=/usr/local/tomcat
JAVA_HOME=/usr/local/java
PATH=$TOMCAT_HOME/bin:$JAVA_HOME/bin:$PATH
export TOMCAT_HOME JAVA_HOME PATH

6、刷新环境变量

[root@test8 ~]# source /etc/profile.d/java.sh
​
[root@test8 ~]# java -version
java version "11.0.16" 2022-07-19 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.16+11-LTS-199)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.16+11-LTS-199, mixed mode)
​
这里验证maven也是安装好的
[root@web ~]# mvn --version
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /usr/local/maven
Java version: 11.0.16, vendor: Oracle Corporation, runtime: /usr/local/java
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

4、安装jenkins

1,官网下载jenkins: jenkins.war

下载2.422

2,上传至服务器

3,清空Tomcat下webapp中的所有文件,防止Tomcat中的文件造成干扰

[root@test8 ~]# rm -rf /usr/local/tomcat/webapps/*

4,将Jenkins.war包放到Tomcat/webapp下

[root@test8 ~]# cp jenkins.war /usr/local/tomcat/webapps/

5、启动tomcat,并页面访问

[root@test8 ~]# /usr/local/tomcat/bin/startup.sh

访问 http://192.168.183.100:8080/jenkins

可能出现的错误

缺少字体

[root@yt ~]# yum install fontconfig 
安装并重启tomcat
[root@yt ~]# /usr/local/tomcat/bin/startup.sh

如果还有其他错误,请查询tomcat的错误日志.

2、前台配置jenkins

1,解锁Jenkins

2,添入以下文件密码到上图页面中

[root@yt ~]# cat /root/.jenkins/secrets/initialAdminPassword
44bae7336de74fafaa8fa78bdb0311c6

点击继续

3,选择suggested的插件进行下载

4,等待安装完成。

因为网速原因,插件可能下载失败,没关系,把他们记录下来,比如下图的两个插件,点击继续,进去之后手动重新安装未安装好的插件,也可以重试,继续下载安装。

如果大量组件,重试多次依然未安装成功.请尝试如下方法解决jenkins 插件安装缓慢问题

[root@yt ~]# vim ~/.jenkins/hudson.model.UpdateCenter.xml
​
 <url>http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
​
​
​
[root@yt ~]# vim ~/.jenkins/updates/default.json
    替换命令
% s/www.google.com/www.baidu.com/g
% s/updates.jenkins.io\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g
    
旧版: http://updates.jenkins-ci.org/download 替换成 https://mirrors.tuna.tsinghua.edu.cn/jenkins 
新版:https://updates.jenkins.io/download 替换成 https://mirrors.tuna.tsinghua.edu.cn/jenkins 
    
修改完以后,重启Jenkins服务再输入密码,继续安装,速度贼快。
    http://192.168.183.100:8080/jenkins/restart
    重启tomcat

5,创建用户

6,jenkins的分享地址 http://192.168.183.100:8080/jenkins/

7,前台安装完成

如果这个页面过一会消失了。并且常时间空白。可能需要你登录了。换个浏览器,打开相同的地址就会出现认证页面。

8,登录成功进入欢迎界面

3、系统配置

系统配置

系统消息:Welcome to Jenkins~

Manage Jenkins

提示信息

初始页面提示

centos7支持截止日期

单节点提示

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

点击新增---> 取消自动安装 ---->然后查询Jenkins服务器上JDK的路径,填写JAVA_HOME ---> 保存即可

添加git工具

/usr/local/git/bin/git

添加maven工具

/usr/local/maven

SSH 设置:

注意这一步等插件管理进行完之后再进行下面的操作

简介

1.jenkins服务器准备秘钥认证

[root@yt ~]# ssh-keygen 


一路回车

2.将秘钥拷贝给目标服务器

[root@yt ~]# ssh-copy-id -i 192.168.183.101

3.注意这里的192.168.183.101是一台tomcat网站服务器。什么都不用安装,接到代码即可。

4.测试连接

[root@yt ~]# ssh 192.168.183.101 
登录不需要密码即可

切记测试远程登录后退出!!!

[root@yt ~]# exit  

5.在jenkins上配置ssh信息

1.查看SSH私钥

[root@yt ~]# cat ~/.ssh/id_rsa

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA3sx3DSfnhnGTenwXSDvd37jUAAjz0q+g9xJWL+9noRusyNz2
3R413uLDh8JCCLeYJg9yIRp/8pGKBP2oU5XUtlRVUXGmOkywVr0bOzTHdXlyr/Wm
vPegep+bsiaMUtJkRY3fV+sXYAwkKu9rEKiuOoCRyiuNG3qAywj3Nm48A8vvQSe0
nf4ZhCAG0YB8Q1IIyLm+/0/Z0cQChNKQjdCfQJB37Wx2Oi0Y3ajta7Tt3iEWl6bF
0VZbBOr4BYpZAVeTUrMpTxw7HQAP7HOynG/RkVD9z9AyQgZQo2UginQpEYYJ+VwQ
2fDrUUQwvFg2Zy2jBZvRdQjjvqhM1c8fSGwYHwIDAQABAoIBAGtzYstGfoO5jO3a
oQPmU4hNRHlL2AO5TkE6Z7SwmmL5zOgGoUxdAJAg/zofNuerW8anVlyewixDgrQL
fb3qGe9hVtBzpj6hs73xcAuq1bNTQjuYlrS2HIBnL5jIvI5JB7D/zkJBkEFzOZI3
a4RaRcTTMvy06lXhS/IfvdJTccBGGPRpdXulzULlfBJIJoodmVzFvNT1TBhUtaE5
AVoxXwccUizzRX5ACq0URpUTGEFqREl5w7R6jtXHnSiat3UIq5ChS7sa6D24pMmi
HVe4CHhcjW+9Yfs8bgbZ/rSdPz1cQ33BGyZt9VRxyTPCF90gqh/EDOFBDEiDR+bp
ovvZfFkCgYEA9/PeeqzlwPqq5/6B7RDZ4rbm+X2RQpzb49al4/mXOoq/Lv1UWyRU
Qn1DTEvoxh7Rgp427r8O9a+wlB20TS7vkybJxIb7tOtosiWvXD1Xjxhzv+hEAaV0
m2ezgznVF5v7Aw+AQQGzJCk9M75dTT1W63LId4/NPPRGL4dAxQ6CvoMCgYEA5gea
WfuAKFK/ZJACi7ZT3geoXap72b8wyeM2elpCLfZFMbLC52Pp2uD+IQUnIDgBRELu
WjdQzgxafz9miDtXi7kWLDhKnUWppprJoGTVkSvnIgYTdA0G6cvliSRuV8xTKHYc
wygVxL1MtAknrfylwwfixoHDlKKWAzVzkX46DTUCgYEA6YfBie8f8ZLltt0pR7tw
S6ySfHb8gi20mLFIyx//hD67dCla8wCTb5AE+24fTcIm94vGFzTRhSq097vGXk+P
ixukOzobBboWgHsn34tS1U5lbmD29En+OoQAOd8VSUg6sRY/aHqOW8ePghWQULgu
DlGsZ5eD6R30oL0VjsNs9rsCgYBCd6XxJEwG2so1C6vApSGcwYez8QQyih1V6NKg
Dh6bW1LpJmdNJ0C2n1avQebpV2V+TPzEksFFmKo5pJ9C9Cq60/OFOYrN4QhBfO6P
6zMO7Kmv2iOa3/zEZ8delmlP81mAEokDFz0bCTv1tcOCccOQFGJBy9Mwyr4gFTzc
qKWrlQKBgBXLMBs+h5Ax8KIrjxlHIt8oPUYCOpi4ofdUBXUafzbEiYZPK3Y2UbDP
4OTI5sflEBsfRkzl1Nw+V6n89utUQyv8LgHJNvwo4A3DMn+s2FsCx/tIZrKtejo6
ZKTpqjm3bsBhThQCQnqKpqNhUgWL+AqN5Ug8KLGTB7TTSsGeJo1+
-----END RSA PRIVATE KEY-----

复制cat出来的所有内容,粘贴到下一步页面上的key中。

进入jenkins系统设置

4、插件管理

这里有可更新、可选未安装插件、已安装插件;可以通过过滤快速查找

(1)Maven Integration plugin 安装此插件才能构建maven项目

(2)Deploy to container Plugin 安装此插件,才能将打好的包部署到tomcat上

(3) 安装git相关3个插件

安装过程同第一个插件:

GIT plugin

GitHub Authentication

GitHub Branch Source

GitHub Organization Folder

淘汰了。不用安装这个插件了

(4)安装插件:Publish Over SSH

回到上面配置ssh

优化maven

配置国内maven镜像

[root@yt ~]# vim /usr/local/maven/conf/settings.xml 

注意每一行
<mirror>
    <id>central</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>  

5、Jenkins+Maven+Github+Tomcat 自动化构建打包、部署

Jenkins+Maven+Github+Tomcat 自动化构建打包、部署

创建一个Maven工程

1.构建maven项目

2.源码管理 -- 选择版本控制器和仓库地址

互联网仓库1

https://gitee.com/newrain001/easy-springmvc-maven.git
https://gitee.com/chenfuguo1949/easy-springmvc-maven.git

互联网仓库2

https://github.com/bingyue/easy-springmvc-maven.git

如果有图中的提示,请注意你的git工具在jenkins中是否配置正确

注意:如果是私有仓库,这里需要建立credentials身份认证

3.设置触发器(保持默认)

4.设置构建(编译打包)

手动添加Goals and options

clean package -Dmaven.test.skip=true

5.构建后操作

在构建后设置中 选择:(send build artifacts over ssh)通过SSH发送构建工件

点击 --> 增加构建后操作

说明

name

source file

Remove prefix

Remote directory

Exec command

tomcat(192.168.229.21)在接收到源码之后的自定义动作。
比如:将源码拷贝到网站的主目录(/jenkins),并执行一些其他操作如重启服务器等(或创建文件touch)(需要后台创建)
# mkdir  /jenkins/sh
# cat  /jenkins/sh/deploy.sh
cp -r /jenkins/war/*.war   /jenkins
touch /tmp/aaaaaa.txt
#chmod +x /jenkins/sh/deploy.sh

6.保存

执行构建

错误1

github连接失败

ERROR: Error cloning remote repo 'origin' SSH: Current build result is [FAILURE], not going to run. Finished: FAILURE


重试

6、构建任务

构建任务

结果路径

输出信息,最后是如下:

channel stopped
SSH: Connecting from host [web.chenfuguo.cn]
SSH: Connecting with configuration [tomcat] ...
SSH: EXEC: completed after 201 ms
SSH: Disconnecting configuration [tomcat] ...
SSH: Transferred 1 file(s)
Finished: SUCCESS

7、检查错误配置

检查错误配置

左侧:点击“系统管理”

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

[root@localhost ~]# head -1 /usr/local/tomcat/conf/server.xml 

<?xml version="1.0" encoding="UTF-8"?>

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

关于jenkins 设置中文语言(略)

关于重启jenkins(略)

排错问题示例

问题1:jenkins访问一直处于等待状态tomcat日志显示如下信息:

[root@jenkins logs]# tail -f /usr/local/tomcat/logs/catalina.out  

 WARNING [Handling GET /jenkins/login from 10.0.0.174 :
 http-nio-8080-exec-3 HudsonIsLoading/index.jelly] org.apache.catalina.webresources.Cache.getResource Unable
 to add the resource at [/WEB-INF/classes/lib/layout/breadcrumbs.jelly]
 to the cache for web application [/jenkins] because there was
 insufficient free space available after evicting expired 
cache entries - consider increasing the maximum size of the cache

解决方案

只要在$CATALINA_BASE/conf/context.xml里增加资源最大可缓存的大小就行了,大小可按自己的需要定义  
   # vim /usr/local/tomcat/conf/context.xml 
   <Context>
 
   <!-- Default set of monitored resources. If one of these changes, the    -->
   <!-- web application will be reloaded.                                   -->
   <WatchedResource>WEB-INF/web.xml</WatchedResource>
   <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
   <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
   <Resources
       cachingAllowed="true"
       cacheMaxSize="100000"
   />
</Context>
最后重起tomcat,问题解决!

问题2:剩余内存必须大于2G

问题3:插件下载后继续下面初始化完成点开始的时候跳到一个空白页面

解决:点击地址栏左边的后退按钮即可进入正常页面

接着上面的错误,返回之后虽然进入正常界面,但是会有如下提示:

手动安装这些插件

问题4:脚本权限

尝试修改构建后脚本的权限

问题5:构建个人的github库时,缺失pom文件

可以用公共库中拷贝,传到自己的GitHub上。

8、构建部署前端项目

1,安装nginx

[root@yt ~]# yum install nginx -y
[root@yt ~]# systemctl start nginx

2,测试nginx安装成功

出现nginx服务器的主页

[root@yt ~]# systemctl restart nginx.service

2,安装node.js

服务器上的node版本要和开发环境用的node版本同步,问前端要他的node.js的版本

查看node版本

node -v

1,下载node.js

node.js官网https://nodejs.org/zh-cn

1.把压缩包传到服务器,解压就是安装

2.解压安装

[root@yt ~]# tar -xvf node-v17.9.1-linux-x64.tar.xz -C /usr/local/

3.修改node的名字方便配置环境变量

[root@yt ~]# mv /usr/local/node-v17.9.1-linux-x64/ /usr/local/node

4.配置环境变量

[root@yt ~]# vim /etc/profile.d/node_tools.sh
​
export NODE_HOME=/usr/local/node/
export PATH=$NODE_HOME/bin:$PATH

5.刷新环境变量,测试node和npm是否安装成功

[root@yt ~]# source /etc/profile.d/node_tools.sh
[root@yt ~]# node -v
v17.9.1
[root@yt ~]# npm -v
8.11.0l

3、构建Jenkins任务

​https://github.com/cfg1573/my-vue-2402.git

配置目标机器

[root@yt ~]# mkdir /root/web

[root@yt ~]# vim web.sh

# jenkins 拉取代码存放地址
cd /root/web  # 为什么要切换目录:因为npm install执行安装依赖要在项目目录下才能找到需要的依赖是什么才可以执行。
npm install
npm run build	# 将vue项目进行打包成浏览器可以识别的html、css、js文件
rm -rf /usr/share/nginx/html/*
cp -r /root/web/dist/* /usr/share/nginx/html/
systemctl restart nginx.service

[root@yt ~]# chmod +x /root/web.sh

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文