Linux虚拟机(服务器)安装jenkins实现自动部署Gitee中的项目到服务器。
安装jenkins,必须先安装jdk。而且jdk的本版必须与jenkins软件的版本对应,且jdk的版本必须为11以上且不能是20版本。
安装前注意:
安装jenkins,必须先安装jdk。而且jdk的本版必须与jenkins软件的版本对应,且jdk的版本必须为11以上且不能是20版本。
1.安装并配置jdk
可以查看我之前的文章,这里不再说明(等下放一个链接)。
2.安装jenkins的依赖的插件
这里我使用的是finalshell连接的虚拟机
在finalshell中执行命令:yum install fontconfig
3.下载与自己安装的jdk版本对应的jenkins
https://mirrors.jenkins.io/war/
这里我用的是jdk17,所以我下载的是2.419版本
4.将下载的jenkins.war拖到finalshell中
自己建一个目录拖进来即可
5.启动jenkins
执行命令:
nohup java -jar /usr/app/jenkins.war --httpPort=8777 > /usr/app/jenkins.log 2>&1 &
注意:下面圈住的地方,改为你自己放jenkins.war的绝对路径(全路径)。
6.浏览器访问jenkins服务器
http://192.168.145.128:8777 ip改为自己对应的ip
7.登录
第一次登录时,页面会弹出一个命令,复制到finalshell中就可以获得临时密码。登录后可以在右上角的设置中修改密码。
8.jenkins集成jdk
9.jenkins集成git
9.1jenkins所在的服务器安装git
在finalshell中输入命令:yum -y install git
9.2jenkins集成git软件
10.jenkins集成maven
10.1下载Linux版本的Maven
10.2.安装配置Maven
1. 解压maven压缩包
2. 重命名
3. 配置环境变量 vi /etc/profile
#####MAVEN环境变量#####
export MAVEN_HOME=/usr/app/maven3.9.6
export PATH=$MAVEN_HOME/bin:$PATH
注意这里的路径按照你自己的安装路径写
4. 刷新配置 source /etc/profile
5. 配置maven的本地仓库和远程镜像
<!-- 中央仓库在中国的镜像 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
10.3.jenkins安装maven插件
10.4.集成本地的maven
11.jenkins与gitee绑定
11.1创建git仓库
11.2创建jenkins项目
11.3.使用内网穿透软件
默认gitee不允许内网访问gitee中的代码
注意:这里如果使用的是服务器而不是虚拟机则可以忽略这个步骤。
在该网址https://natapp.cn/注册一个账号 并购买免费的隧道,并下载客户端
11.4.启动natapp穿透软件
解压后自己创建一个start.bat文件,文件中输入以下内容。然后双击start.bat启动软件。
11.5.配置创好的项目
11.6.修改Gitee的内容
12.jenkins完成自动部署功能
思考:项目部署的服务器和jenkins所在的服务器要不要是同一台。==不要再同一台服务器==
原因:jenkins所在的服务器需要安装很多软件。jenkins所在的服务器消耗资源非常大。如果项目和jenkins再同一台服务器,势必会造成项目卡。
解决: 把jenkins所在的服务器,打包好的项目复制到部署的服务器。
12.1.设置免密操作
12.1.1.为什么要设置免密操作:复制到部署项目的服务器,需要每次输入密码,所以这里需要设置免密操作,避免每次输入密码。从而实现自动复制。
12.1.2.在jenkins机器上使用root用户生成秘钥注意此处是root用户
12.1.3生成秘钥的命令:ssh-keygen -t rsa 然后按3次回车
12.1.4.运行后会在当前用户的根目录生成一个.ssh文件夹
12.1.5..ssh文件夹中的文件描述
-
id_rsa
: 生成的私钥文件 -
id_rsa.pub
: 生成的公钥文件
12.1.6.接下来需要将公钥导入到认证文件中
命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
12.1.7.如果希望ssh公钥生效需满足至少下面两个条件:
-
.ssh
目录的权限必须是700 -
.ssh/authorized_keys
文件权限必须是600
12.1.8.给对应文件授权
分别输入下面两个命令:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
12.1.9.将authorized_keys
文件拷贝到另一台部署项目的服务器的root用户.ssh目录下
12.1.9.1 在部署项目的服务器上用root用户创建/root/.ssh文件夹。 命令:mkdir -p /root/.ssh
12.1.9.2 在jenkins服务器上将pub公钥文件拷贝到应用服务器的.ssh目录下
命令:scp -p ~/.ssh/id_rsa.pub root@192.168.223.187:/root/.ssh/authorized_keys
注意:这里192.168.223.187改为你自己的部署项目的服务器的ip
12.1.10.在jenkins服务器上进行免密连接测试.
scp -p ~/.ssh/id_rsa.pub root@192.168.223.187:/root/.ssh/authorized_keys
这里根据需要自己改ip和要复制的文件。发现不需要输入密码就能复制成功。
12.2.实现自动部署项目
1.
然后放入下面的代码
#!/bin/bash
echo "部署的目录和项目名称"
DIR="/data/app"
projectName="my-boot"
echo "待部署的应用服务器,可多台"
server_ips="172.16.3.81"
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
sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.sh
EOF
done
echo "success"
2.在部署项目的服务器的my-boot.jar目录下创建strat.sh和stop.sh并写相应代码
start.sh中代码:
#!/bin/bash
set -e #任何命令出错就退出
set -o pipefail
APP_ID=my-boot
APP_DIR="/data/app"
nohup java -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log &
start_ok=false
if [[ $? = 0 ]];then
sleep 3
tail -n 10 release_out.log
sleep 5
tail -n 50 release_out.log
fi
aaa=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${aaa}" ]];then
echo "Application started ok"
exit 0
else
echo "Application started error"
exit 1
fi
stop.sh中代码:
#!/bin/bash
APP_ID=my-boot
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
修改strat.sh和stop.sh权限:
chmod 777 start.sh
chmod 777 stop.sh
到这里当你每次提交新的代码到远程仓库时,jenkins会自动帮你编译打包并部署项目到服务上并运行了。
更多推荐
所有评论(0)