TFS持续集成的就是跟踪代码变更,合并,能够自定义脚本,任务进行自动化测试,发版,部署,有点像docker的味道。在这个代理服务器分布式中tfsserver起着能够随时拿去最新代码能够统一执行任务的角色,所不同的是代理服务器仅仅是执行具体的编译,而tfs起着统一管理,调度,安排的作用。
那么tfs持续集成是怎么实现的?
1 来看一篇博客
http://www.cnblogs.com/zjoch/p/5741499.html
先要理解tfs的持续集成的架构,即分布式架构,一个服务器可以配置多个代理池,每个代理池可以注册不同的代理服务器,每个代理服务器可以被定义多个任务
那么首先来解释一下代理池是什么?
代理池其实就是一个容器与线程池的机制类似,他动态的监视代理服务器的状态,当还有任务需要执行,在代理池中分配空闲的代理服务器给任务进行执行,就是这么简单的理解就可以了
2 代理服务器
是的代理服务器,就是相当于公司部署了一个tfsserver,比我这个server是12的地址,有一天我自己下载一个代理服务器包到本地执行相关的配置命令然后搞一个windows服务器启动起来去tfsserver认证就可以了,其实认证的时候也就注册了,两边分布式的进行,注册上了就可以给代理池使用了。
3 注册代理服务器的过程蛋疼的事儿
不得不说windows ms应该是一直以来都没有把权限机制吃透,所以会出现很多权限的奇怪问题,也有像博客里面提到第一个注册的时候代理服务器是红色的也就是授权失败了,我也是删掉,再来注册配置,饭饭服务搞了几次才神奇的变绿了,哎 我那个去搞不懂ms这个权限咋个在做的。
有一天我要迁移tfs代理服务器的代理池,于是乎就要重新来一次了,将代理从原有池中删除,运行代理服务器的cmd来注册,注册到目标代理池发现注册上了结果不起作用,删掉再试也不行,果然ms是使用了ie做的代理服务器来连接tfs中心服务器,ie自然要缓存你在tfs中心服务器上的账号,他会使用这个去登陆验证你的tfs使用权限,并且ie中需要将tfs服务器地址添加到受信任的站点里去,哎ms真他妈蛋疼。然后就ok了
具体详细的流程是
1 运行ConfigureAgent.cmd
2 在输入账号的时候就是输入你自己机器的当前用户和密码
3 如果注册过后在tfs上去看发现是红色的
4 打开ie把tfs地址粘贴进来访问tfs,然后输入你在tfs上使用的账号和密码(注意tfs需要域比如我的是esp/xiangxiaode),然后登陆进去,并且把他加入受信任的站点。
5 在代理池把代理删掉,再重新注册ok,变绿色了可以使用了
6 把自定义的生成脚本使用的代理池修改一下
4 关于tfs角色
1)代理池管理员
也就是能够管理代理池的用户
2)代理服务器管理员
也就是代理服务器注册的时候需要的用户,每次都会带着这个用户去做验证,所以这2个角色要搞起哦
这里专门有一篇帖子说过这个事情
http://www.cnblogs.com/danzhang/p/6136149.html
5 之所以我在本地搞了一个服务器的原因
原本tfsserver本地已经配置了net mono的编译环境了,但是但是现在我们使用了angular来做前端开发,那么前端开发使用git方式托管,自然也是要能够持续集成的。但是但是问题在于tfsserver是一台内网服务器,他没有链接外网的能力所以nodejs,npm那一套在线化安装就不灵了,这个时候我本地呢,就有前端开发环境,也可以联网所以就把本地配置了一个代理服务器来实现自动发版的需要,方便测试人员更新版本。
6 在执行配置服务脚本的是遇到需要升级powershell
具体可以参考:http://www.cnblogs.com/wenBlog/p/6198354.html,按照说明升级即可
来源:https://www.cnblogs.com/rjjs/p/7368198.html