VSTS构建:使用内部版本号

时间:2016-05-20 12:12:15

标签: azure-devops azure-pipelines-build-task

我正在尝试更新名为' AppVersion'的web.config应用设置。在VSTS中构建应用程序时使用内部版本号。

以下是我的构建步骤:

build steps

'替换代币'步骤转换为您的构建设置的任何变量,并替换您在配置文件中设置的标记。这部分可以工作,但它不会做的是得到一个像构建号这样的环境变量并进行替换。它只会替换指定的任何文本。这是我的构建变量:

build variables

因此,在构建步骤完成后,我的应用设置为...

<add key="AppVersion" value="$(BuildNumber)" />

什么时候应该...... ...

<add key="AppVersion" value="20160520.1" />

有人能指出我正确的方向吗? 非常感谢。

4 个答案:

答案 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)

您可以在&#34;替换令牌&#34;之前添加PowerShell脚本任务。任务传递&#34; BuildNumber&#34;到&#34; AppVersion&#34;变量如下。 enter image description here

答案 3 :(得分:0)

经过一天的研究,终于找到/创建了比使用Marketplace中任何随机应用(替换令牌)更好的选择。

我正在讨论的选项已在VSTS,Azure CLI任务中提供。

以下是疱疹:

  1. 在appsettings.json
  2. 中添加初始值为1.0的设置BUILD_NUMBER
  3. 在您的应用中阅读appsettings.json并显示它。我相信你们都足够聪明,可以弄清楚如何使用appsettings在WebApplication上显示Build Number。
  4. 在Azure门户中,类似地在应用程序的应用程序服务下的Azure应用程序设置部分中创建名为BUILD_NUMBER的应用程序设置,初始值为1.0。
  5. 在VSTS中,在您的版本定义中,添加任务Azure CLI。
  6. 使用以下CLI命令填充所需字段,例如Azure订阅,脚本位置和内联脚本以及最后但最重要的内联脚本
  7. az webapp config appsettings set -n iCoreTestApi -g ArchitectsSandbox -s Dev --settings BUILD_NUMBER=$(Build.BuildNumber)

    命令解释:

    • iCoreTestApi应替换为您在Azure中的真实WebApp或Api名称
    • ArchitectsSandbox应该由Azure中的资源组替换
    • Dev是插槽名称,您可能有也可能没有。
    • 其余命令保持不变。

    在成功完成部署后,您将对新构建进行排队,您可以看到Azure上的应用程序设置部分已使用新的BUILD_NUMBER进行更新。

    如果您还有任何疑问,请与我联系。