0

我正在开发一个 C# 工具来触发使用 TeamCity 的 REST API 构建。我想用特定的 vcs 号码触发构建,所以这就是我正在做的事情:

POST => teamcity-server/httpAuth/app/rest/buildQueue 
HEADER => basicAuthCredentials
BODY => 

<build>
    <buildType id="SomeValidBuildId"/>
    <properties>
        <property name="SAMPLE_TEST" value="VERY_TESTY"/>
    </properties>
    <lastChanges>
        <change locator="version:4354174,buildType:(id:SomeValidBuildId)" />
    </lastChanges>
</build>

该请求正在运行,构建具有我的属性和我指定的 vcs 编号。一切都很好,除非以前没有与该 vcs 编号关联的构建,否则请求失败并显示以下错误消息:

Http request failed: 
error : Responding with error, status code: 404 (Not Found).
error : Details: jetbrains.buildServer.server.rest.errors.NotFoundException: Nothing is 
found by locator 'version:4354174,buildType:(id:SomeValidBuildId),count:1'.
error : Could not find the entity requested. Check the reference is correct and the user has permissions to access the entity.

构建可以访问 VcsRoot 设置,以及它需要的一切,我如何触发以前从未构建的 vcs 编号上的自定义构建?

4

1 回答 1

1

当 TeamCity 尚未检测到已传递版本的更改时,您会收到错误响应,并且到目前为止,TeamCity 需要先检测到更改,然后才能在构建中使用它。您可以配置提交/推送挂钩,以便在更改发生时让 TeamCity 知道更改,或者在尝试触发构建之前调用提交挂钩 URL。在接收提交钩子请求和检测到更改之间仍然可能存在一些延迟(通常是几秒钟),因此等待一段时间然后才触发构建是有意义的。

于 2019-09-19T09:35:55.587 回答