想象您有五个环境,开发,测试,UAT,阶段和生产。
对于这些环境,您具有以下生命周期:-冲刺:开发->测试-测试到产品:测试-> UAT->阶段->产品-UAT到产品:UAT->阶段->产品-修补程序:阶段->产品
发行版本看起来像2020.1.3。剪切新版本时,它将更新版本号中的主要(2020)或次要(1)。例如2020.1.3转到2020.2.1或2021.1.1。错误修复或次要发行版将更新最后一个数字(3)。
令人担心的是,是否在错误的时间或意外地将一个版本部署到了Test,UAT或Stage,这会停止我们的测试人员。例如,质量检查正在进行Test中2020.1.3版本的测试。开发人员不小心将2020.2推送到Test。其中包括未预期的新代码质量检查。质量检查处于测试2020.1.x的过程中,他们只希望查看2020.1.x的发行版。
我们不想在我们的频道中使用版本规则。每次剪切新版本时,都必须更新版本规则。
在将主要版本或次要版本第一次部署到环境中时,是否可能需要批准?
这两个步骤都将跳过开发和生产,因为它们不受此问题的影响。每次主要/次要版本更改都必须批准部署才能进行开发,这确实会很快淘汰。并且所有生产版本至少必须首先进行登台。
第一步运行此PowerShell脚本。它将将此特定环境的先前发行版号与当前发行版号进行比较。如果主要版本或次要版本不同,它将输出变量“ RequiresApproval”设置为true。
$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视频演示了这一操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句