我正在尝试将密钥作为安全文件上传到 azure devops 以在管道上下文中使用,我只找到了手动上传,但它不是选项,有没有办法可以通过 powershell 或任何管道任务实现自动化?请建议。
我试图自动执行将某些文件推送到存储库中的各个文件夹的任务。我尝试使用azure提供的Rest API。当使用 Pushes Create API 进行相同操作时,从文档中,这是请求正文中的内容
请求正文的快照:

这是我无法弄清楚如何进入 python 脚本“oldObjectId”的具体事情:“8b67126d2500e28c771f82c9ddc292679978197c”
我知道我必须使用 python requests 库发送一个包含与上面类似的数据的 JSON 变量。但我不知道如何在python脚本中获取oldobjectid。我尝试到处查找(文档、stackoverflow...),但无法找到如何找到 oldobjectid。
api文档的链接
python git python-requests azure-devops azure-devops-rest-api
Azure DevOps API 文章评估 - 列表描述了如何接收特定拉取请求的所有策略评估状态的列表。
打电话
GET https://dev.azure.com/{organization}/{project}/_apis/policy/evaluations?artifactId={artifactId}&api-version=6.0-preview.1
Run Code Online (Sandbox Code Playgroud)
您需要该artifactId请求。标识拉取请求,它可能是拉取请求 - 获取拉取请求artifactId响应的一部分。但事实并非如此,里面是空的。artifactId?
因此,我认为,文章作者添加了以下部分:
使用唯一标识拉取请求的工件 ID 检索评估。要为拉取请求生成工件 ID,请使用以下模板:
vstfs:///CodeReview/CodeReviewId/{projectId}/{pullRequestId}
我应该用这个模板做什么?有例子吗?我不明白这部分,也不知道该怎么办。
在 Azure DevOps 中,我有一个管道,其中需要特定任务的日志。如何找出需要哪个日志 ID 来获取它?
例如。在用户界面上,这是端点:https://dev.azure.com/myorg/myspace/_build/results ?buildId=1234&view=logs&j=899c4bff-9ac3-12de-4775-50e701812cb4&t=bc949ec8-c945-5220-1d40-d8ea7dab4bda 其中包含作业和任务 ID,但这些在查询日志时毫无用处。
同样的示例,我需要的日志的网址:https://dev.azure.com/myorg/cd642969-da00-4584-ab6a-4b6021c47eff/_apis/build/builds/1234/logs/24
任务的数量取决于我设置的参数,因此数字 24 会发生变化。如果我知道作业和任务的名称/ID,如何计算日志ID?
我应该检查所有约 100 个任务日志并 grep 查找任务名称第一行中的匹配项吗?(巨魔)
我正在使用Visual Studio Online REST API,除了创建工作项外,似乎可以使一切工作正常.这不是内部部署安装.我按照这个例子发送一个PATCH但收到400 Bad Request错误. VSO创建工作项
每个提琴手,这是我的原始请求:
PATCH https://xxx.visualstudio.com/defaultcollection/myproject/_apis/wit/workitems/$Task?api-version=1.0 HTTP/1.1
Accept: application/json
Authorization: Basic RmI3etc_etc_etc==
Content-Type: application/json-patch+json; charset=utf-8
Host: xxx.visualstudio.com
Content-Length: 101
Expect: 100-continue
Connection: Keep-Alive
{"op":"add","path":"/fields/System.Title","value":"JavaScript implementation for Microsoft Account"}
Run Code Online (Sandbox Code Playgroud)
我得到的回复是400 Bad Request:
{"$id":"1","innerException":null,"message":"You must pass a valid patch document in the body of the request.","typeName":"Microsoft.VisualStudio.Services.Common.VssPropertyValidationException, Microsoft.VisualStudio.Services.Common, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03ftoken0a3a","typeKey":"VssPropertyValidationException","errorCode":0,"eventId":3000}
Run Code Online (Sandbox Code Playgroud)
我不确定为什么补丁文件无效.
更新:每个请求,只是分享更多的代码.我用自己的图书馆修补了一下.以下是我为项目轻松添加工作项(产品积压,错误等)所做的工作
public void AddWorkItem(VSOWorkItem workItem, string project)
{
Project = project;
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(
new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
//Set alternate credentials
client.DefaultRequestHeaders.Authorization = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PowerShell通过REST API更新构建定义.
使用的脚本是:
$url = "http://tfs:8080/tfs/collection/project/_apis/build/definitions/$($buildId)?api-version=2.0"
$obj = Invoke-RestMethod -Uri $url2 -Method Get -ContentType "application/json" -UseDefaultCredentials
$json = ConvertTo-Json $obj
Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -UseDefaultCredentials
Run Code Online (Sandbox Code Playgroud)
首先,我尝试了一个新的空定义,我得到以下错误:
该集合必须至少包含一个元素.参数名称:definition.Options.Inputs
所以我添加了一个额外的代码来从返回的json中删除"options"部分:
if($obj.options -ne $null){
$obj.options = $null }
Run Code Online (Sandbox Code Playgroud)
并且更新有效.但是,当我在生产中的"真实"现有构建定义上使用代码时,我得到另一个错误:
该集合必须至少包含一个元素.参数名称:definition.RetentionRules.Rule.Branches.Filter
我正在使用TFS2015 Update 3.
为什么不通过REST API对构建定义进行简单的更新(不做任何修改)?
我正在使用TFS REST API并尝试按标题检索工作项及其子项(父项的标题是参数).我找不到使用TFS REST API检索这些链接项的方法.
这就是我尝试过的.首先,我按标题查询工作项:
URI = http://[tfspath]/_apis/wit/wiql?api-version=1.0
query = SELECT * FROM WorkItem WHERE [System.Title] = 'some title'
Run Code Online (Sandbox Code Playgroud)
上面的内容返回一个对象WorkItems,它只包含匹配工作项的ID/URL.然后,我在下面的查询中使用返回的ID(假设id为1234):
URI = http://[tfspath]/_apis/wit/workitems/1234?fields=System.Title&api-version=1.0
Run Code Online (Sandbox Code Playgroud)
这将返回项目的标题以及我可能包含在字段列表中的其他字段.但是,我找不到在退货中包含子项的方法.我尝试过包含System.RelatedLinks,但这不会更改返回的字段.例:
URI = http://[tfspath]/_apis/wit/workitems/1234?fields=System.Title,System.RelatedLinkCount,System.RelatedLinks&api-version=1.0
Run Code Online (Sandbox Code Playgroud)
返回
"fields":{"System.RelatedLinkCount":4,"System.Title":"some title"}
Run Code Online (Sandbox Code Playgroud)
这意味着有4个相关链接指向工作项"某个标题",但它们没有被退回.我在这里错过了什么?我如何获得这些相关链接/子项目?
如何在我的版本定义中的powershell脚本中使用秘密变量?
我遇到过这个,但它不起作用."$($env:AGENT_HOMEDIRECTORY)\agent\worker\Modules"新代理上不存在该目录.
在新主机上访问秘密变量的正确方法是什么?我的代理版本是2.114.0.
powershell azure-pipelines azure-pipelines-release-pipeline azure-devops-rest-api
全部,我试图使用REST API获取TFS GIT中特定仓库中所有文件的列表.我找到了下面的一个,但它只显示"scopePath =/buld.xml"之后提到的特定文件名的内容,它只显示文件build.xml的内容.
但我正在尝试,只是列出特定存储库中的所有文件而不提及特定的文件名.
请帮我.
https://开头{}帐户名.visualstudio.com /(项目)/ _apis/git的/库/ {} repositoryId /items?items?scopePath=/&api-version=4.1
当我尝试使用POST请求在VSTS中创建新工作项时:
https://galilinetsky.visualstudio.com/Automatiom/_apis/wit/workitems/$Test%20Case?api-version=5.0-preview.2
Run Code Online (Sandbox Code Playgroud)
我得到下一个回应:
当前在您的环境中启用了Microsoft Internet Explorer的增强安全配置。增强的安全级别阻止了我们的Web集成体验正确显示或执行。要继续操作,请禁用此配置或与管理员联系。
我究竟做错了什么?
azure-devops ×8
tfs-sdk ×3
rest ×2
tfs ×2
api ×1
azure-pipelines-release-pipeline ×1
c# ×1
git ×1
powershell ×1
python ×1
tfs-2015 ×1
tfsbuild ×1