为你崭新的Host TFS账号配置一个build服务器

[原文发表地址]Configuring a build server against your shiny new hosted TFS account

[原文发表时间]Mon, Sep 19 2011 3:02 PM

既然你有Team Foundation Service账号,你们中的一些人也许会有兴趣建一台Build机器以使用它。Richard Hundhausen做了一个非常棒的视频 讲述这个过程,我想回顾一下,因为我想额外解释一些其他的事情。如果你观看他的视频,你会看到它远比这篇文章讲述的逼真,但你也许能在这里获得一些另外的理解。

首先让我们谈论下这些选项。你可以用你的Team Foundation Service账号来安装配置一台Build计算机去运行。你必须使用TFS 11生成代理。TFS生成代理是TFS安装的一部分,并且允许MSDN用户在下载网页上下载,从明天起也将允许所有人在以下网址下载(9月16日星期五):

https://go.microsoft.com/fwlink/?LinkId=225714

你可以安装build服务器在你使用的任何机器上-家里的工作组机器,工作用到的域中的机器,Azure上的 VM 角色,Amazon的 VM等等任何你喜欢的。TFS并不关心这些。这些机器只需要可以连接到网络去访问tfspreview.com。

在你想安装生成控制器/代理的机器上运行TFS安装程序,你需要接受许可,复制数据到机器上等,然后会出现一个像这样的安装界面。因为你只是在安装一个build服务器,你不想选择任何Team FoundationApplication Server向导。你只想要Configure Team Foundation Build Service。点击“Configure Team Foundation Build Service”然后点击底部的开始向导按钮。

WizardPicker

你会看到一个欢迎页面,点击“Next”会看到这个。如果你没看到这个,尝试取消并确定你选择了正确的向导。它需要你在host 服务器上验证你的team project collection/account。你不能在这里输入所以请点击“Browse”按钮。

SelectTPC

BuildServices

然后你会看到这个。我之前没有将这台机器连接到服务器上,所以没有服务器让我选择。我点击了“Servers…”按钮

Connect

然后获得可连接服务器链表但是看到没有任何东西

。我以前已告诉过你,因此请点击“Add”按钮。

Servers

如果你想,你可以在上面一行中输入完整的url,但是这里我使用了对话框控件。“minka”(实际上这是我的农场的名字)是账号名,因此我将它命名为minka.tfspreview.com。然后我点击了https按钮(这里你需要使用https来连接服务器)。我们可以看到Preview栏中的url就是我已放在顶部编辑栏中的url。

ServerUrl

现在我点击“OK”回到之前的窗口,关闭它就看到。对我们的TFS服务来说,team project collection总是称作DefaultCollection,而且你只能有一个。在本地产品中你可以有多个并任意命名。选择“DefaultCollection”然后点击“Connect”。

SelectDefaultCollection

这时候你已经连接上了minka.tfspreview.com并且该url会被填充在上面的向导页面。在向导页面点击“Next”跳转到build服务页面。这里允许你设置想要运行的代理数量。默认是1个,但我真的不需要在我家中的小机器上处理8个并行的事情,因此我将它改成2并点击了“Next”。

BuildServices

现在来到了设置页面,该页面控制build服务如何在我的本机上运行。记住build服务在安装它的机器上运行,而且它运行时需要身份验证。它将会使用不同身份验证连接到我的主机账号,但在一分钟里做的比这更多。我在本机上创建了一个名为“Build”的账号。我可以任意命名它或在登录时使用这个账号。如果我在一个域中,我可以使用网络服务,但是我现在是在家里,因此我只能使用本机账号。顺便说一句,当我使用它的时候,我发现目前我们不支持没有密码的账户。那是一个设计错误我们会改正它。我在家用我11年的老帐户登录,而且它没有密码clip_image008那就是我为什么创建一个新帐户的唯一原因,只是为了使用build服务。

你做的最后一件事是指定本机上你希望build服务使用的端口。这不是主机服务上的端口,而是你本机上的端口。大多数人使用默认端口即可。

中间还有关于主机服务的认证和Windows Credential Manager。让我们先完成这个向导,然后再谈这个。

Settings

点击“Next”,你可以查看你的选择,并点击“Verify”。一切都应该验证好,然后可以点击“Configure”。

Review

配置完成后你会看到一个完成屏幕,如下所示。现在你可以完成向导,它将启动TFS管理控制台。

Done

单击左侧的生成配置节点,将看到你的控制器和代理都启动并运行了。你可以关闭管理控制台,进入VS,创建build definition然后运行build。

Tada

现在讨论一下这些有趣的证书怎样。这里有多达四套的证书:

1. 你用来安装的登录到本地机的身份。只要你有足够的权限安装,那才是最重要的。

2. 你用来运行的配置本地build服务的账号。就是你输入到向导的账号。我使用了名为“Build”的本地帐号。许多人只是用他们登录的账号,或者,如果在一个域中-则使用网络服务。

3. 你用来登录Team Foundation Service的 Live ID账号。它在这里只起一部分作用,如果你处在上面所示的连接对话框序列,你必须使用Live ID对该服务进行身份验证。 如果系统没有保存那些证书,你会从一个Live ID web页面来登录。这确保你有权限用你的账号来配置一个Build机器。你不会希望任意谁都能用你的账号创建Build机器的,是吗?

4. 生成代理使用服务身份识别连接到你的Team Foundation Service账号-我们有时称此为“Project Collection Identity”。这是上面的对话框中的文本提到的神奇的地方。

让我阐释第4条。build服务,运行在你的本地机上,需要连接到你的Host账号。这样做的话需要身份认证(登录),不幸的是,它不能使用你的Live ID,因为Live ID不支持自动服务身份验证。幸运的是,我们使用Windows Azure Access (aka ACS)来处理验证,而且ACS支持所谓的服务标识,就是特意为这种情况设计的。当你连接到为你创建的的服务认证,并生成一个随机密码时,你使用Live ID身份验证,在你刚运行的生成设置向导使用该验证。然后,将该密码放在Windows Credential Manager,把它作为你的本地build服务账号。

在我查看我的Windows Credential Manager中为“Build”的本地帐号时,我看到:

CredentialManager

注意它已经获得我的urlhttps://minka.tfspreview.com/defaultcollection 和一个自动生成的用户名(在Host服务上的ACS服务账号名)-“账号服务(minka)”。而且也获得了我的自动生成的密码。请一定不要修改它。这只会改变你的本地的复制(不是HostTFS上的那个)而且你的build服务将不能使用。由于你不知道自动生成的密码是什么,无法将它恢复。这就意味着你被耍了。你唯一能做的是解除配置build服务并从零开始重新配置。

让我们从管理控制台查看一下:如果我点击在生成配置页面的“Properties”链接,我会获得一个如下的对话框。在你做配置修改时你需要点击“stop to make changes”链接来停止本地build服务。

image

好了,现在我的本地build服务停下了。注意下面的两个标签。可视的标签“Service Identity”实际上是你的本地build服务运行在本地机上使用的账号。我的机器是KIDS-PC,账号是Build。我可以修改它然后保存修改,那么一切都没问题。

image

另一个标签,“Project Collection Identity”是build服务用来连接服务器的(这个例子中是我的Host TFS帐号)。对我们的HostTFS服务来说,我必须使用ACS服务验证并且不能修改它或密码(至少目前不能)。我们还没建立该服务的任何功能来更改ACS服务账号或它的密码。

image

好了,上面是一些讲述它如何工作的冗长且困难的细节。大多数人永远不需要知道或关心,只需要通过向导运行而且它“做了对的事情”。但是以防万一你需要了解怎么回事,现在你知道了。

好好享受!

Brian