Да, это возможно. Для этого мы будем использовать выходные переменные и условия выполнения .
Сначала в начало процесса были добавлены два новых шага.
Оба этапа пропускают разработку и производство, поскольку они не подвержены этой проблеме. Необходимость утверждать развертывание для разработчика каждый раз, когда основные / второстепенные изменения версии очень быстро устаревают. И все производственные выпуски должны быть не менее go для подготовки к началу.
На первом этапе выполняется этот сценарий PowerShell. Он сравнит предыдущий номер выпуска для этой указанной c среды с текущим номером выпуска. Для выходной переменной «requireApproval» будет установлено значение «истина», если основная или вспомогательная версия отличаются.
$releaseNumber = $OctopusParameters["Octopus.Release.Number"]
$releaseNumberArray = $releaseNumber.Split('.')
$lastVersion = $OctopusParameters["Octopus.Release.PreviousForEnvironment.Number"]
$lastVersionArray = $lastVersion.Split('.')
Write-Highlight "The previous version deployed to this environment was $lastVersion"
$requiresApproval = $false
if ($lastVersionArray[0] -ne $releaseNumberArray[0])
{
Write-Highlight "The previous major version $($lastVersionArray[0]) in $lastVersion is different than the one being deployed $($releaseNumberArray[0]) in $releaseNumber, this requires someone to approve"
$requiresApproval = $true
}
elseif ($lastVersionArray[1] -ne $releaseNumberArray[1])
{
Write-Highlight "The previous minor version $($lastVersionArray[1]) in $lastVersion is different than the one being deployed $($releaseNumberArray[1]) in $releaseNumber, this requires someone to approve"
$requiresApproval = $true
}
else
{
Write-Highlight "The previous version's major and minor versions are the same, skipping approval"
}
Set-OctopusVariable -name "RequiresApproval" -value $requiresApproval
Выходные переменные немного многословны и их сложно использовать. Чтобы сделать это проще, создайте переменную проекта для ссылки на нее.
На шаге ручного вмешательства установите условие выполнения для этой переменной проекта.
Теперь пришло время проверить это. UAT в настоящее время имеет 2020.1.2
, в то время как Test имеет 2020.2.3
. Когда 2020.2.4
развернуто для проверки, ручное вмешательство не должно появляться.
Успех, ручное вмешательство пропущено.
В настоящее время UAT имеет 2020.1.2
. 2020.2.4
имеет новую минорную версию, развертывание в UAT предложит пользователю ручное вмешательство.
Это видео на YouTube показывает это в действии.