我目前正在通过他们的构建代理将Mircosofts Team Foundation Server用作构建服务器。
我知道它确实提供了一个REST-API,您可以在其中启动和查看构建等等。
但有没有可能使用TFS中的构建代理来创建构建,就像提交某些东西时一样,而不将源提交到存储库中?
我开发移动应用程序,每次我需要创建一个.apk(例如)来测试本机函数。这是在办理登机手续时通过TFS完成的,但如果我正在测试某些东西,那么我需要每隔两分钟办理登机手续,这是不可能的。
我需要某种调用,我可以通过命令行/工具发送某种zip文件,然后使用其中的文件启动TFS构建代理。
我不希望为不同的任务提供两个构建服务,并且不希望在本地计算机上安装某些东西(它在公司中)。
TFS是否提供这样的功能? 或者你会如何解决这种要求?
答案 0 :(得分:2)
您可以将所谓的“伙伴构建”或“使用shelveset构建”排队。您将搁置本地更改并对构建进行排队,该构建将自动将您的更改应用于源代码管理中的当前最新版本。这将在标准构建服务器上运行构建,但不要求您签入更改。
一旦满意,请签入代码或使用“签入是否构建成功”选项对伙伴构建进行排队。
http://jsfiddle.net/MgcDU/12389/
如果您不使用XAML版本,可以使用新的TFS 2015和VS Team Services来完成同样的事情。
您可以通过几个命令行命令(XAML)自动执行该过程。
<style>
#counter {
position: relative;
}
#background{
}
#squaremoreleft{
position:absolute;
width: 20%;
left:5%;
top:51%;
}
#squareright{
position:absolute;
width: 20%;
left:26%;
top:51%;
}
</style
<div class="container">
<div class="row-fluid">
<div class="span12">
<div id="counter">
<img id="background"src="{{asset('img/imgbackground.png')}}" class="img-responsive"/>
<a href="link1">
<img id="squaremoreleft"src="{{asset('img/squareleft.png')}}" class="img-responsive" />
</a>
<a href="link2>
<img id="squareright"src="{{asset('img/squareright.png')}}" class="img-responsive" />
</a>
</div>
</div>
</div>
</div>
我不认为有一种方法可以使用现有的TFX命令行工具为新构建引擎使用shelveset对构建进行排队。将tf vc shelve /replace "My local changes"
tfsbuild /start /collection:https://server/tfs/DefaultCollection MyProject MyDefinition
/shelveset:"My local changes" /queue /getoption:latestonbuild
/droplocation:\\your\private\drop\location
作为"My Local Changes";yourusername
传递。
您可以创建用户分支并将其推送到服务器。提交/推送到您自己的个人分支应该没有问题,您可以选择在将用户分支与功能分支合并之前对其进行重新定位/重组。
要从命令行构建,您可以使用git可执行文件进行提交和推送(如果您授予用户强制推送他们自己的分支的权限,那么您可以使用sourceBranch
和{{1} }:
amend
您的构建将配置为在您的用户分支或所有用户上触发:
but it is possible using a little bit of PowerShell to invoke the REST API
您可以使用通配符指定分支过滤器,在这种情况下,构建将触发您在“用户”下创建的任何分支。
为了方便您,您可以授予用户重写自己分支的权限:
这使得该过程几乎与TFVC解决方案一样轻量级。而且您仍然只需要一个构建定义来验证所有用户的分支。