From d0f612470a818914438de93da5f9d6b00a6edfd6 Mon Sep 17 00:00:00 2001 From: Jan Staelens Date: Tue, 19 Dec 2023 12:06:07 +0100 Subject: [PATCH] Added DevOpsMetrics. Updated FileSystem NuGet to stable release. --- .../CICD.Tools.CatalogUpload.Lib.csproj | 2 +- .../CICD.Tools.CatalogUpload.csproj | 3 +- CICD.Tools.CatalogUpload/Program.cs | 108 ++++++++++++------ 3 files changed, 76 insertions(+), 37 deletions(-) diff --git a/CICD.Tools.CatalogUpload.Lib/CICD.Tools.CatalogUpload.Lib.csproj b/CICD.Tools.CatalogUpload.Lib/CICD.Tools.CatalogUpload.Lib.csproj index a2c310e..780c8e5 100644 --- a/CICD.Tools.CatalogUpload.Lib/CICD.Tools.CatalogUpload.Lib.csproj +++ b/CICD.Tools.CatalogUpload.Lib/CICD.Tools.CatalogUpload.Lib.csproj @@ -34,7 +34,7 @@ - + diff --git a/CICD.Tools.CatalogUpload/CICD.Tools.CatalogUpload.csproj b/CICD.Tools.CatalogUpload/CICD.Tools.CatalogUpload.csproj index 5fd5bd1..1c48e20 100644 --- a/CICD.Tools.CatalogUpload/CICD.Tools.CatalogUpload.csproj +++ b/CICD.Tools.CatalogUpload/CICD.Tools.CatalogUpload.csproj @@ -31,7 +31,8 @@ - + + diff --git a/CICD.Tools.CatalogUpload/Program.cs b/CICD.Tools.CatalogUpload/Program.cs index 66d8a7d..d01f48a 100644 --- a/CICD.Tools.CatalogUpload/Program.cs +++ b/CICD.Tools.CatalogUpload/Program.cs @@ -1,5 +1,6 @@ namespace Skyline.DataMiner.CICD.Tools.CatalogUpload { + using System; using System.CommandLine; using System.Threading.Tasks; @@ -8,6 +9,7 @@ using Serilog; using Skyline.DataMiner.CICD.Tools.CatalogUpload.Lib; + using Skyline.DataMiner.CICD.Tools.Reporter; /// /// Uploads artifacts to the Skyline DataMiner catalog (https://catalog.dataminer.services). @@ -106,47 +108,83 @@ private static async Task Process(string pathToArtifact, string dmCatalogTo private static async Task ProcessWithRegistrationAsync(string pathToArtifact, string dmCatalogToken, bool isDebug, string registrationIdentifier, string overrideVersion, string branch, string committerMail, string releaseUri) { - LoggerConfiguration logConfig = new LoggerConfiguration().WriteTo.Console(); - if (!isDebug) - { - logConfig.MinimumLevel.Information(); - } - else - { - - logConfig.MinimumLevel.Debug(); - } - - var seriLog = logConfig.CreateLogger(); + // Skyline.DataMiner.CICD.Tools.CatalogUpload|with-registration:https://github.com/SomeRepo|Status:OK" + // Skyline.DataMiner.CICD.Tools.CatalogUpload|with-registration:https://github.com/SomeRepo|Status:Fail-blabla" + // Skyline.DataMiner.CICD.Tools.CatalogUpload|volatile|Status:OK" + // Skyline.DataMiner.CICD.Tools.CatalogUpload|volatile|Status:Fail-blabla" + string devopsMetricsMessage = "Skyline.DataMiner.CICD.Tools.CatalogUpload"; - LoggerFactory loggerFactory = new LoggerFactory(); - loggerFactory.AddSerilog(seriLog); - - var logger = loggerFactory.CreateLogger("Skyline.DataMiner.CICD.Tools.CatalogUpload"); - - CatalogMetaData metaData = CatalogMetaData.FromArtifact(pathToArtifact); - - if (registrationIdentifier != null) + try { - // Registration as a whole is optional. If there is no Identifier provided there will be no registration. - metaData.Identifier = registrationIdentifier; // Need from user <- optional unique identifier. Usually the path to the sourcecode on github/gitlab/git. - - // These are optional. Only override if not null. - if (overrideVersion != null) metaData.Version = overrideVersion; - if (branch != null) metaData.Branch = branch; - if (committerMail != null) metaData.CommitterMail = committerMail; - if (releaseUri != null) metaData.ReleaseUri = releaseUri; + LoggerConfiguration logConfig = new LoggerConfiguration().WriteTo.Console(); + if (!isDebug) + { + logConfig.MinimumLevel.Information(); + } + else + { + + logConfig.MinimumLevel.Debug(); + } + + var seriLog = logConfig.CreateLogger(); + + LoggerFactory loggerFactory = new LoggerFactory(); + loggerFactory.AddSerilog(seriLog); + + var logger = loggerFactory.CreateLogger("Skyline.DataMiner.CICD.Tools.CatalogUpload"); + + CatalogMetaData metaData = CatalogMetaData.FromArtifact(pathToArtifact); + + if (registrationIdentifier != null) + { + devopsMetricsMessage += "|with-registration:" + registrationIdentifier; + // Registration as a whole is optional. If there is no Identifier provided there will be no registration. + metaData.Identifier = registrationIdentifier; // Need from user <- optional unique identifier. Usually the path to the sourcecode on github/gitlab/git. + + // These are optional. Only override if not null. + if (overrideVersion != null) metaData.Version = overrideVersion; + if (branch != null) metaData.Branch = branch; + if (committerMail != null) metaData.CommitterMail = committerMail; + if (releaseUri != null) metaData.ReleaseUri = releaseUri; + } + else + { + devopsMetricsMessage += "|volatile"; + } + + CatalogArtifact artifact = new CatalogArtifact(pathToArtifact, logger, metaData); + + if (string.IsNullOrWhiteSpace(dmCatalogToken)) + { + await artifact.UploadAsync(); + } + else + { + await artifact.UploadAsync(dmCatalogToken); + } + + devopsMetricsMessage += "|Status:OK"; } - - CatalogArtifact artifact = new CatalogArtifact(pathToArtifact, logger, metaData); - - if (string.IsNullOrWhiteSpace(dmCatalogToken)) + catch (Exception e) { - await artifact.UploadAsync(); + devopsMetricsMessage += "|" + "Status:Fail-" + e.Message; + throw; } - else + finally { - await artifact.UploadAsync(dmCatalogToken); + if (!string.IsNullOrWhiteSpace(devopsMetricsMessage)) + { + try + { + DevOpsMetrics devOpsMetrics = new DevOpsMetrics(); + await devOpsMetrics.ReportAsync(devopsMetricsMessage); + } + catch + { + // Fire and forget. + } + } } return 0;