【问题标题】:Create Azure Cloud Service package in Visual Studio Team Services build在 Visual Studio Team Services 构建中创建 Azure 云服务包
【发布时间】:2015-10-14 00:36:13
【问题描述】:

我们有一个带有 Web 角色和辅助角色的 Azure 云服务。我们想在 Visual Studio Team Services 中设置持续交付,在源代码签入时自动将构建推送到 Azure。 (质量保证环境)。源代码在 Github。最好不要将机密签入到 Github,因此我们只签入 .csdef 文件,而不是 .cscfg 文件。

在 VSTS 中创建构建定义的最佳方式是什么,它将从其他位置获取 .cscfg 文件并创建云服务包?在哪里存储 .cscfg 文件以及如何配置构建?

【问题讨论】:

  • 没有人有任何想法?
  • 解决方案:最终使用自定义 PowerShell 脚本将 .cscfg 文件中的配置值替换为 VSO 变量。配置 PowerShell 脚本根据发布管理管道中定义的环境运行。注意:定义为机密的变量必须作为参数传递给 PowerShell 脚本,因为 PowerShell 脚本无法使用 $Env 访问这些参数:

标签: azure azure-web-roles azure-cloud-services azure-pipelines cscfg


【解决方案1】:

解决方案:最终使用自定义 PowerShell 脚本将 .cscfg 文件中的配置值替换为 VSTS 变量。配置 PowerShell 脚本根据发布管理管道中定义的环境运行。注意:定义为机密的变量必须作为参数传递给 PowerShell 脚本,因为 PowerShell 脚本无法使用 $Env: 访问这些参数

【讨论】:

    【解决方案2】:

    我们使用 VSTS 中可用的 Replace tokens 任务

    您还可以为字符串替换指定前缀和后缀。

    然后在您的ServiceConfiguration.Cloud.cscfg 中,您将使用定义的前缀和后缀来指示要替换的字符串。的值将取自您在 VSTS 中定义的 Variables。然后,您将此设置的变量名称放在前缀和后缀之间。

    ServiceConfiguration.Cloud.cscfg 文件示例将被 Password 变量替换。

    <Setting name="SqlPassword" value="#{Password}#" />
    

    这可用于转换/替换任何配置文件中的任何字符串。需要注意的一点是,在某些配置文件中,架构会验证特定设置的值。

    例如云服务中ServiceConfiguration 的Certificate 设置。该值必须是有效的证书指纹(即任何数字 0-9 和/或字母 A-F,小写和大写)。服务配置架构定义了这个,如果值不满足架构要求,构建将失败。

    为了解决这个问题,我们在 Release 中有另一个任务来替换证书。前缀/后缀可能分别类似于abc 和def。变量的名称为001。不幸的是,它没有描述性,因为它必须是有效的证书指纹。

    <Certificate name="MainSSL" thumbprint="abc001def" thumbprintAlgorithm="sha1" />
    

    【讨论】:

      猜你喜欢
      • 2016-11-18
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多