Добавление новых файлов и папок в репозиторий Azure Git с помощью Azure DevOps REST API - PullRequest
0 голосов
/ 05 августа 2020

Как добавить новые файлы и папки в Azure Git репозиторий с Azure DevOps REST API?

Я хочу добавить несколько файлов stati c в свой репозиторий, используя Azure DevOps REST API.

https://docs.microsoft.com/en-us/rest/api/azure/devops/git/repositories?view=azure-devops-rest-5.1

Есть ли какой-либо вариант, доступный через REST API?.

или любой другой доступный автоматизированный способ, либо CICD, либо через c#?

1 Ответ

2 голосов
/ 05 августа 2020

Я нашел ответ, мы можем использовать Git Pu sh REST API uri

https://docs.microsoft.com/en-us/rest/api/azure/devops/git/pushes/create?view=azure-devops-rest-5.1

Follow ниже шаги в вашем коде C#

  1. вызовите GetRef REST https://dev.azure.com/ {0} / {1} / _ apis / git / repositories / {2} / refs {3 } это должно вернуть объект вашей ветки репозитория, который вы можете использовать для pu sh ваших изменений

  2. Затем вызовите Pu sh REST API для создания папки или файла в ваш репозиторий https://dev.azure.com/ {0} / {1} / _ apis / git / repositories / {2} / plows {3}

               var changes = new List<ChangeToAdd>();
                //Add Files
    
                //pnp_structure.yml
                var jsonContent = File.ReadAllText(@"./static-files/somejsonfile.json");
    
                ChangeToAdd changeJson = new ChangeToAdd()
                {
                    changeType = "add",
                    item = new ItemBase() { path = string.Concat(path, "/[your-folder-name]/somejsonfile.json") },
                    newContent = new Newcontent()
                    {
                        contentType = "rawtext",
                        content = jsonContent
                    }
                };
                changes.Add(changeJson);
    
    
                CommitToAdd commit = new CommitToAdd();
                commit.comment = "commit from code";
                commit.changes = changes.ToArray();
    
                var content = new List<CommitToAdd>() { commit };
                var request = new
                {
                    refUpdates = refs,
                    commits = content
                };
    
         var personalaccesstoken = _configuration["azure-devOps-configuration-token"];
    
        var authorization = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", personalaccesstoken)));
    
        _logger.LogInformation($"[HTTP REQUEST] make a http call with uri: {uri} ");
    
         //here I making http client call 
         // https://dev.azure.com/{orgnizationName}/{projectName}/_apis/git/repositories/{repositoryId}/pushes{?api-version}
        var result = _httpClient.SendHttpWebRequest(uri, method, data, authorization);
    
...