【发布时间】:2016-01-13 13:05:37
【问题描述】:
我正忙于配置我们的新 TFS 2015 服务器(本地)并尝试让新的 vnext 构建正常工作。 我现在拥有的是一些额外的 powershell 脚本,它们增加了我的程序集的版本号。 它还通过调用 API 方法更改 TFS 中的内部版本号(请参阅tfs rest api)。我的 json 正文只发送新的内部版本号(例如 {"buildNumber": "1.0.1.1234"}),这工作正常。
现在我在版本的构建定义中添加了一些主要、次要和补丁版本变量。一旦构建完成,这应该被更新,所以我想做同样的事情,只需将更新 API 调用发送到相应的 builddefinition 端点。文档说修订号是强制性的,所以我已经添加了。其余的我只添加了更改的变量。 api 调用有效,但令人讨厌的是它会更新整个定义并清除我在 json 正文中未提供的所有其他设置。我还尝试首先通过 API 获取定义,更改变量的 json 值并将其发回,但也无法正常工作。
那么有人知道一个好的解决方案吗?
作为一种解决方法,我现在所做的是添加一个完全空的虚拟构建定义(例如“_ProjectVersion”),除了变量,我的构建任务现在使用该构建定义来获取最新的版本号并更新它们。所以 api 调用仍然清空了整个构建定义,但因为它只包含我不介意的变量。
【问题讨论】:
-
对于您的问题:“但令人讨厌的是它会更新整个定义并清除我没有在 json 正文中提供的所有其他设置”,您会得到哪些意想不到的变化?以及关于您的 json 文件的任何详细信息,我们可以用来尝试重现您的问题吗?
-
我使用了像 '{ id: 2, revision:15, variables: { MajorVersion: {value:1}, Minorversion: { value: '1'} ... }' 这样的 json 主体这只会将这些值保存在构建定义中,并删除我以前的所有设置(如所有构建步骤)。我尝试的另一种方法是首先对构建定义执行 GET。用我的值更改 json 响应,然后再把它放回去。然后我收到了类似触发器数组必须至少有一个值的异常消息。
-
@chrisism 我也遇到了和你一样的问题。您会期望如果您将 api 返还给它提供给您的确切内容,它会起作用,但显然不是。我也在努力让它工作,所以如果我管理它,我会更新你。
标签: api powershell tfs build asp.net-core