- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在通过 bitbucket -> vsts -> azure 自动化 CI/CD 配置。
我的理想结果是能够将我的配置值复制粘贴(或手动输入)到它们各自的控制台程序中,并让应用程序配置整个 CI/CD 过程,而无需单击所有 Web 界面。现在可以在 Bitbucket 和 Azure 中使用,但事实证明通过 REST API 创建 VSTS CI/CD 配置很困难。
Azure resources和 Bitbucket 配置目前是通过与 REST API 对话的简单 .NET 控制台应用程序创建的。基本上将所有值 ( azure input values/bitbucket input values ) 复制粘贴(或手动输入)到控制台应用程序中,它将在 5 分钟内配置所有内容。
现在,我面临着尝试在 VSTS 中自动生成配置和发布配置的困难部分。 Microsoft Docs 在 documentation of VSTS client libraries 上不是很好.
老实说,我不知道该怎么做create a build definition通过 API 或客户端库。
BuildHttpClient我可以使用三种方法:
public virtual Task<BuildDefinition> CreateDefinitionAsync(BuildDefinition definition, Guid project, int? definitionToCloneId = null, int? definitionToCloneRevision = null, object userState = null, CancellationToken cancellationToken = default(CancellationToken));
public virtual Task<BuildDefinition> CreateDefinitionAsync(BuildDefinition definition, int? definitionToCloneId = null, int? definitionToCloneRevision = null, object userState = null, CancellationToken cancellationToken = default(CancellationToken));
public virtual Task<BuildDefinition> CreateDefinitionAsync(BuildDefinition definition, string project, int? definitionToCloneId = null, int? definitionToCloneRevision = null, object userState = null, CancellationToken cancellationToken = default(CancellationToken));
BuildDefinition具有以下属性。
namespace Microsoft.TeamFoundation.Build.WebApi
{
[DataContract]
public class BuildDefinition : BuildDefinitionReference
{
public BuildDefinition();
public List<string> Tags { get; }
public PropertiesCollection Properties { get; }
public List<RetentionPolicy> RetentionRules { get; }
public List<Demand> Demands { get; }
public IDictionary<string, BuildDefinitionVariable> Variables { get; }
public List<BuildTrigger> Triggers { get; }
public ProcessParameters ProcessParameters { get; set; }
public BuildRepository Repository { get; set; }
public List<BuildOption> Options { get; }
public List<BuildDefinitionStep> Steps { get; }
public bool BadgeEnabled { get; set; }
public int JobTimeoutInMinutes { get; set; }
public BuildAuthorizationScope JobAuthorizationScope { get; set; }
public string DropLocation { get; set; }
public string Description { get; set; }
public string Comment { get; set; }
public string BuildNumberFormat { get; set; }
public Build LatestBuild { get; }
public Build LatestCompletedBuild { get; }
}
}
如您所见,构建定义的最重要属性是只读的。
如何通过 REST API 创建构建定义?有没有比 VSTS 更好的替代品可以让我做到这一点?
最佳答案
REST API 的格式为 create a build definition如下:
POST https://{account}.visualstudio.com/{project}/_apis/build/definitions?api-version=5.0-preview.6
应用程序/json 示例:
{
"process": {
"phases": [
{
"steps": [
],
"name": "Phase 1",
"refName": "Phase_1",
"condition": "succeeded()",
"target": {
"executionOptions": {
"type": 0
},
"allowScriptsAuthAccessOption": false,
"type": 1
},
"jobAuthorizationScope": "projectCollection",
"jobCancelTimeoutInMinutes": 1
}
],
"type": 1
},
"repository": {
"properties": {
"cleanOptions": "0",
"labelSources": "0",
"labelSourcesFormat": "$(build.buildNumber)",
"reportBuildStatus": "true",
"gitLfsSupport": "false",
"skipSyncSource": "false",
"checkoutNestedSubmodules": "false",
"fetchDepth": "0"
},
"id": "4ba24767-e5a6-4987-80cc-ebaeca01fdbc",
"type": "TfsGit",
"name": "product1",
"url": "https://marinaliu.visualstudio.com/Git2/_git/product1",
"defaultBranch": "refs/heads/master",
"clean": "false",
"checkoutSubmodules": false
},
"processParameters": {},
"drafts": [],
"queue": {
"id": 324,
"name": "ownPC",
"pool": {
"id": 23,
"name": "ownPC"
}
},
"name": "definitionCreatedByRESTAPI",
"type": "build",
"queueStatus": "enabled"
}
要在 C# 中使用 REST API,您可以按如下方式转换:
var personalaccesstoken = "PAT";
var base64Token = Convert.ToBase64String(Encoding.ASCII.GetBytes($":{personalaccesstoken}"));
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", base64Token);
var requestMessage = new HttpRequestMessage(HttpMethod.Post, "https://account.visualstudio.com/project/_apis/build/definitions?api-version=5.0-preview.6");
requestMessage.Content = new StringContent("{\"process\": { \"phases\": [{\"steps\": [], \"name\": \"Phase 1\",\"refName\": \"Phase_1\",\"condition\": \"succeeded()\",\"target\": { \"executionOptions\": { \"type\": 0 },\"allowScriptsAuthAccessOption\": false, \"type\": 1 }, \"jobAuthorizationScope\": \"projectCollection\", \"jobCancelTimeoutInMinutes\": 1 }],\"type\": 1 }, \"repository\": { \"properties\": { \"cleanOptions\": \"0\",\"labelSources\": \"0\",\"labelSourcesFormat\": \"$(build.buildNumber)\", \"reportBuildStatus\": \"true\",\"gitLfsSupport\": \"false\", \"skipSyncSource\": \"false\",\"checkoutNestedSubmodules\": \"false\", \"fetchDepth\": \"0\"},\"id\": \"4ba24767-e5a6-4987-80cc-ebaeca01fdbc\",\"type\": \"TfsGit\",\"name\": \"product1\", \"url\": \"https://marinaliu.visualstudio.com/Git2/_git/product1\", \"defaultBranch\": \"refs/heads/master\", \"clean\": \"false\",\"checkoutSubmodules\": false },\"processParameters\": {}, \"drafts\": [],\"queue\": { \"id\": 324, \"name\": \"ownPC\",\"pool\": {\"id\": 23, \"name\": \"ownPC\"}}, \"name\": \"definitionCreatedByRESTAPI\", \"type\": \"build\",\"queueStatus\": \"enabled\"}", Encoding.UTF8, "application/json");
HttpResponseMessage response = client.SendAsync(requestMessage).Result;
response.EnsureSuccessStatusCode();
引用博客Accessing TFS/VSTS 2017 programmatically对于 C# 程序。
关于c# - 如何通过 VSTS REST API 创建构建定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50288144/
我的公司有许多 Visual Studio Team Services 帐户。我们有一个用于内部开发,一个用于我们的每个客户。我们在内部开发帐户 (https://{dev-account}.visu
我需要为 VSTS 构建摘要选项卡开发一个相当复杂的 UI。我使用 VS Code 作为代码编辑器。以下 url 描述了如何使用 Edge 浏览器进行调试,但是这种方法需要不断地打包和部署扩展到 VS
情况是这样的:有两家公司参与一个项目。 CompanyA管理一个VSTS帐户,该帐户下有几个源代码存储库,一些是TFVC,一些是Git。目标是最终在属于 CompanyB 的 VSTS 帐户下获得存储
情况是这样的:有两家公司参与一个项目。 CompanyA管理一个VSTS帐户,该帐户下有几个源代码存储库,一些是TFVC,一些是Git。目标是最终在属于 CompanyB 的 VSTS 帐户下获得存储
我正在使用 Karma-coverage 生成代码覆盖率。我可以在 http-server 上托管我的输出覆盖文件夹并在本地查看它。 如何使此报告在 VSTS 代码覆盖率选项卡上可见? 我是否需要重新
将构建的 Docker 镜像从构建管道传递到发布管道 我目前正在 VSTS 构建管道中成功构建 Docker 镜像。我想获取此构建的镜像,然后将其发布为构建工件,以便 VSTS 发布管道可以使用我们的
我有一个具有以下内容的解决方案: 具有旧式 csproj 的多个库 net461 多个项目 net461 与新的 csproj(Net 核心库和我们的应用程序,但 tatgets net461)并引用
我们在 VSTS 中配置了多个使用不同数据库的发布环境。这些环境中的每个数据库都包含控制应用程序工作方式的特定元数据。此元数据由管理工具定期配置给用户。 我们希望备份此元数据并在每次发布时将其 che
我确实使用 Azure、Terraform、Ansible、GIT 和 Visual Studio Team Service (VSTS) 设置了基础架构即代码 (IAC) 构建管道。我还在本地计算机
我创建了一个 .npmrc 文件,将其配置为使用 VSTS pacakge feed,但我的所有公共(public)依赖项都不会安装(你知道,react、lodash ...) 似乎一旦我将 .npm
有谁知道 VSTS 如何为构建创建关联提交列表? 我专门寻找在创建新分支时创建的那些。目前它似乎只是创建一个过去几次提交到分支的列表。 理想情况下,我想要类似于 git log master.. 的东
我正在运行一个带有两个代理的本地 TFS 实例。代理 1 有一个本地路径,用于存储我们的工件。代理 2 必须通过网络路径 (\agent1\artifacts...) 访问该路径。 从代理 1 下载工
下面是我编写的变量声明和 power shell 脚本,用于在队列新构建中更新构建变量 声明: Power shell 脚本: $fileData = Get-Content -Path C:\bui
我正在尝试修改 VSTS 和 MS Project 之间的字段映射。问题是命令 exe 无法在 TFS 作为 SaaS 上运行,特别是在我们正在使用的 Azure 云上。 我可以使用什么来首先下载映射
我可以通过硬编码来到达工件位置:$(System.DefaultWorkingDirectory)\_Testing-CI\test\ 但是我可以以某种方式从版本中的某些变量获取源别名和工件名称吗?
我正在从事一个 Azure 项目,该项目只能使用 Visual Studio CI 中的 ARM 模板进行部署,并且我们只有 Azure 门户的读取访问权限。 目前我收到以下错误,并且无法发布。我也无
我正在尝试使用Linux Shell和Docker在VSTS上运行以下嵌套命令,因此我可以停止和删除所有基于“jspsample”图像的容器: docker rm $(docker stop $(do
我正在尝试使用VSTS和docker-compose配置持续交付,我想将其推送到Azure容器注册表。 这是我在VSTS上的构建定义: 并且我收到关于生成结果的错误消息: No such comman
尝试从VSTS Online克隆大型仓库时,大约克隆了1%时,出现以下错误: remote: Found 24565 objects to send. (83 ms) Receiving
我使用VSTS做了一个存储库并克隆了它,并正确设置了所有SSH凭据,但是每次仍然要我输入用户名和密码。怎么来的? 最佳答案 问题是我将存储库来源作为https网址。必须是SSH。 git remote
我是一名优秀的程序员,十分优秀!