代理池配置(windows server环境)
注 目前的前端代理池已配置好,名称为【CfAgentFrontPool1】,一般不需要操作,可跳过(有一定难度)
开启代理服务器远程连接
具体开启方式可参考文献1,这里提供一个脚本实现,参见附件1,简单介绍一下附件1的内容。
附件1包含2个文件,如下:
其中,.bat文件用于运行.ps1文件(以管理员模式),所以实际使用时,双击运行.bat文件即可。
如果新建代理池,唯一需要修改的就是主体文件,将ip地址修改为代理服务器对应的ip地址即可
文件解压后放在D盘根目录下(否则需要修改.bat文件中的路径),参考
是否成功,参考文献1
代理服务器安装前端环境
至少包括:
- nvm;(重要,不能在建立连接后再安装,不然会出现找不到nvm命令的问题,代理建立后之后的代理服务器的修改并不会同步tfs)
- 项目中用到的对应版本的node
- 私有npm参考验证信息,参见附件3,解压后按下图找到文件,直接替换。
建立连接
建立tfs服务器与代理服务器之间的联系。
- 打开tfs代理池页面,位于主页-设置-代理池
这里需要完成2步操作。
1是要新建代理池(需要管理员权限);2是要下载代理(时间比较长,走的是亚马逊服务器)
附 代理下载步骤
下载完代理,在D盘解压代理文件,参考以下信息创建。
成功连接后会看到tfs中代理池为【联机】状态
问题解决
脱机状态
tfs中显示代理状态为脱机,一般出现在服务器异常断电时,需要重新开启服务,服务位置如下图
CI创建
与代理池(代理池是针对所有项目的)创建不同,ci是针对每个项目的(依附于各个项目存在),下面以具体项目为例来讲解配置ci
进入ci创建页面
创建ci定义
前提 创建ci必须拥有该项目的管理员权限,否则在创建定义时无法选择代理池
步骤如下
编辑ci处理步骤
!!!node版本说明(重要)
注意 目前的node版本只有8.11.3
,10.16.0
,12.14.1
、12.16.2
,14.17.3
,16.13.0
4个版本(会按实际情况持续维护,如果没有的请联系安装),小版本不同的请使用相邻的版本。另外公司的项目请配置好npm走私有源(一定要配置),教程请点击。
!!!npm i安装失败说明(重要)
对于目前的大部分项目而言,第一次使用npm i
命令安装node_module包大概率会失败,提供2种方式解决:
方法1:
- 在上面步骤中的npm install前【临时】增加
npm i -g rimraf
和rimraf node_modules
2个命令;
方法2:
- 在代理服务上直接操作,确保代理服务器环境下的node_modules安装成功即可
关于第1种方法2个命令的作用与第2种方法的一般操作方法,参见:
node_modules包安装失败
!!!ci运行失败说明(重要)
如果在复制发布项目时发生错误,那一般不是时npm run build发生了问题,即打包不成功导致没有dist包可以复制。此时建议在本地先打包测试一下看看哪边报了错,修改后重新运行即可
▶ 配置步骤
如果第3步(打包项目)npm run build命令在package.json中指向脚本打包(产生压缩包),建议在package.json中另外配置一个打包命令,比如下图:
然后在ci配置中配置
按以上步骤处理完保存即可
ci到这里基本就结束了,但是,为了确保项目能正常运行,也为了后续的cd,需要手动运行至少1次。开启方法为选择【对新生成进行排队】(选择好对应的ci定义,因为可能存在多个ci)
注 第1次时间可能会比较长,因为涉及到拉取代码,安装node包等,请耐心等待。确保执行正确后就可以进入下一步操作了。
CD创建
创建cd定义
▶ 编辑cd处理步骤
!!!注意
创建完成后,通过发布按钮运行任务,检验是否正确配置
可能出现的问题
发生系统错误 53
防火墙中的文件和打印机共享(SMB-In),确保域网络打开
测试是否联通可以参考文献3和4
显示列表是空的,表示成功联通
tips 可以通过net view \\目标服务器IP
命令查看是否可以联通目标服务器
错误64(指定网络名不再可用)
问题分析:目标服务器的默认共享被禁用了
问题解决:目标服务器安装了火绒,火绒在2020年12月份上线了横向渗透防护功能,由于服务器异常重启,导致了横向渗透防护功能生效了。
在所有目标服务器中将215,216(TFS的打包服务器)ip段加入信任列表即可
发布通知(基于WebHook和钉钉)
tfs支持配置webHook,同时钉钉也支持webHook机器人,通过webHook,可以实现部署后发送通知至钉钉。
tfs配置
Step1
Step2
Step3
说明:
标注1的位置可以有3个备选URL(鹏鹏写的,) | 阶段 | URL地址 | 说明 | | —- | —- | —- | | 部署开始 | http://192.168.2.36/cicd/api/cicd/start | 可以不用 | | 部署成功 | http://192.168.2.36/cicd/api/cicd/end | 对应step2状态【成功】 | | 部署失败 | http://192.168.2.36/cicd/api/cicd/error | 对应step2状态【失败】 |
标注2内容如下
projectName:项目名称(只接受英文,eg: SIPZCTS_WEB)
atMobiles:手机号(自己改)
url:https://oapi.dingtalk.com/robot/send?access_token='##'(钉钉机器人的webhook)
附件