diff --git a/.github/workflows/createrelease.yml b/.github/workflows/createrelease.yml index 4c3be0ec..06348ded 100644 --- a/.github/workflows/createrelease.yml +++ b/.github/workflows/createrelease.yml @@ -46,7 +46,11 @@ jobs: - name: Publish API if: ${{ github.event.release.prerelease == false }} - run: dotnet publish "SecurityService\SecurityService.csproj" --configuration Release --output publishOutput -r win-x64 --self-contained + run: dotnet publish "SecurityService\SecurityService.csproj" --configuration Release --output publishOutput -r win-x64 --self-contained + -p:Version=${{ steps.get_version.outputs.VERSION }} + -p:AssemblyVersion=${{ steps.get_version.outputs.VERSION }} + -p:FileVersion=${{ steps.get_version.outputs.VERSION }} + -p:InformationalVersion=${{ steps.get_version.outputs.VERSION }} - name: Build Release Package run: | diff --git a/SecurityService/Program.cs b/SecurityService/Program.cs index 8037151d..fd2de618 100644 --- a/SecurityService/Program.cs +++ b/SecurityService/Program.cs @@ -4,13 +4,14 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; +using NLog.Extensions.Logging; using Serilog; using Serilog.Events; using Serilog.Sinks.SystemConsole.Themes; -using System; -using NLog.Extensions.Logging; using Shared.Logger; using Shared.Middleware; +using System; +using Sentry.Extensibility; namespace SecurityService { @@ -23,6 +24,7 @@ namespace SecurityService using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using NLog; + using Shared.General; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; @@ -71,6 +73,45 @@ private static void ConfigureWeb(IHostBuilder hostBuilder) { hostBuilder.ConfigureWebHostDefaults(webBuilder => { + webBuilder.ConfigureAppConfiguration((context, configBuilder) => + { + var env = context.HostingEnvironment; + + configBuilder.SetBasePath(fi.Directory.FullName) + .AddJsonFile("hosting.json", optional: true) + .AddJsonFile($"hosting.{env.EnvironmentName}.json", optional: true) + .AddJsonFile("/home/txnproc/config/appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"/home/txnproc/config/appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true) + .AddEnvironmentVariables(); + + // Build a snapshot of configuration so we can use it immediately (e.g. for Sentry) + var builtConfig = configBuilder.Build(); + + // Keep existing static usage (if you must), and initialise the ConfigurationReader now. + Startup.Configuration = builtConfig; + ConfigurationReader.Initialise(Startup.Configuration); + + // Configure Sentry on the webBuilder using the config snapshot. + var sentrySection = builtConfig.GetSection("SentryConfiguration"); + if (sentrySection.Exists()) + { + // Replace the condition below if you intended to only enable Sentry in certain environments. + if (env.IsDevelopment() == false) + { + webBuilder.UseSentry(o => + { + o.Dsn = builtConfig["SentryConfiguration:Dsn"]; + o.SendDefaultPii = true; + o.MaxRequestBodySize = RequestSize.Always; + o.CaptureBlockingCalls = true; + o.Release = Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? "unknown"; + }); + } + } + }); + webBuilder.UseStartup(); webBuilder.ConfigureServices(services => { diff --git a/SecurityService/SecurityService.csproj b/SecurityService/SecurityService.csproj index 87b9ae54..e4099c36 100644 --- a/SecurityService/SecurityService.csproj +++ b/SecurityService/SecurityService.csproj @@ -43,6 +43,7 @@ + diff --git a/SecurityService/Startup.cs b/SecurityService/Startup.cs index 74566f23..08c8c617 100644 --- a/SecurityService/Startup.cs +++ b/SecurityService/Startup.cs @@ -40,16 +40,7 @@ public class Startup /// The web host environment. public Startup(IWebHostEnvironment webHostEnvironment) { - IConfigurationBuilder builder = new ConfigurationBuilder().SetBasePath(webHostEnvironment.ContentRootPath) - .AddJsonFile("/home/txnproc/config/appsettings.json", true, true) - .AddJsonFile($"/home/txnproc/config/appsettings.{webHostEnvironment.EnvironmentName}.json", - optional:true).AddJsonFile("appsettings.json", optional:true, reloadOnChange:true) - .AddJsonFile($"appsettings.{webHostEnvironment.EnvironmentName}.json", - optional:true, - reloadOnChange:true).AddEnvironmentVariables(); - - Startup.Configuration = builder.Build(); - Startup.WebHostEnvironment = webHostEnvironment; + Startup.WebHostEnvironment = webHostEnvironment; } #endregion