我们拥有一个具有Web角色和辅助角色的Azure云服务。我们希望在Visual Studio Team Services中设置持续交付,在源签入时自动将构建推送到Azure。 (QA环境)。源代码在Github中。最好不要检查Github的秘密,所以我们只检查.csdef文件,而不是.cscfg文件。
在VSTS中创建构建定义的最佳方法是从其他位置获取.cscfg文件并创建Cloud Service包吗?存储.cscfg文件的位置以及如何配置构建?
答案 0 :(得分:0)
解决方案:最终使用自定义PowerShell脚本将.cscfg
文件中的配置值替换为VSTS变量。配置PowerShell脚本按发布管理管道中定义的环境运行。注意:定义为secret的变量必须作为参数传递给PowerShell脚本,因为PowerShell脚本无法使用$Env:
答案 1 :(得分:0)
我们使用VSTS中提供的Replace tokens
任务
您还可以为字符串替换指定前缀和后缀。
然后在ServiceConfiguration.Cloud.cscfg
中,您将使用定义的前缀和后缀来指示要替换的字符串。值将取自您在VSTS中定义的Variables
。然后,您将把此设置的变量名称放在前缀和后缀之间。
将被ServiceConfiguration.Cloud.cscfg
变量替换的Password
文件示例。
<Setting name="SqlPassword" value="#{Password}#" />
这可用于转换/替换任何配置文件中的任何字符串。需要注意的一点是,在某些配置文件中,架构将验证特定设置的值。
例如Cloud Service中ServiceConfiguration
Certificate
设置的情况。该值必须是有效的证书指纹(即任何数字0-9和/或字母A-F,小写和大写)。如果值不符合架构要求,则定义此服务配置架构并且构建将失败。
为了解决这个问题,我们在Release中有另一项任务来替换证书。此前缀/后缀可分别为abc
和def
。变量的名称为001
。不幸的是,它不具有描述性,因为它必须是有效的证书指纹。
<Certificate name="MainSSL" thumbprint="abc001def" thumbprintAlgorithm="sha1" />