失败后自动重新部署

2024-02-18

我使用 VSTS 在每次提交到特定分支后自动发布我的应用程序。任务基本上是:

  1. 重新创建数据库
  2. 如果第一个没问题 -> 部署 API 和 Web
  3. 如果第二个没问题 -> 部署并重新启动一些 Windows 服务

在第二步中,有时会由于某些连接或 IIS 问题而导致部署失败。这其实不是 重要的是,我不想非常具体地说明这里的错误性质。当事情发生时我所要做的就是去VSTS然后单击Redeploy失败的任务。

但我想知道是否有一种方法可以自动化该过程。因此,如果部署失败并且出现特定错误,我想触发Redeploy自动地。有没有办法在 VSTS 中做到这一点?我有什么想法可以实现这一目标吗?


有两个选项可以帮助您重新部署第二个任务/环境。

选项1:添加与第二个任务相同的任务,并在上一个任务失败时执行以下任务

如果要重新部署三次,可以在第二个环境中添加与第二个任务相同的三个任务。对于您添加的三个任务,仅设置 w当之前的任务失败时 for 运行这个任务选项。因此它可以重新部署第二个任务/环境不超过三倍。

选项 2:在第二个环境中的第二个任务之后添加 PowerShell 任务,如果第二个任务失败,则重新部署第二个环境

在PowerShell任务中,您应该执行以下操作。

1.获取当前发布日志rest API https://www.visualstudio.com/en-us/docs/integrate/api/rm/releases#get-a-release:

GET https://account.vsrm.visualstudio.com/Git2/_apis/Release/releases/{releaseID}

对于releaseID,可以通过预定义变量获取值$(Release.ReleaseId).

2.获取第二个任务状态

在其余 API 响应中,您可以通过搜索任务来检查您的第二个任务显示名称并得到status为了任务。如下例,任务显示名称为PowerShell Script,任务失败(status值为failed).

{
    "id": 5,
    "timelineRecordId": "ae95a8be-6259-466d-ba8d-93711a922237",
    "name": "PowerShell Script",
    "dateStarted": "2017-10-03T02:43:25.757Z",
    "dateEnded": "2017-10-03T02:43:29.073Z",
    "startTime": "2017-10-03T02:43:25.757Z",
    "finishTime": "2017-10-03T02:43:29.073Z",
    "status": "failed",
    "rank": 4,
    "issues": [
       {
           "issueType": "Error",
           "message": "agit : The term 'agit' is not recognized as the name of a cmdlet, function, script file, or operable program. Check \r\nthe spelling of the name, or if a path was included, verify that the path is correct and try again.\r\nAt D:\\a\\_temp\\0a858f5c-894b-4944-bed4-54b3cbed48bc.ps1:1 char:1\r\n+ agit\r\n+ ~~~~\r\n    + CategoryInfo          : ObjectNotFound: (agit:String) [], CommandNotFoundException\r\n    + FullyQualifiedErrorId : CommandNotFoundException\r\n \r\n"
       },
       {
           "issueType": "Error",
           "message": "Process completed with exit code 0 and had 1 error(s) written to the error stream."
       }
    ],
   "task": {
      "id": "e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
      "name": "PowerShell",
      "version": "1.2.3"
   },
   "agentName": "Hosted Agent",
   "logUrl": "https://account.vsrm.visualstudio.com/f7855e29-6f8d-429d-8c9b-41fd4d7e70a4/_apis/Release/releases/300/environments/374/tasks/5/logs?releaseDeployPhaseId=344"
}

3.如果第二个任务失败,则通过以下方式重新部署第二个环境rest API https://www.visualstudio.com/en-us/docs/integrate/api/rm/releases#update-release-environment:

PATCH https://account.vsrm.visualstudio.com/{project}/_apis/Release/releases/{releaseID}/environments/{environmentID}?api-version=4.0-preview.4

对于环境IF,也可以通过预定义变量进入$(Release.EnvironmentId).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

失败后自动重新部署 的相关文章

随机推荐