Azure Pipeline 为 ASP.NET Core Web API 生成 Swagger

问题描述 投票:0回答:1

我有一个在 Azure Devops 中构建的 ASP.NET Core Web API。我必须在构建过程中提取出招摇。

因此我发出以下命令:

- task: CmdLine@2
  displayName: 'Generate Swagger'
  inputs:
    script: |
      dotnet new tool-manifest
      dotnet tool install --version 6.5.0 Swashbuckle.AspNetCore.Cli
      cd Api
      set ASPNETCORE_ENVIRONMENT=Development
      dotnet swagger tofile --output $(Build.ArtifactStagingDirectory)/swagger.json $(System.DefaultWorkingDirectory)/src/Api/bin/Release/net8.0/Api.dll  v1
  workingDirectory: '${{ parameters.workingDirectory }}'

问题是,我的印象是它会启动应用程序,因为它会查找我的

appsettings.json
,一旦填充,它就会尝试连接到 BDD。

如何在 CI 中生成 Swagger?

appsettings.json
方法加载
Main
文件 :

IConfiguration Configuration = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true)
    .AddEnvironmentVariables()
    .Build();
azure-devops swagger azure-pipelines asp.net-core-webapi pipeline
1个回答
0
投票

我以前从未使用过该工具,但如果您需要基于

appsettings.json
环境变量加载正确的
ASPNETCORE_ENVIRONMENT
文件,请尝试使用
env
属性,这是为任务设置环境变量的推荐方法。

此方法适用于不同类型的代理(Windows、Linux、macOS),确保您的管道行为一致,无论代理类型如何。

尝试:

- task: CmdLine@2
  displayName: 'Generate Swagger'
  inputs:
    script: |
      dotnet new tool-manifest
      dotnet tool install --version 6.5.0 Swashbuckle.AspNetCore.Cli
      cd Api
      dotnet swagger tofile --output $(Build.ArtifactStagingDirectory)/swagger.json $(System.DefaultWorkingDirectory)/src/Api/bin/Release/net8.0/Api.dll  v1
  workingDirectory: '${{ parameters.workingDirectory }}'
  env:
    ASPNETCORE_ENVIRONMENT: 'Development'

代替:

- task: CmdLine@2
  displayName: 'Generate Swagger'
  inputs:
    script: |
      dotnet new tool-manifest
      dotnet tool install --version 6.5.0 Swashbuckle.AspNetCore.Cli
      cd Api
      set ASPNETCORE_ENVIRONMENT=Development
      dotnet swagger tofile --output $(Build.ArtifactStagingDirectory)/swagger.json $(System.DefaultWorkingDirectory)/src/Api/bin/Release/net8.0/Api.dll  v1
  workingDirectory: '${{ parameters.workingDirectory }}'

参见环境变量

© www.soinside.com 2019 - 2024. All rights reserved.