标签: azure-devops-rest-api

如何使用适用于 C# 的 VSTS Git API 获取给定提交 ID 的所有拉取请求 ID(来自合并提交)

如果我有一个提交被合并到 20 个分支(可以有 20 个相应的 Pull 请求),是否有一个 API 可以使用原始叶提交 Id 作为参数来查找 20 个提交 Id 的列表?

GetPullRequests(string commitId)
Run Code Online (Sandbox Code Playgroud)

理想情况下会有一个 git rest API 方法来执行此操作,但我似乎找不到它。

谢谢!

c# azure-devops-rest-api

4
推荐指数
1
解决办法
4389
查看次数

通过 Powershell 中的 REST API 调用下载 ZIP 内容

这是一个示例 REST API uri,用于从 AzureDevOps 版本检索日志。 https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}/logs?api-version=4.1-preview.2

动词是 GET,内容类型是“application/zip”

如何使用 powershell 通过 REST API 调用检索 zip 文件Invoke-RestMethod

如果我传递Out-File此命令并将其另存为 zip,它不会将 API 响应的二进制输出转换为 zip。

我该怎么做 ?

rest powershell azure-devops azure-devops-rest-api

4
推荐指数
1
解决办法
6498
查看次数

如何在 VSTS API 中删除带注释的标签(git 标签)?

我能够使用下面的请求成功创建带注释的标签(git 标签),但我无法以编程方式删除它。

POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/annotatedtags?api-version=4.1-preview.1
Run Code Online (Sandbox Code Playgroud)

要求:

{
    "name": "wagner-test-3",
    "message": "wagner-test-3",
    "taggedObject": {
        "objectId": "aaaaab6cad84a07b7bd65cf3519142a12f856baa"
    }
}
Run Code Online (Sandbox Code Playgroud)

根据文档,没有删除端点,所以我尝试了删除引用端点,但到目前为止没有运气。它只返回 400(无效请求)。

DELETE https://dev.azure.com/{organization}/{project}/_apis/git/favorites/refs/{favoriteId}?api-version=4.1-preview.1
Run Code Online (Sandbox Code Playgroud)

回复:

{
    "count": 1,
    "value": {
        "Message": "The request is invalid."
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢。

azure-devops azure-devops-rest-api

4
推荐指数
1
解决办法
1350
查看次数

Azure DevOps API - 如何创建存储库?

我正在开发一个内部应用程序,它根据内部准则创建解决方案的框架。

作为一项改进,我希望用户能够在我们的 DevOps 上自动“形式化”解决方案,他可以立即克隆并开始编码,而不是当前下载为 ZIP。

为了做到这一点,我开始查看 azure devops 文档,但无法找到通过 API 创建存储库的方法...

我怎样才能做到这一点?

c# azure-devops azure-devops-rest-api

4
推荐指数
1
解决办法
4920
查看次数

Powershell Invoke-RestMethod 未使用 Azure DevOps 的 PAT 进行身份验证

我正在尝试调用 Azure DevOps 项目的 REST API,但得到了一些意想不到的结果。

我可以使用 LinqPad 获得结果,但使用 Powershell 失败。

我的脚本

$env:Build_BuildId = 2468
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("myPAT"))
$env:System_TeamProject = "myProject"

$url = "https://dev.azure.com/myorg/$env:System_TeamProject/_apis/build/builds/$env:Build_BuildId/changes?api-version=5.0"

$response = Invoke-RestMethod -Uri $url -Method Get -ContentType "application/json" -Headers @{ 
    Authorization = "Basic $token" 
}

Write-Host $response
Run Code Online (Sandbox Code Playgroud)

响应

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">




<html lang="en-US">
<head><title>

            Azure DevOps Services | Sign In

</title><meta http-equiv="X-UA-Compatible" content="IE=11;&#32;IE=10;&#32;IE=9;&#32;IE=8" />
    <link rel="SHORTCUT ICON" href="/favicon.ico"/>

    <link data-bundlelength="508485" data-bundlename="commoncss" data-highcontrast="/_static/tfs/M154_20190628.18/_cssbundles/HighContrast/vss-bundle-commoncss-vAEI_yKFIiS9jTVmCtAOiwe4cLPqdXnp6QCUVseU7jzk=" data-includedstyles="jQueryUI-Modified;Core;Splitter;PivotView" href="/_static/tfs/M154_20190628.18/_cssbundles/Default/vss-bundle-commoncss-vqjKBNZxfVQkGGn0rrvF7eh9DJDj__wqtFN85fVrIQn8=" rel="stylesheet" />
<link data-bundlelength="116162" data-bundlename="viewcss" data-highcontrast="/_static/tfs/M154_20190628.18/_cssbundles/HighContrast/vss-bundle-viewcss-v356iHjTFccxhkNidRJIEefQ92VqpWpa7rO4mdtAnDpM=" …
Run Code Online (Sandbox Code Playgroud)

powershell azure-devops azure-devops-rest-api

4
推荐指数
1
解决办法
6674
查看次数

是否有 REST API 可以获取 Azure DevOps 中的构建错误?

所以,这是我所知道的:

  1. 我可以获得构建数据,在那里我可以找到logs带有 url 的属性。
  2. 访问日志 url 将返回指向构建日志各个部分的链接数组(大概是每个构建任务的一部分,按照构建定义中后者的顺序)
  3. 每个部分中的 url 都会获取相应任务记录的文本。
  4. 我可以解析它,所有匹配的内容都##[error]对应于构建摘要页面上记录的错误。

我很好奇如果我只需要获取构建错误,这是否是最好的方法。我不需要整个日志。

azure-devops azure-devops-rest-api

4
推荐指数
1
解决办法
1187
查看次数

Azure Devops Rest Api 获取团队当前 Sprint 的工作项和任务

我正在寻找构建一些工具来查询团队冲刺的当前工作项目。我不确定如何在给定组织、项目和团队的情况下做到这一点。我似乎可以通过拨打此电话来获取当前迭代:

https://dev.azure.com/ {org}/{project}/{{team}/_apis/work/teamsettings/iterations?$timeframe=current&api-version=5.1

它返回类似这样的内容:

 {
        "count": 1,
        "value": [
            {
                "id": "8c15e886-ece7-49ce-ab5a-4090aefb5ce2",
                "name": "Sprint 1",
                "path": "Red Kitten Matrix\\Sprint 1",
                "attributes": {
                    "startDate": null,
                    "finishDate": null,
                    "timeFrame": "current"
                },
                "url": "https://dev.azure.com/chrisdevopsprojects/e8d05711-3014-4ba7-82b7-ab6829c455dc/aed68f47-9035-4af5-9b0d-b0c19b4e9e9e/_apis/work/teamsettings/iterations/8c15e886-ece7-49ce-ab5a-4090aefb5ce2"
            }
        ]
    }
Run Code Online (Sandbox Code Playgroud)

因此,我可以获得当前团队冲刺的指针,但是如何返回其中的所有冲刺工作项和任务?

我在这里没有看到任何信息:

https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/work%20items/list?view=azure-devops-rest-5.1

谢谢!

编辑:

因此,我找到了一种工作项查询语言(WIQL...为什么不猜测)查询,当我在 UI 中的 DevOps 中调用它时,它可以工作,并且可以通过其余 API 进行工作,但它会让我做一个一堆 ajax 请求将所有内容拉回来。请告诉我是否有更简单的方法来获得这个。

这是我的 WIQL:

SELECT
    [System.Id],
    [System.WorkItemType],
    [System.Title],
    [System.AssignedTo],
    [System.State],
    [System.Tags]
FROM workitemLinks
WHERE
    (
        [Source].[System.TeamProject] = @project
        AND [Source].[System.WorkItemType] <> 'Task'
        AND [Source].[System.State] <> ''
        AND [Source].[System.IterationPath] = @currentIteration('[Red Kitten Matrix]\Red Kitten Matrix …
Run Code Online (Sandbox Code Playgroud)

azure-devops azure-devops-rest-api

4
推荐指数
1
解决办法
6362
查看次数

将 Azure DevOps 发布管道(经典编辑器)输出变量传递到同一阶段中的多个作业或外部的多个阶段

我正在使用发布管道经典编辑器,并且需要将任务中生成的输出变量传递到同一阶段中的多个作业或外部阶段。目前,这个输出变量仅在同一个作业中可用,我必须在多个作业和阶段中编写相同的任务,我觉得这是一种冗余。有什么办法可以实现吗?

devops azure-devops azure-pipelines-release-pipeline azure-devops-rest-api

4
推荐指数
1
解决办法
3278
查看次数

从 Azure Devops WebApi 中的工作项检索拉取请求

我想使用 Azure DevOps WebAPI 以编程方式检索与 Azure DevOps 中的工作项关联的所有拉取请求的信息。我已经弄清楚如何检索一个实例

Microsoft.TeamFoundation.WorkItemTracking.WebApi.Model.WorkItem
Run Code Online (Sandbox Code Playgroud)

对于我的工作项目。

要查找与其相关的拉取请求,我可以遍历“Relations”字段并查找 Url 包含 的关系PullRequestId。在该字符串的末尾,我可以找到要与GetPullRequestAsync.

URL 可能如下所示:

vstfs:///Git/PullRequestId/2139bb34-57e3-4d7d-a6e1-1c0542a45e29%2F8a2b707f-ca7a-418d-8462-2bf076a54aad%2F39723
Run Code Online (Sandbox Code Playgroud)

所以我的代码看起来像这样:

foreach ( WorkItemRelation wir in wi.Relations)
{
     if ( wir.Url.Contains("PullRequestId"))
     {
          var pr = build.GetPullRequestAsync("<MyProject>", "Providername", "39723", "repository id").Result;
          // Do somethin with pr object
     }
}
Run Code Online (Sandbox Code Playgroud)

我的问题如下

  1. 解析 URL 以检索拉取请求 ID 似乎不是一个好方法。我无法从某些字段获取 id 吗?
  2. GetPullRequestAsync需要提供者名称和存储库 ID。但是,如果无法从 的实例中检索该信息吗 Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models.WorkItemRelation
  3. 还有另一种更简单的方法可以完成我想做的事情吗?

azure-devops azure-pipelines azure-devops-rest-api

4
推荐指数
1
解决办法
2047
查看次数

如何使用 azure devops api 或其他方法从拉取请求中获取目标分支?

我正在尝试为 3 个环境(dev、qa、prod)制作一个单一的构建管道,但能够选择从哪个构建管道。

这个想法是将管道保留在 prod 分支或另一个 repo 上,而不是在每个 env 中都有它。现在的问题是,在 PR 上,它只会在 master(prod) 分支上启动管道,因为它应包含 yml 文件。

有没有办法获取 PR 目标分支以便为 PR 触发器添加附加条件?

azure devops azure-devops azure-devops-rest-api

4
推荐指数
2
解决办法
1360
查看次数