官网:Jenkins
技术文档:http://t.csdnimg.cn/73joH
部署位置:192.168.1.200:8080
账号密码:lei\lei19960711
原理图:
1. 系统要求
最低推荐配置:
- 256MB可用内存
- 1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB)
- Java 8—无论是Java运行时环境(JRE)还是Java开发工具包(JDK)都可以。
注:最新版jenkins: 2.450,要求必须是jdk11
- 已安装git,安装命令:yum install git
2. 安装jdk
2.1 删除自带的jdk
在我们安装linux虚拟机时可能会自带安装一个jdk,这时候如果想要干净方便的删除jdk的话可用以下方法
- 先查看自带的jdk有几个,用命令:
rpm -qa | grep -i java 意思是查询所安装的带有java的rpm软件包。
- 去删除,命令如下:
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
解释:
-
- rpm -qa:查询所安装的所有rpm包
- grep -i:忽略大小写
- xargs -n1:表示每次只传递一个参数
- rpm -e --nodeps:强制卸载软件
- 编辑profile文件,去除环境变量配置
vim /etc/profile
然后 source命令让修改后的profile文件立即生效 source /etc/profile
- 最后可以再用命令: 查看是否还在即可
rpm -qa | grep -i java 或者查看java版本 java -version
2.2 安装openjdk11
yum install -y java-11-openjdk
3. Jenkins安装
jenkins安装包:http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
# 安装rmp包
rpm -ivh /root/jenkins-2.450-1.1.noarch.rpm
# 启动jenkins服务
systemctl start jenkins.service
# 开机自启jenkins
systemctl enable jenkins.service
# 查看jenkins状态
systemctl status jenkins.service
# 查看jenkins启动日志
journalctl -u jenkins.service
- jenkins默认端口为8080,假使端口冲突,可采取以下方式更换默认端口号
-
- systemctl status jenkins.service:找到jenkins.service的位置
-
- vi /usr/lib/systemd/system/jenkins.service
- 修改:Environment="JENKINS_PORT=xxxx"
- 登录web端:(http://192.168.1.200:8080)
可在提示的目录下找到初始密码
cat /var/lib/jenkins/secrets/initialAdminPassword
- 进入插件安装选择
安装插件有坑,特此记录:
-
- 之前采用docker安装jenkins,但是版本太低,以至于插件太新,所以下载不了,故手动安装最新版本jenkins
- 按照网上说的配置了清华镜像,没有卵用,连着家里的wifi,亲测可直接下载插件
- 设置用户名、密码、邮箱 => 成功登录
4. 前置环境配置
4.1 安装maven
- 官网下载maven包
maven 官网地址:Maven – Download Apache Maven
- 下载完成后,上传到 linux
- 创建maven 安装目录
mkdir -p /usr/local/maven
chmod 777 /usr/local/maven
- 解压 maven 安装包到 maven 文件夹
tar -zxvf apache-maven-3.8.5-bin.tar.gz -C /usr/local/maven
- 创建 maven 资源库目录
mkdir -p /m2/repository
- 替换settings.xml 文件,配置淘宝镜像
其位于:/usr/local/maven/apache-maven-3.9.6/conf
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
<localRepository>/m2/repository</localRepository>
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
</servers>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
<profiles>
</profiles>
</settings>
- 添加maven环境变量
vi /etc/profile
# 添加以下内容
MAVEN_HOME=/usr/local/maven/apache-maven-3.9.6
PATH=$MAVEN_HOME/bin:$PATH
export MAVEN_HOME PATH
# 配置文件重新生效
source/etc/profile
# 测试成功与否
mvn -v
4.2 安装node
参考教程:http://t.csdnimg.cn/whnG0
- 下载安装node
这里踩了个坑:因为高版本的node需要升级make等,经尝试失败,所以我下载的是14.17.0版本
- 解压node到/usr/local/node
tar -zxvf node-v14.17.0-linux-x64.tar.gz -C /usr/local/node
- 创建软连接
ln -s /usr/local/node/node-v14.17.0-linux-x64/bin/node /usr/local/bin/node
ln -s /usr/local/node/node-v14.17.0-linux-x64/bin/npm /usr/local/bin/npm
- 创建环境变量
vi /etc/profile
# 输入以下内容
export NODE_HOME=/usr/local/node/node-v14.17.0-linux-x64/bin/
export PATH=$PATH:$NODE_HOME:/usr/local/bin/
# 配置文件重新生效
source/etc/profile
5. Jenkins部署后端服务
5.1 下载maven插件
点击Manage Jenkins => Plugins => Available plugins
网络正常的情况下,会在最后显示插件的下载进程
Manage Jenkins => Tools ,配置maven的环境变量
5.2 下载配置Publish Over SSH插件
其可以简单理解为是通过SSH连接其他Linux机器,远程传输文件及执行Shell命令
搜索插件,并下载安装
假定想链接的服务器ip为192.168.1.100,配置过程如下:
点击Manage Jenkins => System进入全局系统配置
找到Publish over SSH => 点击SSH Servers“新增”
其中Hostname即为目标服务器的ip地址、Username即为用户名
点击高级 => 勾选“Use password authentication...”即可输入密码
点击“Test Configuration”可测试能否链接成功
5.3 新建maven项目
新建Item => 选择第二个:构建一个maven项目(前提是执行了5.1所述)
接下来就是最重要的Configure,下面仅以最基本的配置举例:
源码管理中,配置git仓库地址;指定克隆分支
构建触发器,勾选当子依赖的快照版本被build时,也会触发其构建
在Build中指定pom.xml文件
在Post Steps中点击Add post-build step
在弹出的虚框中配置目标服务器
Name的下拉列表即为5.2中配置的服务器列表
Source files:需要发送给目标服务器的文件,可采取通配符的方式,下面的表达式为根目录(/var/lib/jenkins/workspace/)下及其子级的中以main开头的jar包
Remove prefix: 目录结构是相对于基目录(通常是工作区)创建的。通常不希望在服务器上创建这些文件的完整路径。这是可以利用它进行剔除。
Remote directory: 传输文件的目标地址(前面不必加root,因为以root登录,就会自动传递到root下的xxx)
Exec command: 传输任何文件后,将在远程服务器上执行此命令。
最后点击保存,即可创建一个job,点击右侧的三角即可执行任务
点击图标可以查看控制台输出
目标服务器已经开始打印日志,说明部署成功
6. Jenkins部署前端项目
前端部署需要node,经验证高版本的node一般情况下需要更新make,gcc和glibc
不知道是什么原因我没成功,而且也有大神说不建议更新,怕破坏虚拟机,所以我就不再尝试了,具体操作可参考
这里我使用的是node14.17.0版本,经验证,可不必更新make等版本
新建一个Freestyle project任务即可
类似于按照部署后端项目,配置源码管理后,可增加构建步骤,选择Execute shell,以shell脚本的方式部署
下面的例子执行了以下逻辑:
进入到zz-admin-web前端项目的工作空间,配置淘宝镜像,然后引入依赖
随后build打包为静态文件,并打包为web.tar.gz
接下来就是将打包好的静态文件,发送至目标服务器,同样在构建后操作中选择Send build artifacts over SSH
下述配置的主要逻辑为:将打包好的tar包发送到nginx对应的html文件夹下,并进行解压,然后在删除tar包
此时前端项目的部署完成。
7. Jenkins自动化部署项目
7.1 Webhooks钩子自动构建
适用场景:当修改代码后,上传至git后自动触发构建任务;执行合并操作是自动化构建
这个请求放在postman或git托管平台中是不行的,这是因为需要密码权限验证,可利用插件解决