TFS 2015 生成定义,用于查找另一个生成的项目位置



我正在创建一个提升构建定义,该定义从上次成功的持续集成构建中获取输出[工件]并将其部署到更高的环境。这是TFS 2015,所以我正在使用BuildHttpClient

VssConnection connection = new VssConnection(new Uri(accountUrl), new VssAadCredential());
var projectClient = connection.GetClient<ProjectHttpClient>();
var project = projectClient.GetProject("project.name").Result;
var buildClient = connection.GetClient<BuildHttpClient>();
var builds = buildClient.GetBuildsAsync(project.Id, maxBuildsPerDefinition: 1, ResultFilter: BuildResult.Succeeded).Result;
    foreach (var build in builds)
    {
     if (build.Definition.Name == "CI BuildDefinition Name")
                            {

这是我尝试读取此构建的工件路径的地方。 但是Build类没有项目或项目路径属性。

但是,我确实发现有一个ArtifactResource类具有我可以使用的Data

所以我正在尝试做这样的事情:

ArtifactResource art = buildClient.GetArtifactAsync...
string PathToArtifact =art.Data;

我很想念它。我也意识到maxBuildsPerDefinition: 1 builds

似乎不起作用,没有编译错误,但是如果我想要最新的成功构建,我需要做什么?

GetBuildsAsync 调用不包含构建工件信息的 Get Builds api。因此,您需要使用 GetArtifactAsync 来获取工件的信息。如果一个生成中有多个项目,则可能需要使用 GetArtifactsAsync。

    BuildArtifact ba = buildClient.GetArtifactAsync("ProjectName", buildId, "artifactname").Result;
    string downloadurl = ba.Resource.DownloadUrl;
    string localpath = ba.Resource.Properties["localpath"];
    string artifacturl = ba.Resource.Url;

最新更新