首页 新闻 搜索 专区 学院

jenkins在window集群环境中如何部署自动化发布?

0
悬赏园豆:10 [已解决问题] 解决于 2020-11-03 10:34

1、公司环境,堡垒机window server 2008环境
2、软件应用,C#、前端React/vue
3、部署模式,前后端分离每两台机器进行负载均衡,如70/71(前端服务器)、113/114(接口服务器),测试环境服务器:168(前端服务器)、48(API服务器)
4、假设这几台服务器都在同一个局域网,相互可以访问

测试环境部署jenkins模式:
第一步,在本地开发环境安装jenkins,如localhost:8080,使用花生壳内网穿透作为webhook配置在github上
第二步,在168服务器上部署FTP站点,接受jenkins上传的项目部署包
第三部,在jenkins上创建任务,提交到github后会自动构建,然后打包上传到168服务器指定站点
以上操作都是好的,且能正常运行!如图

但我现在有一些问题:
问题1、当我在本地jenkins上执行任务的的时候,构建前操作的备份bat脚本,其实是在本地执行而不是服务器上。我要如何解决此问题如:

@echo off
echo 开始备份...
set yy=%DATE:~0,4%
set mm=%DATE:~5,2%
set dd=%DATE:~8,2%
set hh=%time:~0,2% 
set mi=%time:~3,2%
set ss=%time:~6,2%

echo 正在复制"D:\WebSite\txz2020uat\build"文件夹的内容至"D:\BAK"文件夹下......
xcopy "D:\WebSite\txz2020uat\build" "d:\bak\txt2020uat\%yy%%mm%%dd%%hh%%mi%%ss%" /e/I/d/h/r/y
exit
echo 备份完成...

问题2、我现想在jenkins上进行创建任务把站点部署到生产环境70/71上,那我的jenkins是不是分别要在70/71服务器上分别安装然后部署?我觉得这样非常的不科学,是否有其他方式?

一起走过的日子……的主页 一起走过的日子…… | 菜鸟二级 | 园豆:225
提问于:2020-11-02 15:37
< >
分享
最佳答案
0

1、第一步,在WINDOW服务器上安装SSH,见https://www.cnblogs.com/chenmingjun/p/8535067.html 安装成功后如果一直提示密码错误,则需要重启FreeSSH服务

2、第二步,在JENKINS中添加 SSH

3、第三部,在任务中使用SSH进行部署,网站站点会进入当前登录用户根目录下 如 C:\Users\Administrator ;

3.1 先执行站点备份,再把当前站点发布

C:/Users/Administrator/txz2020uat/bak.bat

@echo off
echo 开始备份...
set yy=%DATE:~0,4%
set mm=%DATE:~5,2%
set dd=%DATE:~8,2%
set hh=%time:~0,2% 
set mi=%time:~3,2%
set ss=%time:~6,2%

echo 正在复制"D:\WebSite\txz2020uat\build"文件夹的内容至"D:\BAK"文件夹下......
xcopy "D:\WebSite\txz2020uat\build" "d:\bak\txt2020uat\%yy%%mm%%dd%%hh%%mi%%ss%" /e/I/d/h/r/y
echo 备份完成,开始发布...
xcopy "C:\Users\Administrator\txz2020uat\build" "D:\WebSite\txz2020uat\build" /e/I/d/h/r/y
echo 发布完成!!  
exit




总结

1、如果需要把局域网内的window服务器统一一个JENKINS管理,则需要在每台服务器上安装window ssh;
2、如果安装window ssh 后,一直登陆提示密码失败,则需要重启FreeSSH服务;
3、服务器上防火墙22端口,出站入站需要打开;
4、创建任务的使用使用publish over ssh进行部署并进行相应的备份等操作;

问题

直接把 C:/Users/Administrator/txz2020uat/bak.bat内容中的脚本放到jenkins中执行会报错,目前不知是何原因,解决后第一时间更新。

  • 以上操作仅限本人在测试环境测试通过,如在生产环境请在运维人员指导下谨慎使用,本人不对以上分享产生的风险负责。
一起走过的日子…… | 菜鸟二级 |园豆:225 | 2020-11-03 10:30
其他回答(2)
1

当然不用每个服务器都安装啦。关于部署问题,因为看见过没实践过,所以提供个思路哈。可以了解一下jenkins的插件publish over cifs。(https://blog.csdn.net/flyingshuai/article/details/77163376)
我之前看别人用publish over ssh在linux上实现远程部署,windows的话你试下上提到的那个。
思路是jenkins部署在某一台服务器上,再往其他服务器推送文件,并执行相关命令。

收获园豆:8
默卿 | 园豆:4965 (老鸟四级) | 2020-11-02 16:41

你的这个文章能解决我的50%问题:用CIFS 代替了 FTP,然后不用每个服务器都部署一个jenkins;但是在使用CIFS的时候,在发布的同时不能备份站点。类似SSH 还可以执行shell命令

https://www.cnblogs.com/chenmingjun/p/8535067.html

这篇文章可以让window支持ssh。

@一起走过的日子……: SSH plugin 远程插件可以让你远程执行命令。你先推送文件到服务器临时文件夹,再通过命令备份站点,以及最后将临时文件夹覆盖到站点目录,你看是否可行。

支持(0) 反对(0) 默卿 | 园豆:4965 (老鸟四级) | 2020-11-03 09:18

@默卿: 对,思路是对的。目前已经把网站上传到了window用户文件夹下。

但我卡在了命令这里:
1、先执行站点备份
2、再把临时站点目录复制到网站目录

如图:

0

1 在服务器上执行脚本
2 服务器上部署jenkins多节点

收获园豆:2
ycyzharry | 园豆:22493 (高人七级) | 2020-11-02 23:59

能具体点吗?

清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册