2016-12-13 5 views
-1

У нас есть автоматизированный инструмент в C# и с использованием API-интерфейса «libgit2sharp», он будет делать репозиторий Clone, файл Stage, Commit и Push изменения, Pull Request создается REST API.VSTS - Добавить рабочий элемент с PullRequest

Теперь необходимо добавить рабочий элемент с запросом на извлечение, вам потребуются предложения для продолжения.

Спасибо,

+1

Добавить '# 1234' в сообщении фиксации. – jessehouwing

+0

Каков результат после того, как вы попытаетесь связать запрос на тягу к рабочему пункту (обратитесь к моему решению)? –

ответ

0
public static bool AddWorkItem() 
    { 
     HttpWebResponse response = null; 
     string workItem = "12345678"; 
     string pullReqId = string.Empty; 
     string artifactId = string.Empty; 
     string moduleName = "abcd"; 


     pullReqId = "123456"; 
     artifactId = "vstfs:///Git/PullRequestId/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"; 
     try 
     { 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://tfs-glo-xxxxxxxxx.visualstudio.com/_apis/wit/workItems/" + workItem); 

      request.Accept = "application/json;api-version=3.0;excludeUrls=true"; 
      request.ContentType = "application/json-patch+json"; 
      request.Referer = "https://tfs-glo-xxxxxxxxx.visualstudio.com/Apps/_git/" + moduleName + "/pullrequest/" + pullReqId + "?_a=overview"; 

      string _auth = string.Format("{0}:{1}", "GITUserName", "GITPassword"); 
      string _enc = Convert.ToBase64String(Encoding.ASCII.GetBytes(_auth)); 
      string _cred = string.Format("{0} {1}", "Basic", _enc); 
      request.Headers[HttpRequestHeader.Authorization] = _cred; 

      request.Method = "PATCH"; 

      string body = @"[{""op"":0,""path"":""/relations/-"",""value"":{""attributes"":{""name"":""Pull Request""},""rel"":""ArtifactLink"",""url"":" + "\"" + artifactId + "\"" + "}}]"; 
      byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body); 
      request.ContentLength = postBytes.Length; 
      Stream stream = request.GetRequestStream(); 
      stream.Write(postBytes, 0, postBytes.Length); 
      stream.Close(); 

      response = (HttpWebResponse)request.GetResponse(); 
     } 
     catch (Exception ex) 
     { 
      Log.Write("Add Work Item: ", ex); 
      return false; 
     } 
     return true; 
    } 
1

Это не поддерживается, чтобы связать рабочие элементы запроса тяговой через REST API или клиент SDK API, но вы можете связать запрос тянуть работать пункт через REST API. Таким образом, рабочий процесс будет выглядеть следующим образом:

  1. Создать запрос тянущего через REST API
  2. Link, что тянуть запрос на работу пункт через REST API.

Более подробную информацию, вы можете проверить эту нить для деталей: Associate Work Items to a Pull Request Programmatically (Включить C# код)