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服务器上分别安装然后部署?我觉得这样非常的不科学,是否有其他方式?
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中执行会报错,目前不知是何原因,解决后第一时间更新。
当然不用每个服务器都安装啦。关于部署问题,因为看见过没实践过,所以提供个思路哈。可以了解一下jenkins的插件publish over cifs。(https://blog.csdn.net/flyingshuai/article/details/77163376)
我之前看别人用publish over ssh在linux上实现远程部署,windows的话你试下上提到的那个。
思路是jenkins部署在某一台服务器上,再往其他服务器推送文件,并执行相关命令。
你的这个文章能解决我的50%问题:用CIFS 代替了 FTP,然后不用每个服务器都部署一个jenkins;但是在使用CIFS的时候,在发布的同时不能备份站点。类似SSH 还可以执行shell命令
https://www.cnblogs.com/chenmingjun/p/8535067.html
这篇文章可以让window支持ssh。
@一起走过的日子……: SSH plugin 远程插件可以让你远程执行命令。你先推送文件到服务器临时文件夹,再通过命令备份站点,以及最后将临时文件夹覆盖到站点目录,你看是否可行。
@默卿: 对,思路是对的。目前已经把网站上传到了window用户文件夹下。
但我卡在了命令这里:
1、先执行站点备份
2、再把临时站点目录复制到网站目录
如图:
1 在服务器上执行脚本
2 服务器上部署jenkins多节点
能具体点吗?
楼主有联系方式吗 我最近也在搞这 想请教下