0

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

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

4

2 回答 2

0

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

于 2016-12-29T12:51:55.007 回答
0

我们使用Replace tokensVSTS 中可用的任务

在此处输入图像描述

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

在此处输入图像描述

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

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

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

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

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

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

<Certificate name="MainSSL" thumbprint="abc001def" thumbprintAlgorithm="sha1" />
于 2018-06-10T19:00:22.300 回答