【问题标题】:Is there a way to script repetitive tasks in Azure DevOps?有没有办法在 Azure DevOps 中编写重复性任务的脚本?
【发布时间】:2019-09-13 13:56:13
【问题描述】:

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

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

【问题讨论】:

  • 是的。查看 REST API 文档。
  • 嗨,现在怎么样了?下面的回答对你有帮助吗?如果是,您可以接受,因此其他 SO 用户将能够看到该解决方案是否有效。如果您仍然遇到一些问题,请发表评论,以便我们仍然可以为您提供帮助。

标签: azure-devops


【解决方案1】:

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

当然可以!正如丹尼尔在评论中所说,只需使用 REST API 就可以实现这些。但由于您想要完成的步骤很少,脚本可能会有点复杂


  • 创建一个新的 GIT 存储库

如果你也想使用API​​完成这一步,需要3个步骤来完成(由于文档中没有记录,我会描述得很详细):

Step1:创建导入仓库的验证

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
}

Step2:创建新的 repos 名称

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}"
  }
}

第三步:导入仓库

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 2014-11-29
    • 2020-09-30
    相关资源
    最近更新 更多