我目前正在部署一个web应用程序,其中我有一个生产环境和一个测试环境的appsetting。 在部署过程中,如何将appsetting.json替换为生产环境或测试环境的内容?
我使用IIS Web App管理和IIS Web App部署来进行部署。
目前我所做的是:每当有东西被推送到主分支时,我已经设置Azure触发一个
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
testConfiguration: 'Test'
prodConfiguration: 'Production'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)"'
platform: '$(buildPlatform)'
configuration: '$(testConfiguration)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)"'
platform: '$(buildPlatform)'
configuration: '$(prodConfiguration)'
- task: DotNetCoreCLI@2
inputs:
command: 'publish'
publishWebProjects: true
zipAfterPublish: true
arguments: '--output $(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
我随后使用在drop中创建的构件进行部署。
问题出现在我想要部署到我的测试或生产环境时。
解决方案本身在appsetting.json上有一个转换,即appsetting.Test.json和appsetting.Production.json,但是位于drop文件夹中的内容仅为prod构建发布,而不是test和prod两者。
我该如何将两者都包含在drop文件夹中?
这样,在通过部署流水线发布它时,我可以指定要部署测试构建或生产构建吗?