我有这个WIQL ...
Wiql wiql = new Wiql()
{
Query = string.Format("SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State]" +
" FROM WorkItemLinks" +
" WHERE Target.[System.TeamProject] = '{0}'" +
" AND Source.[System.Id] = {1}" +
" AND [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'" +
" mode(Recursive)", project, startingChildId)
};
Run Code Online (Sandbox Code Playgroud)
我想使其与该TFS查询相匹配,其中特定工作项的所有父项都放入树中,如下所示。
我的问题是,我只从需要父级工作项的情况下获取子级工作项。我如何遍历树而不是遍历树?我已经尝试切换System.Links.LinkType到等效的父关系,但是这样做会引发不受支持的错误。
我正在使用Visual Studio客户端工具在命令行实用程序中调用VSTS REST API。对于不同的命令(复制,删除,应用策略等),此实用程序可以运行多次。
我正在像这样创建VssConnection
public static VssConnection CreateConnection(Uri url, VssCredentials credentials = null)
{
credentials = credentials ?? new VssClientCredentials();
credentials.Storage = new VssClientCredentialStorage();
var connection = new VssConnection(url, credentials);
connection.ConnectAsync().SyncResult();
return connection;
}
Run Code Online (Sandbox Code Playgroud)
根据文档,这应该是缓存凭据,以便在运行命令行工具时不会再次提示您。但是,每当我运行命令行实用程序并且VssConnection尝试连接时,我都会收到提示。
无论如何,是否有缓存凭据的信息,以便每次运行命令行时都不会提示用户?
应该注意的是,如果我不处理VssConnection,它将在下次运行时不提示。
更新 要明确的是,一旦将对象附加到VssConnection对象后创建连接,问题就不会缓存VssClientCredentials实例。问题是在程序执行之间(即在本地计算机上)缓存用户令牌,以便下次从命令行执行实用程序时,用户不必再次键入其凭据。类似于每次启动时不必始终登录Visual Studio的方式。
我目前正在通过 bitbucket -> vsts -> azure 自动化 CI/CD 配置。
我的理想结果是能够将我的配置值复制粘贴(或手动输入)到各自的控制台程序中,并使应用程序配置整个 CI/CD 考验,而无需点击所有 Web 界面。现在可以在 Bitbucket 和 Azure 中实现,但事实证明,通过 REST API 创建 VSTS CI/CD 配置很困难。
Azure 资源和 Bitbucket 配置目前是通过一个与 REST API 对话的简单 .NET 控制台应用程序创建的。基本上将所有值(azure 输入值/ bitbucket 输入值)复制粘贴(或手动输入)到控制台应用程序中,它将在 5 分钟内配置所有内容。
现在我面临着尝试在 VSTS 中自动化构建配置和发布配置的困难部分。Microsoft Docs 在VSTS client libraries 的文档方面不是很好。
老实说,我不知道如何通过 API 或客户端库创建构建定义。
该BuildHttpClient有三个方法我可以工作:
public virtual Task<BuildDefinition> CreateDefinitionAsync(BuildDefinition definition, Guid project, int? definitionToCloneId = null, int? definitionToCloneRevision = null, object userState = …Run Code Online (Sandbox Code Playgroud)c# continuous-integration build-definition azure-pipelines azure-devops-rest-api
我们正在开发Azure DevOps扩展,以将对工作项的更改推送到外部系统。
我们想在目标系统的Azure DevOps(Epic-> Feature-> PBI / Bug)中维护/保留层次结构,因此我们需要弄清楚工作项具有哪个父项。
从API中提取工作项实体时,它看起来像这样(略)
{
"id": 5202,
"rev": 2,
"fields": {
"System.WorkItemType": "Task",
"System.State": "To Do",
"System.Reason": "New task",
"System.CreatedDate": "2017-10-30T10:18:06.233Z",
"System.CreatedBy": "Jesper Lund Stocholm",
"Microsoft.VSTS.Common.Priority": 2,
"Microsoft.VSTS.Scheduling.RemainingWork": 23.0,
"Microsoft.VSTS.Common.StateChangeDate": "2017-10-30T10:18:06.233Z",
},
"_links": {
"self": {
"href": "https://{myorg}.visualstudio.com/_apis/wit/workItems/5202"
},
"workItemUpdates": {
"href": "https://{myorg}.visualstudio.com/_apis/wit/workItems/5202/updates"
},
"workItemRevisions": {
"href": "https://{myorg}.visualstudio.com/_apis/wit/workItems/5202/revisions"
},
"workItemHistory": {
"href": "https://{myorg}.visualstudio.com/_apis/wit/workItems/5202/history"
},
"html": {
"href": "https://{myorg}.visualstudio.com/web/wi.aspx?pcguid=e5d991b2-9879-497c-85fb-c618f144a9c5&id=5202"
},
"workItemType": {
"href": "https://{myorg}.visualstudio.com/6847ebed-cbca-4510-8baa-228c7c55ba8d/_apis/wit/workItemTypes/Task"
},
"fields": {
"href": "https://{myorg}.visualstudio.com/_apis/wit/fields"
}
},
"url": "https://{myorg}.visualstudio.com/_apis/wit/workItems/5202"
}
Run Code Online (Sandbox Code Playgroud)
显而易见的地方是这里https:// {myorg} …
简而言之,我试图在从构建管道执行 PowerShell 脚本时更新变量组(增加构建号,但这部分并不那么重要)。
正如本主题和Azure DevOps 文档中所建议的,我使用类似于以下内容的代码:
$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build-release/definitions/$($env:SYSTEM_DEFINITIONID)?api-version=2.0"
Write-Host "URL: $url"
$pipeline = Invoke-RestMethod -Uri $url -Headers @{
Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 1000)"
Run Code Online (Sandbox Code Playgroud)
除了一件事外,一切都正常。我似乎没有某种权限来更新此值,收到以下错误消息:
您无权对变量组执行此操作。可变组管理员应将您添加到管理员角色。
然而:
$env:SYSTEM_ACCESSTOKEN对我来说有点奇怪,因为它实际上应该属于从 Azure 内部调用的进程(管道执行进程),所以它也应该可以访问变量组。(无论如何,我不知道当前运行的管道的标识是什么以及它的设置位置)。
我可以理解这个过程是在一台机器上执行的(实际上,跨不同系统,所以这一切都很复杂,并不意味着自动执行身份的管道可以直接访问变量组),但我找不到任何文档如何设置所有这些访问权限。(所附链接上的文章没有提及访问权限)。
我已经尝试将任何(可能相关的)用户/组添加/设置到组变量权限(Security变量组部分的部分),但仍然没有使用 REST API 更新。

那么,关于设置当前执行构建管道标识的权限的任何提示?
我找不到如何从 API 检索区域路径。我能够到达迭代路径,但不能到达区域路径。
我在技术上使用 c# 包装器
我试过了
从 Azure-DevOps Rest API 文档https://docs.microsoft.com/en-us/rest/api/azure/devops/?view=azure-devops-rest-5.1没有明确的方法来查询作业在特定的代理池上运行。
经历了不同的 API 调用和提琴手。
curl -u X:X https://dev.azure.com/{organization}/_apis/distributedtask/pools/{poolId}/agents?api-version=5.1-preview.1 --> 获取特定代理池上正在运行的代理
在特定代理池上的队列中获取作业的 REST API 调用是什么?我期望在特定代理池上运行作业的 JSON 输出。
我正在研究发布管道并研究在 Yaml 中定义发布批准流程的任何机制。我也检查了 Rest API,但找不到任何指针。
我正在研究一个审批流程,在该流程中,部署到环境需要通过超时设置进行审批。
我正在尝试在 asp.net core(2.1) mvc 应用程序中使用以下代码连接 Azure DevOps
Uri orgUrl = new Uri("https://dev.azure.com/xxxxx/");
String personalAccessToken = "xxxxx";
VssConnection connection = new VssConnection(orgUrl, new VssBasicCredential(string.Empty, personalAccessToken));
Run Code Online (Sandbox Code Playgroud)
但是得到这个错误 "VssUnauthorizedException: 'VS30063: You are not authorized to access https://dev.azure.com.'"
相同的代码在 .net 核心控制台应用程序中工作,请有人帮助我吗?
我尝试首先通过邮递员调用rest API到azure,我调用get pipelines API来获取管道id,结果是:2响应:
{
"count": 1,
"value": [
{
"_links": {
"self": {
"href": "https://dev.azure.com/xxx/5fcd81ac-534e-xxx/_apis/pipelines/2?revision=3"
},
"web": {
"href": "https://dev.azure.com/xxx/5fcd81ac-534e-xxx/_build/definition?definitionId=2"
}
},
"url": "https://dev.azure.com/xxx/5fcd81ac-534e-xxx/_apis/pipelines/2?revision=3",
"id": 2,
"revision": 3,
"name": "xxx.ios_build_on_azure",
"folder": "\\"
}
]
}
Run Code Online (Sandbox Code Playgroud)
好的,假设 id 是 2,因为我只有 1 个管道,我尝试调用运行 API 来启动这个管道,我得到了这个:

{
"$id": "1",
"innerException": null,
"message": "Value cannot be null.\r\nParameter name: runParameters",
"typeName": "System.ArgumentNullException, mscorlib",
"typeKey": "ArgumentNullException",
"errorCode": 0,
"eventId": 0
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试添加到正文,也要更新:如:
Azure REST API for running builds or pipelines 中所述
像这样 : …
rest postman azure-devops azure-pipelines azure-devops-rest-api