azure-devops - 使用 Azure DevOps REST API 将新文件和文件夹添加到 Azure Git 存储库
问题描述
如何使用 Azure DevOps REST API 将新文件和文件夹添加到 Azure Git 存储库?
我想使用 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#?
解决方案
我找到了答案,我们可以使用 Git Push REST API uri
https://docs.microsoft.com/en-us/rest/api/azure/devops/git/pushes/create?view=azure-devops-rest-5.1
在您的 C# 代码中执行以下步骤
调用 GetRef REST https://dev.azure.com/{0}/{1}/_apis/git/repositories/{2}/refs{3} 这应该返回可用于推送的存储库分支的对象你的改变
接下来,调用 Push REST API 在您的存储库中创建文件夹或文件 https://dev.azure.com/{0}/{1}/_apis/git/repositories/{2}/pushes{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);
推荐阅读
- javascript - React Native 边框半径渲染
- c# - 如何使用 ndjson 模式创建 json 文件?
- python - Python3函数定义,箭头和冒号
- spring - 创建名为“loginServer”的 bean 时出错:无法自省 bean 类
- javascript - React 异步渲染时间切片和悬念
- javascript - 如何使用 python (bs4) 读取特定的 html 行
- graphql - 通过相对路径访问文件的 GraphQL 语法
- python-3.x - 为什么这个递归 Python 函数将反转的对象作为列表返回?
- css - Bootstrap 4 复选框未正确对齐
- python - Flask Sqlalchemy 模型通过调用 model.__dict__ 返回不同的结果(有时显示反向引用,有时不显示)