VSTS Devops部署的Web和数据库无法回滚到以前的版本吗?

时间:2019-06-03 04:10:53

标签: .net azure-devops devops

部署失败(网络和数据库)时,将自动回滚到以前的版本

我已经在您的帐户中安装了 Release Management Utility 任务扩展程序,您会在该任务中看到一个名为“ Rollback powershell ”的任务

我尝试使用下面的“回滚PowerShell”代码,但不起作用。

try
{    
$jsonobject = ConvertFrom-Json $env:Release_Tasks

}
catch
{
Write-Verbose -Verbose “Error parsing Release_Tasks environment variable”
Write-Verbose -Verbose $Error
} 
foreach ($task in $jsonobject | Get-Member -MemberType NoteProperty)
{ 
$taskproperty = $jsonobject.$($task.Name) | ConvertFrom-Json
Write-Verbose -Verbose “Task $($taskproperty.Name) with rank $($task.Name) has status $($taskproperty.Status)”
// Perform rollback action required in case $task.Name has status failed   
} 

此方法正确吗?还有其他方法吗?

谢谢

2 个答案:

答案 0 :(得分:0)

该方法是正确的。如文档所述:

  

“ Release_Tasks”环境变量应由任务设置为   部署作业中每个任务的执行状态   适用于Powershell脚本。

我想知道您是否添加了变量System.Debug来输出调试信息。如果将System.Debug设置为发布管道的对象,则在任务运行时可以找到日志。

try
{    
    Write-Verbose -Message "1111111111111111111111111111111111111111111111111"
    Write-Verbose -Message “$env:Release_Tasks”
    Write-Verbose -Message "2222222222222222222222222222222222222222222222222"
    $jsonobject = ConvertFrom-Json $env:Release_Tasks
    Write-Verbose -Message "3333333333333333333333333333333333333333333333333"

}
catch
{
    Write-Verbose -Verbose “Error parsing Release_Tasks environment variable”
    Write-Verbose -Verbose $Error
} 
foreach ($task in $jsonobject | Get-Member -MemberType NoteProperty)
{ 
    $taskproperty = $jsonobject.$($task.Name) | ConvertFrom-Json
    Write-Verbose -Verbose “Task $($taskproperty.Name) with rank $($task.Name) has     status $($taskproperty.Status)”
    // Perform rollback action required in case $task.Name has status failed   
} 

您将获得调试信息,例如Log Info。您可以检查任务日志吗?我不确定在您的帖子中不工作的含义。这是否表示发行失败或Rollback PowerShell任务没有按您期望的方式工作?请详细说明信息。

答案 1 :(得分:0)

我认为您缺少其余的代码。您需要添加执行回滚的逻辑:

if ($taskproperty.Status -eq  "failed")
{
      $statuscode = "$($taskproperty.Status)"
      Write-Verbose -Verbose $statuscode
}
}