我正在尝试更新名为' AppVersion'的web.config应用设置。在VSTS中构建应用程序时使用内部版本号。
以下是我的构建步骤:
'替换代币'步骤转换为您的构建设置的任何变量,并替换您在配置文件中设置的标记。这部分可以工作,但它不会做的是得到一个像构建号这样的环境变量并进行替换。它只会替换指定的任何文本。这是我的构建变量:
因此,在构建步骤完成后,我的应用设置为...
<add key="AppVersion" value="$(BuildNumber)" />
什么时候应该...... ...
<add key="AppVersion" value="20160520.1" />
有人能指出我正确的方向吗? 非常感谢。
答案 0 :(得分:8)
我使用“** / * config中的替换标记”任务做了类似的事情。
要使用当前内部版本号更新密钥“AppVersion”的值,您的行应如下所示:
<add key="AppVersion" value="#{Build.BuildNumber}#" />
答案 1 :(得分:0)
在VSTS中,使用this doc中指定的$(Build.BuildNumber)
。
请注意,您不能使用$(Build.BuildNumber)
来设置变量的值,因为它是字面意思的;它应该是任务的一个参数。如果您的任务不接受它,您可以使用一个小的Powershell脚本和BUILD_BUILDNUMBER
环境变量替换。
param (
[Parameter(Mandatory = $true)]
[String]$fileWithTokens,
[Parameter(Mandatory = $false)]
[String]$tokenRegex = "__(\w+)__"
)
$vars = Get-ChildItem -path env:*
$contents = Get-Content -Path $fileWithTokens
$newContents = "";
$contents | % {
$line = $_
if ($_ -match $tokenRegex) {
$setting = Get-ChildItem -path env:* | ? { $_.Name -eq $Matches[1] }
if ($setting) {
Write-Host ("Replacing key {0} with value from environment" -f $setting.Name)
$line = $_ -replace $tokenRegex, $setting.Value
}
}
$newContents += $line + [Environment]::NewLine
}
Set-Content $fileWithTokens -Value $newContents
```
来源https://github.com/colindembovsky/cols-agent-tasks/tree/master/Tasks/ReplaceTokens
答案 2 :(得分:0)
答案 3 :(得分:0)
经过一天的研究,终于找到/创建了比使用Marketplace中任何随机应用(替换令牌)更好的选择。
我正在讨论的选项已在VSTS,Azure CLI任务中提供。
以下是疱疹:
az webapp config appsettings set -n iCoreTestApi -g ArchitectsSandbox -s Dev --settings BUILD_NUMBER=$(Build.BuildNumber)
命令解释:
在成功完成部署后,您将对新构建进行排队,您可以看到Azure上的应用程序设置部分已使用新的BUILD_NUMBER进行更新。
如果您还有任何疑问,请与我联系。