Ich möchte ein Arbeitselement an tfs an einen Build anhängen. Ich lese SVN-Protokolle, die die Arbeitsaufgabennummer enthalten, und versuche, den tatsächlichen Build zu aktualisieren, um sie anzuhängen.Arbeitselement anhängen, um über REST-API zu erstellen
workitems.Add(workItemStore.GetWorkItem(workitemid));
buildDetail.Information.AddAssociatedWorkItems(workitems.ToArray());
Wenn ich versuche, buildDetail.Information.Save();
oder buildDetail.Save();
zu treffen, erhalte ich eine AccessDeniedException
.
Siehe another post.
Also wollte ich mit REST versuchen ... Nach vielen Seiten auf MSDN, habe ich festgestellt, dass es keine .NET Client Library, die Builds kümmert. Es sieht aus wie meine einzige Möglichkeit ist, ein json in die TFS zu patchen:
PATCH https: // {instance}/DefaultCollection/{Projekt}/_apis/build/Builds/{} buildID api-version = {version}
Wie füge ich die Arbeitselemente richtig hinzu?
EDIT: Ich habe eine old post gefunden, die eine DLL im TFS-Namensraum erwähnte, der die gleichen Fähigkeiten wie der Anruf von oben hat. Unglücklicherweise wird es in MSDN nicht erwähnt. Das gleiche Problem hier: keine Möglichkeit, Arbeitselemente hinzuzufügen.
Um das Problem zu verbreiten und Adresse es zu MS: Patrick has created a post on uservoice
UPDATE:
ich es geschafft, einen Build in dem Workitem zu verknüpfen. Hier ist ein Ansatz in c#:
var json = new JsonPatchDocument
{
new JsonPatchOperation()
{
Operation = Operation.Add,
Path = "/relations/-",
Value = new WorkItemRelation()
{
Rel = "ArtifactLink",
Url = build.Uri.ToString()
}
}
};
var client = new WebClient { UseDefaultCredentials = true };
client.Headers.Add(HttpRequestHeader.ContentType, "application/json-patch+json");
client.UploadData(
options.CollectionUri + "/_apis/wit/workitems/" + workitemid + "?api-version=1.0",
"PATCH",
Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(json)));
Aber es gibt immer noch keine direkte in der Build-Bindung:
Und die Arbeit Artikel sagt unknown executable linktype
Nach der Nachricht in der gegebenen Workitem, ich nehme an, dass ich die falsche linktype verwende. Hat jemand eine Referenz für mich, welche Typen ich verwenden kann und sollte?
URI UPDATE: Ich bin schon mit den erwähnten uri:
KLEINERE LÖSUNG:
Ich hatte den Namen "Build", um die Attribute des Patches hinzuzufügen. Ich erkenne es immer noch nicht im Build selbst, aber für den Moment kann ich mit dem Link als Build-Typ arbeiten.
var json = new JsonPatchDocument
{
new JsonPatchOperation()
{
Operation = Operation.Add,
Path = "/relations/-",
Value = new WorkItemRelation()
{
Rel = "ArtifactLink",
Url = build.Uri.ToString()
Attributes = new Dictionary<string, object>()
{
{ "name", "Build" },
{ "comment", build.Result.ToString() }
}
}
}
};
Was die Art der Build ist? XAML oder vNext? –
@ Eddie-MSFT vNext – Greaka
Siehe meine Antwort für Details. –