5

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

这是我的构建步骤:

构建步骤

“替换令牌”步骤转换您为构建设置的任何变量并替换您在配置文件中设置的令牌。这部分工作,但它不会做的是获取一个环境变量,如内部版本号并进行替换。它只会替换已指定的任何文本。这是我的构建变量:

构建变量

所以在构建步骤完成后,我的应用设置是......

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

什么时候应该是……

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

谁能指出我正确的方向?非常感谢。

4

4 回答 4

11

我使用“在 **/*config 中替换令牌”任务做了类似的事情。

要使用当前内部版本号更新键“AppVersion”的值,您的行应如下所示,

<add key="AppVersion" value="#{Build.BuildNumber}#" />
于 2016-07-13T19:23:45.887 回答
1

您可以在“替换令牌”任务之前添加 PowerShell 脚本任务,以将“BuildNumber”传递给“AppVersion”变量,如下所示。 在此处输入图像描述

于 2016-05-23T00:54:38.270 回答
0

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

我所说的选项已经在 VSTS、Azure CLI 任务中可用。

以下是步骤:

  1. 在 appsettings.json 中添加初始值为 1.0 的设置 BUILD_NUMBER
  2. 在您的应用程序中读取 appsettings.json 并显示它。我相信你们都足够聪明,能够弄清楚如何使用 appsettings 在您的 WebApplication 上显示 Build Number。
  3. 在 Azure 门户中,类似地在应用程序服务下的 Azure 应用程序设置部分中创建一个名为 BUILD_NUMBER 的应用程序设置,初始值为 1.0。
  4. 在 VSTS 中,在发布定义中,添加任务 Azure CLI。
  5. 使用以下 CLI 命令填充必填字段,例如 Azure 订阅、脚本位置和最后但最重要的内联脚本

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。

如果您还有任何问题,请告诉我。

于 2017-10-31T22:11:10.513 回答
0

在 VSTS 中,$(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

于 2016-05-20T13:12:43.920 回答