有没有办法在Azure DevOps中编写重复性任务的脚本?

时间:2019-09-12 14:09:12

标签: azure-devops

每次在项目中创建一个新的GIT存储库时,我们都会执行许多任务,我想知道是否有一种方法(PowerShell或任何其他方法)将这些脚本编写出来。例如所有这些都是我们每次创建新存储库时要遵循的步骤

  1. 创建一个新的GIT存储库
  2. 为在以下期间进行的构建验证创建构建管道 拉取请求
  3. 向Master添加分支策略,包括使用上述构建验证构建的步骤
  4. 为发布创建构建管道
  5. 创建发布管道

1 个答案:

答案 0 :(得分:1)

  

是否可以在Azure DevOps中编写重复性任务的脚本?

当然可以!正如Daniel在评论中所说,仅使用REST API就可以实现所有这些。但是,由于您要实现的步骤很少,因此脚本可能复杂


  • 创建一个新的GIT存储库

如果您还想使用API​​完成此步骤,则需要完成3个步骤(由于doc中没有对此进行记录,因此我将对其进行详细介绍):

第1步:创建导入存储库的验证

POST https://dev.azure.com/{org name}/{project name}/_apis/git/import/ImportRepositoryValidations?api-version=5.2-preview.1 

请求正文:

{
  "gitSource":
     {
      "url":"${ReposURL}",
      "overwrite":false
     },
    "tfvcSource":null,
    "username":"$(username}"/null,
    "password":"${pw}"/"${PAT}"/null
}

第2步:创建新的存储库名称

POST https://dev.azure.com/{org name}/{project name}/_apis/git/Repositories?api-version=5.2-preview.1

请求正文:

{
  "name":"${ReposName}",
  "project":
  {
    "name":"{project name}",
    "id":"{this project id}"
  }
}

第3步:导入存储库

POST https://dev.azure.com/{org name}/{project name}/_apis/git/repositories/{the new repos name you create just now}/importRequests?api-version=5.2-preview.1

请求正文:

{
  "parameters":
  {
   "deleteServiceEndpointAfterImportIsDone":true,
   "gitSource":
    {
     "url":"${ReposURL}",
     "overwrite":false
    },
    "tfvcSource":null,
    "serviceEndpointId":null
}
}

在这些脚本中,您可以在变量标签中设置变量,然后使用${}在脚本中获取变量。


  • 为请求请求期间的构建验证创建构建管道

此步骤最好手动完成,因为您可以配置有关任务的更多信息并使用UI进行触发。如果仍要使用API​​,请参考此文档:create build definition。有详细的示例供您尝试。


向Master添加分支策略,包括使用上述构建验证构建的步骤

此API仍记录在文档create build policy中。只需参考一下,并确保使用正确的policy type和相应的buildDefinitionId


  • 为发布创建构建管道

仍然建议您手动完成操作,与您提到的步骤3相同。


创建发布管道

请参阅此文档:create release

注意:对于将要多次使用的某些参数,您可以将其设置为变量。对于需要从先前的API响应中获取的参数,您可以定义一个变量以获取其值,然后将此变量传递给下一个要使用的API。 :

$resultT= $result.Headers.ETag
Write-Host  "##vso[task.setvariable variable=etag;]$resultT"

现在,您可以在下一个API中直接使用$(etag)