一、什么是jenkins
jenkins是一个开源软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,作为一个可以提供开放易用的软件平台,使用软件项目可以进行<持续集成>
随着项目内容越来越大,就会造成编译速度越来越慢,这可以使用一个工具,自动检测远程仓库的变化,,如果变化了,就会自动进行编译
二、如何安装jenkins
可以从官网上拉取压缩包
先配置环境变量 :
vi /etc/profile
export JAVA_HOME=/usr/local/soft/jdk17
export PATH=$PATH:$JAVA_HOME/bin
刷新配置文件目录
执行命令:
sudo yum install fontconfig
使用以下命令让他在后台运行
nohup java -jar /usr/local/soft/jenkins.war --httpPort=8777 > /usr/local/soft/jenkins.log 2>&1 &
其中:
nohup--当服务休眠时jenkins服务依然运行
java -jar : 运行jenkins.war文件
--httpPort: http的端口号
/usr/local/soft/jenkins.log 2>&1: 启动jenkins生成日志放入该文件中
&:表示后台运行
————————————————
版权声明:本文为CSDN博主「g474928663」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/g474928663/article/details/132631107
注意:他是一款由java语言开发的工具,需要在安装在由jdk的环境下, jdk的版本需要11以上且不能是20,最好是17
需要修改账号密码
访问的浏览器:端口号为8777
使用wind系统访问这台虚拟机的ip地址加端口号,进入官网
原始密码在,这个位置
四、配置相关依赖
需要从git仓库拉取项目以及需要编译所使用jdk工具进行编译,配置相关依赖
安装相关的管理类
配置jdk依赖
配置git依赖
依赖需要安装在jenkins里面
# 安装
yum install git -y
# 查看版本
git --version
配置maven
jenkins打包时。,需要使用maven插件
安装maven
解压:
tar -zxvf XXX.tar.gz
配置maven环境变量
vi /etc/profile
##########################MAVEN环境的配置##########################
export MAVEN_HOME=/usr/local/soft/maven3.9.4
export PATH=$PATH:$MAVEN_HOME/bin
配置阿里镜像
:拉取速度加块
<localRepository>/path/to/local/repo</localRepository>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
在jenkins集成maven
在jenkins下载一个maven项目的插件
集成gitee
在jenkins官网里面下载
配置gitee的地址,设置为自动触发
往下划生成密码
设置他的启动脚本
#!/bin/bash
echo "部署的目录和项目名称"
DIR="/data/app"
projectName="my-boot"
echo "待部署的应用服务器,可多台"
server_ips="192.168.220.222"
for server_ip in ${server_ips[@]}
do
echo "ssh连接进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mkdir -p $DIR/backup/${projectName}
mkdir -p $DIR/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar
fi
EOF
echo "拷贝jar包到目标服务器的tmp目录"
scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jar
echo "ssh远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar
${DIR}/${projectName}/stop.sh
${DIR}/${projectName}/start.sh
EOF
done
echo "success"
单击保存
打开git仓库
将以上代码添加到git仓库
再使用内网穿透的ip替换掉这个IP地址
使用这个http:XXX加上路径,就可以访问项目了(需要保证内网穿透的是项目所在的运行服务器的IP地址)
五、使用git远程仓库手动连接jenkins
作用是,当远程仓库代码发生变化时,可以将代码打包为jar包,省去打包时间:(后面有自动打包,节省时间)
设置git仓库
选择添加密码
测试
git地址,在输入自己仓库的路径
点击拉取git仓库
编译完成,查看文件所在位置
在最下面会有一个存放地址
在虚拟机启动项目
出现以上情况,需要在项目的pom文件加入以下代码(更改代码,需要重新提交,再次拉取)
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
六、自动拉取项目
部署其他服务器
还需要将打包好的项目部署在另外一台服务器上,并且设置他的免密操作,不然每更新一次代码,就输入一次密码,太麻烦了
免密登录主要是方便jenkins服务器(192.168.220.223)的root用户—》应用服务器192.168.220.222的root用户上的jar包拷贝,部署本就是jar包拷贝的过程
设置内网穿透
当gitee仓库中代码发生改变时,需要我们手动从git拉取代码。并手动完成编译和打包。
默认gitee不允许内网自动拉去代码。-------需要配置内网穿透。
内网穿透软件有很多:而我们使用natapp。NATAPP-内网穿透 基于ngrok的国内高速内网映射工具
需要使用一个软件完成内网穿透,以便其他设备访问这个项目
打开natapp下载的地址
设置免密操作
ssh-keygen -t rsa
# 3次回车
他会生成两个文件夹
id_rea: 生成的私钥文件
id_rea.pub :生成的公钥文件
将公钥认证到配置文件里
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
想要公钥生效需要满足
.ssh目录的权限必须是700
.
ssh/authorized_keys文件权限必须是600
修改权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
打开需要运行项目的服务器(192.168.220.222)在里面创建一个.ssh文件夹
mkdir -p /root/.ssh
在运行服务器上创建一个文件(负责接收)
mkdir -p /data/app/my-boot
在jenkins服务器里,将压缩jar包复制到运行服务器上
scp -p ~/.ssh/id_rsa.pub root@运行服务器ip:/root/.ssh/authorized_keys
在jenkins服务器上输入运行服务器的密码
因为已经配置过免密操作,只需要第一次输入秘密,之后无需再次输入密码了