我有一个运行良好的管道,并将其部署到 Windows 服务器。问题是我希望开发环境使用
appsettings.development.json
,生产环境使用 appsettings.json
。
如何在 CI/CD 管道中修复该问题并告诉如何正确构建项目。
这是github工作流程yml文件
name: Build and Publish to Server
on:
push:
branches:
- develop
jobs:
build-and-push:
runs-on: self-hosted
steps:
- name: Tst
run: whoami
- name: Test Checkout
uses: actions/checkout@v3
- name: Build Dotnet application
run: dotnet build
- name: Release Dotnet application
run: |
stop-webapppool Test
stop-iissite -Name Test-Confirm: $false
dotnet publish Test.App.Api -c Release --output C:\Test\development
- name: Run Dotnet application
run: |
start-webapppool Test
start-iissite -Name Test
我想知道如何根据构建隔离应用程序设置。我是不是错过了什么?
不确定您是否意识到这一点,但一般方法是
appsettings.json
包含通用设置,无论环境如何。对于特定环境的环境,您应该创建 appsettings.development.json
和 appsettings.production.json
。
要使其正常工作,您应该进行配置
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
在开发环境中,您应该将
ASPNETCORE_ENVIRONMENT
设置为 developement
,在生产环境中设置为 production
。基于这个正确的文件将被加载。