在Visual Studio Team Services构建中创建Azure Cloud Service包

时间:2015-10-14 00:36:14

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

我们拥有一个具有Web角色和辅助角色的Azure云服务。我们希望在Visual Studio Team Services中设置持续交付,在源签入时自动将构建推送到Azure。 (QA环境)。源代码在Github中。最好不要检查Github的秘密,所以我们只检查.csdef文件,而不是.cscfg文件。

在VSTS中创建构建定义的最佳方法是从其他位置获取.cscfg文件并创建Cloud Service包吗?存储.cscfg文件的位置以及如何配置构建?

2 个答案:

答案 0 :(得分:0)

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

访问这些参数

答案 1 :(得分:0)

我们使用VSTS中提供的Replace tokens任务

enter image description here

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

enter image description here

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

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

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

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

例如Cloud Service中ServiceConfiguration Certificate设置的情况。该值必须是有效的证书指纹(即任何数字0-9和/或字母A-F,小写和大写)。如果值不符合架构要求,则定义此服务配置架构并且构建将失败。

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

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