Jenkins集成JDK、git、gitee、maven逐步实现自动拉取,自动部署,自动启动

1. jenkins集成JDK

  1. 成功登录Jenkins后,选择Manage Jenkins,选择Tools

    在这里插入图片描述

  2. 集成JDK

    在这里插入图片描述

2. jenkins集成git

因为Jenkins自动从git远程仓库拉取代码

首先要在Jenkins所在的linux服务器上安装git

yum install -y git

然后,实行集成JDK的第一步

  1. 配置git

    在这里插入图片描述

3. Jenkins创建项目,拉取git仓库中的代码

  1. 选择新建Item,创建一个Jenkins项目

    在这里插入图片描述

  2. 添加git远程仓库地址

    在这里插入图片描述

现在jenkins无法自动拉取代码【当仓库中的代码发生改变时无法自动拉取】

  1. 手动拉取——点击Build Now,立马构建,若构建成功,表示之前的集成和配置成功

    在这里插入图片描述

4. Jenkins集成maven

由于Jenkins本身不能对代码进行打包。所以我们需要集成maven,而且我们的项目100%都是maven构建的项目

  • linux安装maven
  1. 将下载好的maven文件拉取到Jenkins所在的Linux服务器上

  2. 解压

    tar -zxvf xxx.tar.gz
    

    在这里插入图片描述

  3. 配置环境变量

    vi /etc/profile
    
    export MAVEN_HOME=安装路径
    export PATH=$MAVEN_HOME/bin:$PATH
    

    退出并保存

  4. 重启

    source /etc/profile
    
  5. 查看版本

    mvn -version
    

在这里插入图片描述

显示版本号,即为安装成功

  1. 修改maven配置文件【本地仓库和阿里云远程仓库地址】

    在这里插入图片描述

    可将window里的配置文件覆盖到linux中

  • Jenkins集成maven
  1. 安装maven项目

    在这里插入图片描述

  2. jenkins集成maven

    在这里插入图片描述

5.实现自动拉取

因为gitee仓库的代码——默认gitee不允许内网拉取

所以需要借助内网穿透软件以实现内网拉取

1. 准备内网穿透的软件——NATAPP

可直接参考官方文档:

https://natapp.cn/article/natapp_newbie

  1. 打开网址,进行免费注册

    https://natapp.cn/article/natapp_newbie

  2. 注册成功后,会借助支付宝完成个人信息认证

    • 成功后的页面

      在这里插入图片描述

  3. 功后,点击购买隧道,选择免费购买,点击选择免费购买即可

    在这里插入图片描述

  4. 点击客户端下载,根据具体需要下载对应的版本

    在这里插入图片描述

  5. 将其解压在一个文件夹后,创建一个后缀为.bat的脚本,用于开启natapp。脚本内容为:start natapp -authtoken=xxxx,xxxx内容为自己的authtoken

    在这里插入图片描述

    1. 查看自己的authtoken:点击我的隧道即可看见

    在这里插入图片描述

    1. 点击在上示图片中的配置,配置自己的jenkins的服务器ip和端口号8777,以实现jenkins的自动拉取

      在这里插入图片描述

    2. 最后,双击步骤5中自己创建的.bat文件,生成外网域名

      在这里插入图片描述

以上完成了关于NATAPP的相关操作

2. 关于jenkins上的操作

  1. 创建一个新建item,选择maven

    在这里插入图片描述

  2. 点开该项目配置git

    在这里插入图片描述

  3. 配置构建触发器,做以下操作,点击保存即可【在此之前需要先下载安装gitee插件】

在这里插入图片描述

3. 修改gitee仓库的配置

  1. 选中jenkins配置的那个远程仓库,点击配置,选中WebHooks,点击添加

    在这里插入图片描述

  2. 配置URL和WebHook密码

    在这里插入图片描述

测试

完成上述操作后,即可实现远程仓库改变,jenkins自动拉取

6.实现自动化部署

通过shell脚本实现自动化部署

jenkins 软件需要大量集成第三方很多软件【maven、git、jdk】,如果我们的项目也部署到该服务器下,势必导致项目性能弱

把jenkins所在的服务器下打包好的项目远程复制到其他服务器上。在其他服务器进行项目的启动和关闭

  • 远程复制命令
scp xxx.jar root@远程ip:/远程路径

此时需要输入密码,所以要进行免密复制操作

6.1 免密复制操作

配置ssh免密登录

免密登录主要是方便Jenkins服务器的root用户——向——>应用服务器的root用户上 jar包拷贝。部署本就是jar包拷贝的过程

  • Jenkins机器上使用root用户 生成密钥【注意,此处是root用户】
ssh-keygen -t rsa
然后进行3次回车

运行后会在当前用户的根目录生成一个 .ssh文件夹

ssh文件夹中的文件描述

  • id_rsa :生成的私钥文件
  • id_rsa.pub:生成的公钥文件
  • 接下来,需要将公钥导入到认证文件中【Jenkins】
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

如果希望ssh公钥生效需要满足至少下面两个条件:

  • .ssh目录的权限必须是700
  • .ssh/authorized_keys文件权限必须是600
  • 给对应文件授权【Jenkins】
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
  • authorized_keys文件拷贝到另一台应用服务器的root用户 .ssh目录下

    • 首先在应用服务器上用root用户创建/root/.ssh文件夹

      mkdir -p /root/.ssh
      
    • Jenkins服务器上将pub公钥文件拷贝到应用服务器的 .ssh目录下

scp -p ~/.ssh/id_rsa.pub root@应用服务器的IP地址:/root/.ssh/authorized_keys
  • Jenkins服务器上进行免密连接测试
ssh 应用服务器ip地址

总结

1. 在jenkin所在的服务器使用ssh-keygen -t rsa
2. 把公钥加载到认证文件中cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. 修改.ssh [700]和authorized_keys [600]的权限.
4. 把jenkins服务器上公钥远程复制到免密的服务器上。mkdir -p /root/.ssh
    scp -p ~/.ssh/id_rsa.pub root@应用服务器的IP地址:/root/.ssh/authorized_keys

6.2 用于远程复制的脚本

  1. 点开Jenkins项目,点击配置
  2. 选中下图位置,点击Execute shell,将脚本粘贴到此处

在这里插入图片描述

脚本

#!/bin/bash

echo "部署的目录和项目名称"
DIR="/data/app"
projectName="my-boot"

echo "待部署的应用服务器,可多台"
# 部署项目的ip 
server_ips="172.16.7.112"
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

EOF

done

echo "success"

把Jenkins打包的jar远程copy到指定的服务器下

6.3 用于启动项目的脚本

  1. 根据远程复制的脚本,可知项目打包后的路径/data/app

  2. 该目录下有my-boot目录

  3. 在该目录下创建start.sh文件

    mkdir start.sh
    
  4. 将下列脚本复制粘贴即可

#!/bin/bash
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

6.4 用于关闭的脚本

  1. 根据远程复制的脚本,可知项目打包后的路径/data/app

  2. 该目录下有my-boot目录

  3. 在该目录下创建stop.sh文件

    mkdir stop.sh
    
  4. 将下列脚本复制粘贴即可

#!/bin/bash

APP_ID=my-boot
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

6.5 在Jenkins配置中引入关闭和启动脚本

sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.sh

先关后开

在这里插入图片描述

6.6 测试

测试时,需要在应用服务器上启动该项目,同样在my-boot目录下

java -jar my-boot.bar
  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值