jenknis配置笔记二(内外网拷贝及简易版无感发布)

本文档介绍了如何通过jenkins实现内外网文件的安全拷贝和简易无感发布。首先,通过中间服务器作为媒介进行内外网拷贝,并配置SSH公钥避免密码输入。接着,详细阐述了无感发布的流程,包括从中间服务器拷贝文件到目标服务器,以及通过脚本自动更新服务。最后,提及jenkins配置无感发布的方法以及后续可能涉及的后端单机发布和前端静态资源发布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言:
上一章节的配置是直接从gitLab等仓库中直接打包并启动的案例。本章节是基于内外网拷贝并部署的一些思路及简易版无感发布实现。

1.内外网拷贝

由于安全问题,内网(224服务器)的文件无法直接拷贝到外网,所以需要一个媒介(中间服务器107)来实现拷贝。
注:107服务器即要能访问内网,也要能被外网所访问。案例中jop是107服务器的账户,j224是224服务器的账户。自己做相应调整

  • 在中间服务器创建拷贝脚本:/home/jop/jenkins/script/transTzmall224.sh
/home/jop/jenkins/script/transTzmall224.sh tzmall224 ${service}-biz.jar
#!/bin/bash
# "----begin copy file----$1指从内网拷贝后放置到中间服务器的X路径  $2指内网jar包全名。"
path=/data/tzmall/services/ssh/jar
user=j224
ip=192.168.100.224
scp $user@$ip:$path/$2 /home/jop/jenkins/$1/$2

if [ $? -eq 0 ]; then
                echo "========  copy file ok! ========"
                exit 0
else
                echo "========  copy file failed! ========"
                exit 1
fi
# "----end copy file----"

很明显,path、user、ip都是内网服务器的信息,该脚本用于从内网拷贝文件到中间服务器。

  • 将中间服务器操作用户的公钥放到224服务器 j224的authorized_keys
# 107服务器
# 如果是root账号,则使用下面命令查询是否已生成过
cd ~/.ssh/
# 如果是其他账号,则使用下面命令查询是否已生成过
cd /home/账户名/.ssh/
# 如果已经有可以直接使用,无则使用下面的命令生成,一路回车即可(会覆盖已有的!)
#ssh-keygen
# 将本地机器的公钥拷贝到远程主机上,并重命名为107pub(自己根据自己操作账户选择命令)
scp ~/.ssh/id_rsa.pub j224@192.168.1.224:~/.ssh/107pub
scp /home/jop/.ssh/id_rsa.pub j224@192.168.1.224:/home/j224/.ssh/107pub
# 224服务器
# 在远程主机上,将 127pub 文件的内容追加到 authorized_keys 文件的末尾
cat ~/.ssh/107pub >> ~/.ssh/authorized_keys
cat /home/j224/.ssh/107pub >> /home/j224/.ssh/authorized_keys

例:107的用户jop创建transTzmall224脚本,那么就要将jop的公钥放到224服务器的j224的authorized_keys。至此,运行transTzmall224脚本就能实现内外网文件拷贝了。

其他: 简单说明一下为什么要配置公钥:
当我们在107中间服务器想登录远程主机,会使用如下命令

ssh j224@192.168.100.224
j224@192.168.100.224's password: 提示你要输入密码

此时会提示需要输入远程主机j224账号的密码,这就是一种验证。在 SSH 中,【每个用户】都能生成一对公钥和私钥。我们可以将107服务器的用户jop的公钥放到224服务器的j224的authorized_keys中, SSH 客户端会自动从107的 /home/jop用户/.ssh/ 目录查找匹配的私钥文件,进行身份验证从而实现免密登录(首次还是要输入密码?)

scp 命令同理,所以我们需要将107服务器创建 transTzmall224.sh脚本的用户的公钥放到 224服务器的用户j224的authorized_keys中。

2.无感发布(127和128都需要放脚本)

案例以 129(用于文件备份,从中间服务器拷贝文件到129等)、 127tzmall(jar服务实际发布的服务器) 和 128tzmall(jar服务实际发布的服务器)三台服务器演示。注册中心为Nacos,版本为2.1.1。

  • 129服务器写个脚本/opt/jop/script/prepare-test.sh,该脚本将中间服务器的 jar包拷贝到 129服务器 并发布企业微信推送
/opt/jop/script/prepare-test.sh tzmall224 ${service}-biz.jar 无感发布中
#!/bin/bash
user=jop
ip=xxx.xxx.xxx.107
port=xxxx
path_net=/home/jop/jenkins
path_local=/opt/jop

strdate=`date "+%H:%M:%S"`
curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=企业微信机器人key"   -H "Content-Type: application/json"    -d ' { "msgtype": "text", "text": { "content": "【发布提示】\n'$strdate"  "$2' 【测试环境】'$3'" } }'
# "---- begin backup old file ----"
    cp $path_local/issue/test/$2 $path_local/backup/test/$2.`date "+%Y-%m-%d_%H:%M:%S"`
    if [ $? -eq 0 ]; then
                echo "========  backup old file OK! ========"       
    else
                echo "========  backup old file FAILED! ========"
                #exit 1
    fi
# "---- end backup old file ----"

# "---- begin copy file to rollback----"
    cp -f $path_local/issue/test/$2     $path_local/rollback/test/$2
    if [ $? -eq 0 ]; then
                echo "========  copy file to rollback OK! ========"       
    else
                echo "========  copy file to rollback FAILED! ========"
                #exit 1
    fi
# "---- end copy file to rollback ----"

# "---- begin download file ----"
    scp -P $port $user@$ip:$path_net/$1/$2 $path_local/issue/test
#echo hereIsDownFile
#    echo scp here is ok
    if [ $? -eq 0 ]; then
                echo "========  download file OK! ========"       
    else
                echo "========  download file FAILED! ========"
                exit 1
    fi
# "---- end download file  ----"

scp验证问题和上面一样,还是放公钥到authorized_keys。

  • 127和128服务器脚本如下;脚本注释很多,不做说明
/opt/jop/script/issue-test.sh ${service}
#!/bin/bash
#只要改localHostIp 和 groupName 即可。例127服务器则写127。
localHostIp=192.168.1.128
# 查询指定服务的全部实例, $1为参数服务名 例 tzmall-basicdata
instanceUrl="curl -X GET http://tzm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值