我在Azure Devops中有一个发布管道。它有3个阶段。
我的构建创建了一个带有web部署包的工件。
在第1阶段,它将部署到运行Azure代理的本地计算机上的IIS。这很好用。我还对连接字符串进行了变量转换。
下一阶段是部署到Pre Prod。但是这台机器对我来说不可用,所以实际的部署是通过电子邮件/FTP将安装包发送给客户来完成的。因此,我需要的是运行一个转换,并使WebDeploy.zip文件可供我下载。
换句话说:我希望能够下载2个具有正确转换设置的包。PreProd.zip和Prod.zip
阶段3类似于阶段2,但具有Prod变量。
发布于 2020-05-04 19:50:08
我不确定你的应用程序和appsettings.json是什么样子。但是您可以一次为所有env准备一个包。使用检查部分JSON配置提供程序here。然后,您只需设置(或要求设置) ASPNETCORE_ENVIRONMENT环境变量。
所以你需要三个文件:
我不知道你是如何解决转换问题的,但是你可以使用token replace task来解决这个问题:
您的preprod配置可能如下所示:
{
"ConnectionStrings": {
"BloggingDatabase": "#{Preprod.ConnectionString}#"
},
}和你的prod文件:
{
"ConnectionStrings": {
"BloggingDatabase": "#{Prod.ConnectionString}#"
},
}现在,如果您在流水线中添加PreprodConnectionString和Prod.ConnectionString变量,您将得到token replace with variables values。通过这种方式,您可以在所有环境中重用相同的包。
编辑:
您还可以考虑使用Secure Files。请同时检查DownloadSecureFile任务。
编辑
另一种选择是JSON variable substitution,它类似于令牌替换,但在部署之前完成,因此包含秘密的文件不会存储为工件。
发布于 2020-05-05 14:44:29
对于web部署包,有xx.SetParameters.xml文件存储了所需的值,因此您可以在这些阶段更新此文件,然后通过FTP/SSH/Email等方式将所需的文件发送到目标服务器。
Configuring Parameters for Web Package Deployment
另一方面,对于ASP.NET核心项目,设置每个to环境变量的文件是更好、更简单的方法。(Krzysztof的回复)
更新1:
https://stackoverflow.com/questions/61589997
复制相似问题