TFS持续集成
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,按照说明升级即可
TFS持续集成的更多相关文章
- 在TFS持续集成(持续发布)中执行Telnet任务
Telnet是一种在因特网或局域网上使用虚拟终端连接,提供双向交互式文本通信设备的协议. 它是最早的互联网通讯协议之一.自1969年启用以来,已经经过了将近50年时间,在开放式的操作系统中拥有广泛的用 ...
- 在推送提交之后阻止Azure DevOps (TFS)持续集成
在Azure DevOps服务器上配置生成定义时,可以配置连续集成(CI)生成.每次签入或提交到源代码库时都会自动运行一个CI构建.这种机制允许开发人员启动一个自动化的过程,例如编译和部署构建.这是一 ...
- 使用VSTS/TFS搭建iOS持续集成环境
TFS 自2015版开始支持跨平台的持续集成环境,通过提供开源的build agent为 Windows / linux / macOS 提供了统一的持续集成环境管理能力.这篇文章给大家介绍一下如何使 ...
- TFS Build做Web应用持续集成发布的一个技巧
由于面向接口编程的关系,许多实现往往是动态注入运行,在一个项目中直接引用实现dll编译是不合理的.通常我们会在Post Build Event中添加一些xcopy命令将运行时才需要的dll复制到输出目 ...
- Android Studio 集成 TFS,实现安卓移动开发的持续集成和交付(DevOps)
目录 1 集成TFS系统.... 1.1 概述.... 1.2 安装TFS插件.... 1.2.1 在线安装方式.... 1.2.2 离线安装方案.... 1.3 常见操作.... 1.3.1 新建G ...
- 从TFS到git的持续集成之路
前言 公司目前使用TFS,由于TFS不灵活不能很好的持续集成,且给测试造成很大重的负担,所以近期准备迁移到git上 目标 解决项目运转的瓶颈(版本太多,导致测试跟不上,需引入自动化测试) 过程 主线分 ...
- Jenkins持续集成 & .NET
最近受累于测试环境每次发布都很麻烦,而且我们有多个测试环境,因此专门抽时间做了Jenkins的配置和研究. 折腾了两天终于绿灯以后,先来个截图,BlueOcean UI还是很nice的. 环境搭建 找 ...
- 使用CruiseControl.Net全面实现持续集成
持续集成想必大家很多人都听说过,甚至都实践过,最近我又一次亲历了一次持续集成,现将我的经验分享给大家.关于持续集成的理论在本文概不涉及,本文的主要目的是实战CruiseControl.Net,用它来全 ...
- VSALM 动手实验 - 持续集成
Visual Studio 应用生命周期管理(VSALM - Visual Studio Application Lifecycle Managemnet)是微软基于Visual Studio产品线所 ...
随机推荐
- 「PHP」策略模式
引言 所属:行为型模式,常用设计模式之一 学习资料: <大话设计模式>程杰 模式概述 分享一篇关于策略模式讲的很好的文章,大家可以参考一下:https://www.cn ...
- 部署laravel项目
1 先登录到服务器上,将代码克隆下来 git clone 项目地址 2 避免composer太慢,启用本镜像服务 可以先安装 apt-get install zip,unzip,php7.0-zip ...
- day 21继承
1.了解Python2和python3类的区别: python2.3之前使用的是经典类, 在2.3版本之后组,使用的是新式类 MRO: method resolution order 方法的查找 ...
- 【AD】自己画板的备忘
快捷键: [Ctrl + M ]计算出两点之间的距离,画电路板时会用到 [Ctrl + Q ]在设定X.Y..等等的地方,快捷键可以公英制快速切换 [shift + 空格键 ]在布线的同时,此快捷键可 ...
- 用kubeadm构建k8s集群部署
一.环境 三台centos机器 二.软件及容器准备 1.安装docker环境 本例安装 docker-ce版本,repo源为docker-ce.repo文件,拷贝到 /etc/yum.repos.d下 ...
- Go正则处理
Go语言通过regexp标准包为正则表达式提供了官方支持 包中有三个函数判定是否匹配,匹配返回true,否则返回false,这三个函数只是输入源不同 func Match(pattern string ...
- 解决brew下载php(不存在libphp7.so)
我是一名PHP的初学者,在mac上安装php7参考作者 coolma <在mac中如何安装php7>: 1. 安装Homebrew(mac ox不可或缺套件管理器,方便快捷的安装插件等) ...
- 数据库 MySQL part3
外键约束 如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表. 外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操 ...
- python中通过datetime获取UTC时间ISO格式
一个热点统计需求,需要限定一个时间范围,计算出该范围内的热点事件,相关数据则以UTC标准时间的ISO时间格式存在mongodb中,和服务器设置的时区UTC+8并不一致. 为了解决这个问题,直觉反应是在 ...
- 【调试】Linux下超强内存检测工具Valgrind
[调试]Linux下超强内存检测工具Valgrind 内容简介 Valgrind是什么? Valgrind的使用 Valgrind详细教程 1. Valgrind是什么? Valgrind是一套Lin ...