From a7fe03463db99f0e95e1deb3dc011815234d1878 Mon Sep 17 00:00:00 2001 From: Joe Harvey Date: Mon, 8 Jun 2026 10:14:05 +0100 Subject: [PATCH 01/10] updated packages, versions and removed IdentityServer4 solution --- RSK.IdentityServer4.AuditEventSink.sln | 14 -- azure-pipelines.yml | 6 +- .../AdapterFactory.cs | 37 ----- .../Adapters/ConsentDeniedEventAdapter.cs | 21 --- .../Adapters/ConsentGrantedEventAdapter.cs | 20 --- .../Adapters/GrantsRevokedEventAdapter.cs | 21 --- .../TokenIssuedFailureEventAdapter.cs | 21 --- .../TokenIssuedSuccessEventAdapter.cs | 21 --- .../Adapters/UserLoginFailureEventAdapter.cs | 21 --- .../Adapters/UserLoginSuccessEventAdapter.cs | 21 --- .../Adapters/UserLogoutSuccessEventAdapter.cs | 20 --- .../AuditSink.cs | 40 ----- .../EventSinkAgregator.cs | 44 ----- .../IAdapterFactory.cs | 10 -- .../RSK.IdentityServer4.AuditEventSink.csproj | 26 --- .../StringExtention.cs | 10 -- src/Rsk.Audit.EF/Rsk.Audit.EF.csproj | 18 +- src/Rsk.Audit/Rsk.Audit.csproj | 18 +- ...DuendeIdentityServer.AuditEventSink.csproj | 10 +- .../Rsk.Audit.Tests.Common.csproj | 2 +- .../Rsk.Audit.Tests.Integration.csproj | 14 +- tests/Rsk.Audit.Tests/Rsk.Audit.Tests.csproj | 46 ++--- .../AdapterFactoryTests.cs | 2 +- ...IdentityServer.AuditEventSink.Tests.csproj | 13 +- .../AdapterFactoryTests.cs | 157 ------------------ .../AuditSinkTests.cs | 98 ----------- .../EventSinkAggregatorTests.cs | 105 ------------ ...dentityServer4.AuditEventSink.Tests.csproj | 19 --- 28 files changed, 59 insertions(+), 796 deletions(-) delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/AdapterFactory.cs delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/Adapters/ConsentDeniedEventAdapter.cs delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/Adapters/ConsentGrantedEventAdapter.cs delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/Adapters/GrantsRevokedEventAdapter.cs delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/Adapters/TokenIssuedFailureEventAdapter.cs delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/Adapters/TokenIssuedSuccessEventAdapter.cs delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/Adapters/UserLoginFailureEventAdapter.cs delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/Adapters/UserLoginSuccessEventAdapter.cs delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/Adapters/UserLogoutSuccessEventAdapter.cs delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/AuditSink.cs delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/EventSinkAgregator.cs delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/IAdapterFactory.cs delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/RSK.IdentityServer4.AuditEventSink.csproj delete mode 100644 src/RSK.IdentityServer4.AuditEventSink/StringExtention.cs delete mode 100644 tests/Rsk.IdentityServer4.AuditEventSink.Tests/AdapterFactoryTests.cs delete mode 100644 tests/Rsk.IdentityServer4.AuditEventSink.Tests/AuditSinkTests.cs delete mode 100644 tests/Rsk.IdentityServer4.AuditEventSink.Tests/EventSinkAggregatorTests.cs delete mode 100644 tests/Rsk.IdentityServer4.AuditEventSink.Tests/RSK.IdentityServer4.AuditEventSink.Tests.csproj diff --git a/RSK.IdentityServer4.AuditEventSink.sln b/RSK.IdentityServer4.AuditEventSink.sln index 8cd2259..2a4c179 100644 --- a/RSK.IdentityServer4.AuditEventSink.sln +++ b/RSK.IdentityServer4.AuditEventSink.sln @@ -3,12 +3,8 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.28306.52 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Rsk.IdentityServer4.AuditEventSink", "src\RSK.IdentityServer4.AuditEventSink\RSK.IdentityServer4.AuditEventSink.csproj", "{E752B37B-6562-4DC5-8657-620FE569905A}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{4AD87BDC-20A4-4426-80E4-0706AA9D8294}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RSK.IdentityServer4.AuditEventSink.Tests", "tests\Rsk.IdentityServer4.AuditEventSink.Tests\RSK.IdentityServer4.AuditEventSink.Tests.csproj", "{90720013-B304-4B49-A174-0C840E218A26}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0F18CE73-394B-4E63-8791-E6FDD93581AC}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rsk.DuendeIdentityServer.AuditEventSink", "src\Rsk.DuendeIdentityServer.AuditEventSink\Rsk.DuendeIdentityServer.AuditEventSink.csproj", "{28F49BF0-75B5-40D1-91D8-E701072F17CA}" @@ -31,14 +27,6 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E752B37B-6562-4DC5-8657-620FE569905A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E752B37B-6562-4DC5-8657-620FE569905A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E752B37B-6562-4DC5-8657-620FE569905A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E752B37B-6562-4DC5-8657-620FE569905A}.Release|Any CPU.Build.0 = Release|Any CPU - {90720013-B304-4B49-A174-0C840E218A26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {90720013-B304-4B49-A174-0C840E218A26}.Debug|Any CPU.Build.0 = Debug|Any CPU - {90720013-B304-4B49-A174-0C840E218A26}.Release|Any CPU.ActiveCfg = Release|Any CPU - {90720013-B304-4B49-A174-0C840E218A26}.Release|Any CPU.Build.0 = Release|Any CPU {28F49BF0-75B5-40D1-91D8-E701072F17CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {28F49BF0-75B5-40D1-91D8-E701072F17CA}.Debug|Any CPU.Build.0 = Debug|Any CPU {28F49BF0-75B5-40D1-91D8-E701072F17CA}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -72,8 +60,6 @@ Global HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {90720013-B304-4B49-A174-0C840E218A26} = {4AD87BDC-20A4-4426-80E4-0706AA9D8294} - {E752B37B-6562-4DC5-8657-620FE569905A} = {0F18CE73-394B-4E63-8791-E6FDD93581AC} {28F49BF0-75B5-40D1-91D8-E701072F17CA} = {0F18CE73-394B-4E63-8791-E6FDD93581AC} {84B20BBC-743D-47CB-A8E2-5B642005C7B4} = {4AD87BDC-20A4-4426-80E4-0706AA9D8294} {7E77BD90-9720-449D-95C9-74F52ED47CFD} = {0F18CE73-394B-4E63-8791-E6FDD93581AC} diff --git a/azure-pipelines.yml b/azure-pipelines.yml index bf97994..79af95e 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -7,11 +7,11 @@ variables: - name: buildConfiguration value: 'Release' - name: packageVersion - value: '3.0.0.0' + value: '4.0.0.0' - name: efPackageVersion - value: '3.0.0.0' + value: '4.0.0.0' - name: identityPackageVersion - value: '4.1.0.0' + value: '5.0.0.0' - name: RunSqlServerTest value: 'true' stages: diff --git a/src/RSK.IdentityServer4.AuditEventSink/AdapterFactory.cs b/src/RSK.IdentityServer4.AuditEventSink/AdapterFactory.cs deleted file mode 100644 index 6c0b487..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/AdapterFactory.cs +++ /dev/null @@ -1,37 +0,0 @@ -using IdentityServer4.Events; -using RSK.Audit; -using RSK.IdentityServer4.AuditEventSink.Adapters; - -namespace RSK.IdentityServer4.AuditEventSink -{ - public class AdapterFactory : IAdapterFactory - { - public IAuditEventArguments Create(Event evt) - { - if (evt != null) - { - switch (evt) - { - case TokenIssuedSuccessEvent tokenIssuedSuccessEvent: - return new TokenIssuedSuccessEventAdapter(tokenIssuedSuccessEvent); - case UserLoginSuccessEvent userLoginSuccess: - return new UserLoginSuccessEventAdapter(userLoginSuccess); - case UserLoginFailureEvent userLoginFailure: - return new UserLoginFailureEventAdapter(userLoginFailure); - case UserLogoutSuccessEvent userLogoutSuccess: - return new UserLogoutSuccessEventAdapter(userLogoutSuccess); - case ConsentGrantedEvent consentGranted: - return new ConsentGrantedEventAdapter(consentGranted); - case ConsentDeniedEvent consentDenied: - return new ConsentDeniedEventAdapter(consentDenied); - case TokenIssuedFailureEvent tokenIssuedFailure: - return new TokenIssuedFailureEventAdapter(tokenIssuedFailure); - case GrantsRevokedEvent grantsRevoked: - return new GrantsRevokedEventAdapter(grantsRevoked); - } - } - - return null; - } - } -} diff --git a/src/RSK.IdentityServer4.AuditEventSink/Adapters/ConsentDeniedEventAdapter.cs b/src/RSK.IdentityServer4.AuditEventSink/Adapters/ConsentDeniedEventAdapter.cs deleted file mode 100644 index 79b338d..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/Adapters/ConsentDeniedEventAdapter.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using IdentityServer4.Events; -using RSK.Audit; - -namespace RSK.IdentityServer4.AuditEventSink.Adapters -{ - public class ConsentDeniedEventAdapter : IAuditEventArguments - { - private readonly ConsentDeniedEvent evt; - - public ConsentDeniedEventAdapter(ConsentDeniedEvent evt) - { - this.evt = evt ?? throw new ArgumentNullException(nameof(evt)); - } - - public ResourceActor Actor => new ResourceActor(ResourceActor.UserSubjectType, evt.SubjectId, evt.SubjectId); - public string Action => evt.Name; - public AuditableResource Resource => new AuditableResource("Client", evt.ClientId); - public FormattedString Description => evt.ToString().SafeForFormatted(); - } -} diff --git a/src/RSK.IdentityServer4.AuditEventSink/Adapters/ConsentGrantedEventAdapter.cs b/src/RSK.IdentityServer4.AuditEventSink/Adapters/ConsentGrantedEventAdapter.cs deleted file mode 100644 index e1e2e72..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/Adapters/ConsentGrantedEventAdapter.cs +++ /dev/null @@ -1,20 +0,0 @@ -using IdentityServer4.Events; -using RSK.Audit; - -namespace RSK.IdentityServer4.AuditEventSink.Adapters -{ - public class ConsentGrantedEventAdapter : IAuditEventArguments - { - private readonly ConsentGrantedEvent evt; - - public ConsentGrantedEventAdapter(ConsentGrantedEvent evt) - { - this.evt = evt; - } - - public ResourceActor Actor => new ResourceActor(ResourceActor.UserSubjectType, evt.SubjectId, evt.SubjectId); - public string Action => evt.Name; - public AuditableResource Resource => new AuditableResource("Client", evt.ClientId); - public FormattedString Description => evt.ToString().SafeForFormatted(); - } -} diff --git a/src/RSK.IdentityServer4.AuditEventSink/Adapters/GrantsRevokedEventAdapter.cs b/src/RSK.IdentityServer4.AuditEventSink/Adapters/GrantsRevokedEventAdapter.cs deleted file mode 100644 index ef33308..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/Adapters/GrantsRevokedEventAdapter.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using IdentityServer4.Events; -using RSK.Audit; - -namespace RSK.IdentityServer4.AuditEventSink.Adapters -{ - public class GrantsRevokedEventAdapter : IAuditEventArguments - { - private readonly GrantsRevokedEvent evt; - - public GrantsRevokedEventAdapter(GrantsRevokedEvent evt) - { - this.evt = evt ?? throw new ArgumentNullException(nameof(evt)); - } - - public ResourceActor Actor => new ResourceActor(ResourceActor.UserSubjectType, evt.SubjectId, evt.SubjectId); - public string Action => evt.Name; - public AuditableResource Resource => new AuditableResource("Client", evt.ClientId); - public FormattedString Description => evt.ToString().SafeForFormatted(); - } -} diff --git a/src/RSK.IdentityServer4.AuditEventSink/Adapters/TokenIssuedFailureEventAdapter.cs b/src/RSK.IdentityServer4.AuditEventSink/Adapters/TokenIssuedFailureEventAdapter.cs deleted file mode 100644 index a18482a..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/Adapters/TokenIssuedFailureEventAdapter.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using IdentityServer4.Events; -using RSK.Audit; - -namespace RSK.IdentityServer4.AuditEventSink.Adapters -{ - public class TokenIssuedFailureEventAdapter : IAuditEventArguments - { - private readonly TokenIssuedFailureEvent evt; - - public TokenIssuedFailureEventAdapter(TokenIssuedFailureEvent evt) - { - this.evt = evt ?? throw new ArgumentNullException(nameof(evt)); - } - - public ResourceActor Actor => new ResourceActor(ResourceActor.MachineSubjectType, evt.ClientId, evt.ClientName); - public string Action => evt.Name; - public AuditableResource Resource => new AuditableResource("IdentityServer", evt.Endpoint); - public FormattedString Description => evt.ToString().SafeForFormatted(); - } -} diff --git a/src/RSK.IdentityServer4.AuditEventSink/Adapters/TokenIssuedSuccessEventAdapter.cs b/src/RSK.IdentityServer4.AuditEventSink/Adapters/TokenIssuedSuccessEventAdapter.cs deleted file mode 100644 index eb77e74..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/Adapters/TokenIssuedSuccessEventAdapter.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using IdentityServer4.Events; -using RSK.Audit; - -namespace RSK.IdentityServer4.AuditEventSink.Adapters -{ - public class TokenIssuedSuccessEventAdapter : IAuditEventArguments - { - private readonly TokenIssuedSuccessEvent evt; - - public TokenIssuedSuccessEventAdapter(TokenIssuedSuccessEvent evt) - { - this.evt = evt ?? throw new ArgumentNullException(nameof(evt)); - } - - public ResourceActor Actor => new ResourceActor(ResourceActor.MachineSubjectType, evt.ClientId, evt.ClientName); - public string Action => evt.Name; - public AuditableResource Resource => new AuditableResource("IdentityServer", evt.Endpoint); - public FormattedString Description => evt.ToString().SafeForFormatted(); - } -} diff --git a/src/RSK.IdentityServer4.AuditEventSink/Adapters/UserLoginFailureEventAdapter.cs b/src/RSK.IdentityServer4.AuditEventSink/Adapters/UserLoginFailureEventAdapter.cs deleted file mode 100644 index f65058a..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/Adapters/UserLoginFailureEventAdapter.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using IdentityServer4.Events; -using RSK.Audit; - -namespace RSK.IdentityServer4.AuditEventSink.Adapters -{ - public class UserLoginFailureEventAdapter : IAuditEventArguments - { - private readonly UserLoginFailureEvent evt; - - public UserLoginFailureEventAdapter(UserLoginFailureEvent evt) - { - this.evt = evt ?? throw new ArgumentNullException(nameof(evt)); - } - - public ResourceActor Actor => new ResourceActor(ResourceActor.UserSubjectType, evt.Username, evt.Username); - public string Action => evt.Name; - public AuditableResource Resource => new AuditableResource("IdentityServer", evt.Endpoint); - public FormattedString Description => evt.ToString().SafeForFormatted(); - } -} diff --git a/src/RSK.IdentityServer4.AuditEventSink/Adapters/UserLoginSuccessEventAdapter.cs b/src/RSK.IdentityServer4.AuditEventSink/Adapters/UserLoginSuccessEventAdapter.cs deleted file mode 100644 index 369ff5a..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/Adapters/UserLoginSuccessEventAdapter.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using IdentityServer4.Events; -using RSK.Audit; - -namespace RSK.IdentityServer4.AuditEventSink.Adapters -{ - public class UserLoginSuccessEventAdapter : IAuditEventArguments - { - private readonly UserLoginSuccessEvent evt; - - public UserLoginSuccessEventAdapter(UserLoginSuccessEvent evt) - { - this.evt = evt ?? throw new ArgumentNullException(nameof(evt)); - } - - public ResourceActor Actor => new ResourceActor(ResourceActor.UserSubjectType, evt.SubjectId, evt.DisplayName); - public string Action => evt.Name; - public AuditableResource Resource => new AuditableResource("IdentityServer", evt.Endpoint); - public FormattedString Description => evt.ToString().SafeForFormatted(); - } -} diff --git a/src/RSK.IdentityServer4.AuditEventSink/Adapters/UserLogoutSuccessEventAdapter.cs b/src/RSK.IdentityServer4.AuditEventSink/Adapters/UserLogoutSuccessEventAdapter.cs deleted file mode 100644 index d7bf8b9..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/Adapters/UserLogoutSuccessEventAdapter.cs +++ /dev/null @@ -1,20 +0,0 @@ -using IdentityServer4.Events; -using RSK.Audit; - -namespace RSK.IdentityServer4.AuditEventSink.Adapters -{ - public class UserLogoutSuccessEventAdapter : IAuditEventArguments - { - private readonly UserLogoutSuccessEvent evt; - - public UserLogoutSuccessEventAdapter(UserLogoutSuccessEvent evt) - { - this.evt = evt; - } - - public ResourceActor Actor => new ResourceActor(ResourceActor.UserSubjectType, evt.SubjectId, evt.DisplayName); - public string Action => evt.Name; - public AuditableResource Resource => new AuditableResource("IdentityServer", string.Empty); - public FormattedString Description => evt.ToString().SafeForFormatted(); - } -} diff --git a/src/RSK.IdentityServer4.AuditEventSink/AuditSink.cs b/src/RSK.IdentityServer4.AuditEventSink/AuditSink.cs deleted file mode 100644 index 608db13..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/AuditSink.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using System.Threading.Tasks; -using IdentityServer4.Events; -using IdentityServer4.Services; -using RSK.Audit; - -[assembly:InternalsVisibleTo("RSK.IdentityServer4.AuditEventSink.Tests")] - -namespace RSK.IdentityServer4.AuditEventSink -{ - public class AuditSink : IEventSink - { - private readonly IRecordAuditableActions auditRecorder; - - internal IAdapterFactory Factory { get; set; } = new AdapterFactory(); - - public AuditSink(IRecordAuditableActions auditRecorder) - { - this.auditRecorder = auditRecorder ?? throw new ArgumentNullException(); - } - - public Task PersistAsync(Event evt) - { - var auditArgument = Factory.Create(evt); - - if (auditArgument != null) - { - if (evt.EventType == EventTypes.Success || evt.EventType == EventTypes.Information) - { - return auditRecorder.RecordSuccess(auditArgument); - } - - return auditRecorder.RecordFailure(auditArgument); - } - - return Task.CompletedTask; - } - } -} diff --git a/src/RSK.IdentityServer4.AuditEventSink/EventSinkAgregator.cs b/src/RSK.IdentityServer4.AuditEventSink/EventSinkAgregator.cs deleted file mode 100644 index ed35dbd..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/EventSinkAgregator.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using IdentityServer4.Events; -using IdentityServer4.Services; -using Microsoft.Extensions.Logging; - -namespace RSK.IdentityServer4.AuditEventSink -{ - public class EventSinkAggregator : IEventSink - { - private readonly ILogger logger; - public List EventSinks { get; set; } = new List(); - - public EventSinkAggregator(ILogger logger) - { - this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); - } - - public Task PersistAsync(Event evt) - { - var eventSinkTasks = new List(); - - foreach (var eventSink in EventSinks) - { - eventSinkTasks.Add(ProtectedExecution(() => eventSink.PersistAsync(evt))); - } - - return Task.WhenAll(eventSinkTasks); - } - - private async Task ProtectedExecution(Func persistAsync) - { - try - { - await persistAsync(); - } - catch (Exception e) - { - logger.Log(LogLevel.Error, e.Message); - } - } - } -} diff --git a/src/RSK.IdentityServer4.AuditEventSink/IAdapterFactory.cs b/src/RSK.IdentityServer4.AuditEventSink/IAdapterFactory.cs deleted file mode 100644 index 05ff2aa..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/IAdapterFactory.cs +++ /dev/null @@ -1,10 +0,0 @@ -using IdentityServer4.Events; -using RSK.Audit; - -namespace RSK.IdentityServer4.AuditEventSink -{ - public interface IAdapterFactory - { - IAuditEventArguments Create(Event evt); - } -} \ No newline at end of file diff --git a/src/RSK.IdentityServer4.AuditEventSink/RSK.IdentityServer4.AuditEventSink.csproj b/src/RSK.IdentityServer4.AuditEventSink/RSK.IdentityServer4.AuditEventSink.csproj deleted file mode 100644 index b5e3581..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/RSK.IdentityServer4.AuditEventSink.csproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - net8.0;net9.0;net10.0 - Rock Solid Knowledge Ltd - IdentityServer4 event sink to add audit records into AdminUI auditing - https://github.com/RockSolidKnowledge/RSK.IdentityServer4.AuditEventSink - Upgrade to .NET 10 - Copyright 2021 (c) Rock Solid Knowledge Ltd. All rights reserved - Audit AdminUI IdentityServer Events - true - icon.png - Apache-2.0 - 2.0.0 - - - - - - - - - - - - diff --git a/src/RSK.IdentityServer4.AuditEventSink/StringExtention.cs b/src/RSK.IdentityServer4.AuditEventSink/StringExtention.cs deleted file mode 100644 index ff09f81..0000000 --- a/src/RSK.IdentityServer4.AuditEventSink/StringExtention.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace RSK.IdentityServer4.AuditEventSink -{ - public static class StringExtension - { - public static string SafeForFormatted(this string value) - { - return value.Replace("{", "{{").Replace("}", "}}"); - } - } -} diff --git a/src/Rsk.Audit.EF/Rsk.Audit.EF.csproj b/src/Rsk.Audit.EF/Rsk.Audit.EF.csproj index 2ab896f..794bc54 100644 --- a/src/Rsk.Audit.EF/Rsk.Audit.EF.csproj +++ b/src/Rsk.Audit.EF/Rsk.Audit.EF.csproj @@ -1,7 +1,7 @@ - + - net8.0;net9.0;net10.0 + net10.0 RSK.Audit.EF Rock Solid Knowledge Ltd Provides audting API to record audit records and query api to find audit records with EntityFramework Core @@ -14,7 +14,7 @@ icon.png Apache-2.0 RSK.Audit.EF - 3.0.0 + 4.0.0 @@ -22,16 +22,8 @@ 1591 - - - - - - - - - - + + diff --git a/src/Rsk.Audit/Rsk.Audit.csproj b/src/Rsk.Audit/Rsk.Audit.csproj index b7596d2..03645b6 100644 --- a/src/Rsk.Audit/Rsk.Audit.csproj +++ b/src/Rsk.Audit/Rsk.Audit.csproj @@ -1,7 +1,7 @@ - + - net8.0;net9.0;net10.0 + net10.0 RSK.Audit Rock Solid Knowledge Ltd RSK.Audit @@ -15,24 +15,16 @@ icon.png Apache-2.0 RSK.Audit - 3.0.0 + 4.0.0 1591 - - - - - - - - - - + + diff --git a/src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj b/src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj index d0d49b1..e727e6c 100644 --- a/src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj +++ b/src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj @@ -1,7 +1,7 @@  - net8.0;net9.0;net10.0 + net10.0 Rock Solid Knowledge Ltd Duende IdentityServer event sink to add audit records into AdminUI auditing https://github.com/RockSolidKnowledge/RSK.IdentityServer4.AuditEventSink @@ -11,12 +11,14 @@ true icon.png Apache-2.0 - 4.1.0 + 5.0.0 - - + + + + diff --git a/tests/Rsk.Audit.Tests.Common/Rsk.Audit.Tests.Common.csproj b/tests/Rsk.Audit.Tests.Common/Rsk.Audit.Tests.Common.csproj index 7b37d1b..8cf9e68 100644 --- a/tests/Rsk.Audit.Tests.Common/Rsk.Audit.Tests.Common.csproj +++ b/tests/Rsk.Audit.Tests.Common/Rsk.Audit.Tests.Common.csproj @@ -1,7 +1,7 @@ - net8.0;net9.0;net10.0 + net10.0 diff --git a/tests/Rsk.Audit.Tests.Integration/Rsk.Audit.Tests.Integration.csproj b/tests/Rsk.Audit.Tests.Integration/Rsk.Audit.Tests.Integration.csproj index 6ea67ea..7f36c45 100644 --- a/tests/Rsk.Audit.Tests.Integration/Rsk.Audit.Tests.Integration.csproj +++ b/tests/Rsk.Audit.Tests.Integration/Rsk.Audit.Tests.Integration.csproj @@ -1,16 +1,16 @@ - net8.0;net9.0;net10.0 + net10.0 false - + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -21,15 +21,15 @@ - + - + - + diff --git a/tests/Rsk.Audit.Tests/Rsk.Audit.Tests.csproj b/tests/Rsk.Audit.Tests/Rsk.Audit.Tests.csproj index 1d34b74..6ab1849 100644 --- a/tests/Rsk.Audit.Tests/Rsk.Audit.Tests.csproj +++ b/tests/Rsk.Audit.Tests/Rsk.Audit.Tests.csproj @@ -1,29 +1,29 @@  - - net8.0;net9.0;net10.0 - false - + + net10.0 + false + - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + - - - - - + + + + + diff --git a/tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests/AdapterFactoryTests.cs b/tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests/AdapterFactoryTests.cs index 7c9de0d..c94ce5e 100644 --- a/tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests/AdapterFactoryTests.cs +++ b/tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests/AdapterFactoryTests.cs @@ -4,7 +4,7 @@ using Duende.IdentityServer.Models; using Duende.IdentityServer.ResponseHandling; using Duende.IdentityServer.Validation; -using IdentityModel; +using Duende.IdentityModel; using Rsk.DuendeIdentityServer.AuditEventSink.Adapters; using Xunit; diff --git a/tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests.csproj b/tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests.csproj index 52125b9..0fb495a 100644 --- a/tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests.csproj +++ b/tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests.csproj @@ -1,15 +1,18 @@ - net8.0;net9.0;net10.0 + net10.0 false - - - - + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + diff --git a/tests/Rsk.IdentityServer4.AuditEventSink.Tests/AdapterFactoryTests.cs b/tests/Rsk.IdentityServer4.AuditEventSink.Tests/AdapterFactoryTests.cs deleted file mode 100644 index 2210e2a..0000000 --- a/tests/Rsk.IdentityServer4.AuditEventSink.Tests/AdapterFactoryTests.cs +++ /dev/null @@ -1,157 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Security.Claims; -using IdentityModel; -using IdentityServer4.Events; -using IdentityServer4.Models; -using IdentityServer4.ResponseHandling; -using IdentityServer4.Validation; -using RSK.IdentityServer4.AuditEventSink.Adapters; -using Xunit; - -namespace RSK.IdentityServer4.AuditEventSink.Tests -{ - public class AdapterFactoryTests - { - [Fact] - public void Create_WhenTokenIssuedSuccessEvent_WillReturnTokenIssuedSuccessEventAdapter() - { - // Arrange - var authResponse = new AuthorizeResponse() - { - Request = new ValidatedAuthorizeRequest() - { - Client = new Client(), - Subject = new ClaimsPrincipal(new ClaimsIdentity(new List() - { - new Claim(JwtClaimTypes.Subject, string.Empty) - })) - } - }; - - var evt = new TokenIssuedSuccessEvent(authResponse); - - var sut = new AdapterFactory(); - - // Act - var adapter = sut.Create(evt); - - // Assert - Assert.IsType(adapter); - } - - [Fact] - public void Create_WhenConsentGrantedEvent_WillReturnConsentGrantedEventAdapter() - { - // Arrange - var evt = new ConsentGrantedEvent(string.Empty, string.Empty, new List(), new List(), false); - - var sut = new AdapterFactory(); - - // Act - var adapter = sut.Create(evt); - - // Assert - Assert.IsType(adapter); - } - - [Fact] - public void Create_WhenUserLoginFailureEvent_WillReturnUserLoginFailureAdapter() - { - // Arrange - var evt = new UserLoginFailureEvent(string.Empty, string.Empty); - - var sut = new AdapterFactory(); - - // Act - var adapter = sut.Create(evt); - - // Assert - Assert.IsType(adapter); - } - - [Fact] - public void Create_WhenUserLoginSuccessEvent_WillReturnUserLoginSuccessAdapter() - { - // Arrange - var evt = new UserLoginSuccessEvent(string.Empty, string.Empty, string.Empty, string.Empty); - - var sut = new AdapterFactory(); - - // Act - var adapter = sut.Create(evt); - - // Assert - Assert.IsType(adapter); - } - - [Fact] - public void Create_WhenUserLogoutSuccessEvent_WillReturnUserLogoutSuccessAdapter() - { - // Arrange - var evt = new UserLogoutSuccessEvent(string.Empty, string.Empty); - - var sut = new AdapterFactory(); - - // Act - var adapter = sut.Create(evt); - - // Assert - Assert.IsType(adapter); - } - - [Fact] - public void Create_WhenConsentDeniedEvent_WillReturnConsentDeniedAdapter() - { - // Arrange - var evt = new ConsentDeniedEvent(string.Empty, string.Empty, new string[] { }); - - var sut = new AdapterFactory(); - - // Act - var adapter = sut.Create(evt); - - // Assert - Assert.IsType(adapter); - } - - [Fact] - public void Create_WhenTokenIssuedFailureEvent_WillReturnTokenIssuedFailureAdapter() - { - // Arrange - var request = new ValidatedAuthorizeRequest() - { - Client = new Client(), - Subject = new ClaimsPrincipal(new ClaimsIdentity(new List() - { - new Claim(JwtClaimTypes.Subject, string.Empty) - })) - }; - - var evt = new TokenIssuedFailureEvent(request, string.Empty, string.Empty); - - var sut = new AdapterFactory(); - - // Act - var adapter = sut.Create(evt); - - // Assert - Assert.IsType(adapter); - } - - [Fact] - public void Create_WhenGrantsRevokedEvent_WillReturnGrantsRevokedAdapter() - { - // Arrange - var evt = new GrantsRevokedEvent(string.Empty, string.Empty); - - var sut = new AdapterFactory(); - - // Act - var adapter = sut.Create(evt); - - // Assert - Assert.IsType(adapter); - } - } -} diff --git a/tests/Rsk.IdentityServer4.AuditEventSink.Tests/AuditSinkTests.cs b/tests/Rsk.IdentityServer4.AuditEventSink.Tests/AuditSinkTests.cs deleted file mode 100644 index 71ea8ce..0000000 --- a/tests/Rsk.IdentityServer4.AuditEventSink.Tests/AuditSinkTests.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System.Threading.Tasks; -using IdentityServer4.Events; -using Moq; -using RSK.Audit; -using Xunit; - -namespace RSK.IdentityServer4.AuditEventSink.Tests -{ - public class AuditSinkTests - { - [Fact] - public async Task PersistAsync_WhenSuccessEvent_WillCallSuccessAuditRecord() - { - // Arrange - var recorder = new Mock(); - var factory = new Mock(); - factory.Setup(x => x.Create(It.IsAny())).Returns(new Mock().Object); - - var sut = new AuditSink(recorder.Object) {Factory = factory.Object}; - - - var successfulEvent = new StubEvent(string.Empty, string.Empty, EventTypes.Success, -1); - - // Act - await sut.PersistAsync(successfulEvent); - - // Assert - recorder.Verify(x => x.RecordSuccess(It.IsAny()), Times.Once); - } - - [Fact] - public async Task PersistAsync_WhenInformationEvent_WillCallSuccessAuditRecord() - { - // Arrange - var recorder = new Mock(); - var factory = new Mock(); - factory.Setup(x => x.Create(It.IsAny())).Returns(new Mock().Object); - - var sut = new AuditSink(recorder.Object) { Factory = factory.Object }; - - - var successfulEvent = new StubEvent(string.Empty, string.Empty, EventTypes.Information, -1); - - // Act - await sut.PersistAsync(successfulEvent); - - // Assert - recorder.Verify(x => x.RecordSuccess(It.IsAny()), Times.Once); - } - - [Fact] - public async Task PersistAsync_WhenErrorEvent_WillCallFailureAuditRecord() - { - // Arrange - var recorder = new Mock(); - var factory = new Mock(); - factory.Setup(x => x.Create(It.IsAny())).Returns(new Mock().Object); - - var sut = new AuditSink(recorder.Object) { Factory = factory.Object }; - - - var successfulEvent = new StubEvent(string.Empty, string.Empty, EventTypes.Error, -1); - - // Act - await sut.PersistAsync(successfulEvent); - - // Assert - recorder.Verify(x => x.RecordFailure(It.IsAny()), Times.Once); - } - - [Fact] - public async Task PersistAsync_WhenFailureEvent_WillCallFailureAuditRecord() - { - // Arrange - var recorder = new Mock(); - var factory = new Mock(); - factory.Setup(x => x.Create(It.IsAny())).Returns(new Mock().Object); - - var sut = new AuditSink(recorder.Object) { Factory = factory.Object }; - - - var successfulEvent = new StubEvent(string.Empty, string.Empty, EventTypes.Failure, -1); - - // Act - await sut.PersistAsync(successfulEvent); - - // Assert - recorder.Verify(x => x.RecordFailure(It.IsAny()), Times.Once); - } - - private class StubEvent : Event - { - public StubEvent(string category, string name, EventTypes type, int id, string message = null) : base(category, name, type, id, message) - { - } - } - } -} diff --git a/tests/Rsk.IdentityServer4.AuditEventSink.Tests/EventSinkAggregatorTests.cs b/tests/Rsk.IdentityServer4.AuditEventSink.Tests/EventSinkAggregatorTests.cs deleted file mode 100644 index 2b071d1..0000000 --- a/tests/Rsk.IdentityServer4.AuditEventSink.Tests/EventSinkAggregatorTests.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Threading.Tasks; -using IdentityServer4.Events; -using IdentityServer4.Services; -using Microsoft.Extensions.Logging; -using Moq; -using Xunit; - -namespace RSK.IdentityServer4.AuditEventSink.Tests -{ - public class EventSinkAggregatorTests - { - [Fact] - public async Task PersistAsync_WhenCalledWithMultiEventSinks_WillRaiseWithAll() - { - // Arrange - var sink1 = new StubSink(); - var sink2 = new StubSink(); - - var sut = new EventSinkAggregator(new Mock().Object); - - sut.EventSinks.Add(sink1); - sut.EventSinks.Add(sink2); - - // Act - await sut.PersistAsync(new StubEvent()); - - // Assert - Assert.Equal(1, sink1.WasCalled); - Assert.Equal(1, sink2.WasCalled); - } - - [Fact] - public async Task PersistAsync_WhenCalledWithMultiEventSinksAndOneThrowsAnException_WillRaiseToAllEventSinks() - { - // Arrange - var sink1 = new StubSink(); - var sink2 = new StubSink(); - var sink3 = new StubSinkThrowsException(); - - var logger = new StubLogger(); - - var sut = new EventSinkAggregator(logger); - - sut.EventSinks.Add(sink1); - sut.EventSinks.Add(sink2); - sut.EventSinks.Add(sink3); - - // Act - await sut.PersistAsync(new StubEvent()); - - // Assert - Assert.Equal(1, sink1.WasCalled); - Assert.Equal(1, sink2.WasCalled); - Assert.Equal(1, sink3.WasCalled); - Assert.Equal(1, logger.TimesErrored); - } - - private class StubSink : IEventSink - { - public int WasCalled { get; private set; } - - public Task PersistAsync(Event evt) - { - WasCalled++; - return Task.CompletedTask; - } - } - - private class StubSinkThrowsException : IEventSink - { - public int WasCalled { get; private set; } - - public Task PersistAsync(Event evt) - { - WasCalled++; - throw new Exception("Blah"); - } - } - - private class StubEvent : Event - { - public StubEvent() : base(string.Empty, string.Empty, EventTypes.Failure, 0) - { - } - } - - private class StubLogger : ILogger - { - public int TimesErrored = 0; - - public IDisposable BeginScope(TState state) - { - throw new NotImplementedException(); - } - - public bool IsEnabled(LogLevel logLevel) => true; - - public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter) - { - if (logLevel == LogLevel.Error) TimesErrored++; - } - } - } -} diff --git a/tests/Rsk.IdentityServer4.AuditEventSink.Tests/RSK.IdentityServer4.AuditEventSink.Tests.csproj b/tests/Rsk.IdentityServer4.AuditEventSink.Tests/RSK.IdentityServer4.AuditEventSink.Tests.csproj deleted file mode 100644 index 8f504d1..0000000 --- a/tests/Rsk.IdentityServer4.AuditEventSink.Tests/RSK.IdentityServer4.AuditEventSink.Tests.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - net8.0;net9.0;net10.0 - false - - - - - - - - - - - - - - From f29dd4afb34d3858497c330579f9559e93228fd5 Mon Sep 17 00:00:00 2001 From: Joe Harvey Date: Mon, 8 Jun 2026 10:15:28 +0100 Subject: [PATCH 02/10] remove .net 8 & 9 from azure-pipelines.yml --- azure-pipelines.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 79af95e..5d9aefd 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -39,18 +39,6 @@ stages: script: | mkdir LocalNuget workingDirectory: $(Build.SourcesDirectory) - - task: UseDotNet@2 - displayName: Install .NET Core sdk version 8.x - inputs: - packageType: sdk - version: 8.x - installationPath: $(Agent.ToolsDirectory)/dotnet - - task: UseDotNet@2 - displayName: Install .NET Core sdk version 9.x - inputs: - packageType: sdk - version: 9.x - installationPath: $(Agent.ToolsDirectory)/dotnet - task: UseDotNet@2 displayName: Install .NET Core sdk version 10.x inputs: From 7a6bc3c86e06521dc81b4cf67da6301f51628dbd Mon Sep 17 00:00:00 2001 From: Joe Harvey Date: Mon, 8 Jun 2026 10:36:01 +0100 Subject: [PATCH 03/10] cleanup project urls --- src/Rsk.Audit.EF/Rsk.Audit.EF.csproj | 7 +++---- src/Rsk.Audit/Rsk.Audit.csproj | 5 ++--- .../Rsk.DuendeIdentityServer.AuditEventSink.csproj | 3 +-- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/Rsk.Audit.EF/Rsk.Audit.EF.csproj b/src/Rsk.Audit.EF/Rsk.Audit.EF.csproj index 794bc54..530aa85 100644 --- a/src/Rsk.Audit.EF/Rsk.Audit.EF.csproj +++ b/src/Rsk.Audit.EF/Rsk.Audit.EF.csproj @@ -1,13 +1,12 @@ - net10.0 + net10.0 RSK.Audit.EF Rock Solid Knowledge Ltd Provides audting API to record audit records and query api to find audit records with EntityFramework Core - https://www.identityserver.com/products/adminui - https://www.identityserver.com/downloads/adminui - Copyright 2022 (c) Rock Solid Knowledge Ltd. All rights reserved. + https://github.com/RockSolidKnowledge/Audit + Copyright 2026 (c) Rock Solid Knowledge Ltd. All rights reserved. Audit AdminUI IdentityServer EntityFramework true true diff --git a/src/Rsk.Audit/Rsk.Audit.csproj b/src/Rsk.Audit/Rsk.Audit.csproj index 03645b6..14a8612 100644 --- a/src/Rsk.Audit/Rsk.Audit.csproj +++ b/src/Rsk.Audit/Rsk.Audit.csproj @@ -6,9 +6,8 @@ Rock Solid Knowledge Ltd RSK.Audit Provides audting API to record audit records and query api to find audit records - https://www.identityserver.com/products/adminui - https://www.identityserver.com/downloads/adminui - Copyright 2022 (c) Rock Solid Knowledge Ltd. All rights reserved. + https://github.com/RockSolidKnowledge/Audit + Copyright 2026 (c) Rock Solid Knowledge Ltd. All rights reserved. Audit AdminUI IdentityServer true true diff --git a/src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj b/src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj index e727e6c..8924bd9 100644 --- a/src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj +++ b/src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj @@ -4,8 +4,7 @@ net10.0 Rock Solid Knowledge Ltd Duende IdentityServer event sink to add audit records into AdminUI auditing - https://github.com/RockSolidKnowledge/RSK.IdentityServer4.AuditEventSink - Add event extensibility + https://github.com/RockSolidKnowledge/Audit Copyright 2026 (c) Rock Solid Knowledge Ltd. All rights reserved Audit AdminUI IdentityServer Events true From 9e3ad33c5077162e7596d7d23074cf7296c2ea50 Mon Sep 17 00:00:00 2001 From: Joe Harvey Date: Mon, 8 Jun 2026 10:40:50 +0100 Subject: [PATCH 04/10] remove identityserver4 build --- azure-pipelines.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 5d9aefd..4226d94 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -73,12 +73,6 @@ stages: command: 'build' projects: '**/Rsk.DuendeIdentityServer.AuditEventSink.csproj' arguments: -c $(buildConfiguration) --no-restore /p:Version="$(identityPackageVersion)" - - task: DotNetCoreCLI@2 - displayName: dotnet build **/RSK.IdentityServer4.AuditEventSink.csproj - inputs: - command: 'build' - projects: '**/RSK.IdentityServer4.AuditEventSink.csproj' - arguments: -c $(buildConfiguration) --no-restore" - task: DotNetCoreCLI@2 displayName: dotnet test - Run All Tests inputs: From d5c9137fe1d94436d99d6c3b8b67d466b786f043 Mon Sep 17 00:00:00 2001 From: Joe Harvey Date: Mon, 8 Jun 2026 14:23:22 +0100 Subject: [PATCH 05/10] split up pipeline files, added publish to nuget --- azure-pipelines.duende-identity-server.yml | 98 ++++++++++++++++++++++ azure-pipelines.rsk-audit-ef.yml | 98 ++++++++++++++++++++++ azure-pipelines.rsk-audit.yml | 98 ++++++++++++++++++++++ azure-pipelines.yml | 73 ++-------------- templates/publish-nuget.yml | 34 ++++++++ 5 files changed, 335 insertions(+), 66 deletions(-) create mode 100644 azure-pipelines.duende-identity-server.yml create mode 100644 azure-pipelines.rsk-audit-ef.yml create mode 100644 azure-pipelines.rsk-audit.yml create mode 100644 templates/publish-nuget.yml diff --git a/azure-pipelines.duende-identity-server.yml b/azure-pipelines.duende-identity-server.yml new file mode 100644 index 0000000..1e3ff6f --- /dev/null +++ b/azure-pipelines.duende-identity-server.yml @@ -0,0 +1,98 @@ +variables: +- name: buildConfiguration + value: 'Release' +- name: identityPackageVersion + value: '5.0.0.0' + +stages: +- stage: Build + jobs: + - job: BuildDuendeIdentityServer + strategy: + matrix: + linux: + imageName: 'ubuntu-latest' + shouldPack: true + mac: + imageName: 'macOS-latest' + shouldPack: true + windows: + imageName: 'windows-latest' + shouldPack: true + pool: + vmImage: $(imageName) + steps: + - task: Bash@3 + displayName: Create LocalNuget folder + inputs: + targetType: inline + script: | + mkdir LocalNuget + workingDirectory: $(Build.SourcesDirectory) + - task: UseDotNet@2 + displayName: Install .NET Core sdk version 10.x + inputs: + packageType: sdk + version: 10.x + installationPath: $(Agent.ToolsDirectory)/dotnet + - task: NuGetToolInstaller@0 + inputs: + versionSpec: 5.4.0 + - task: DotNetCoreCLI@2 + displayName: 'Dotnet restore' + inputs: + command: 'restore' + projects: 'src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj' + feedsToUse: 'config' + nugetConfigPath: $(System.DefaultWorkingDirectory)/NuGet.AzDO.config + - task: DotNetCoreCLI@2 + displayName: dotnet build src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj + inputs: + command: 'build' + projects: 'src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj' + arguments: -c $(buildConfiguration) --no-restore /p:Version="$(identityPackageVersion)" + - task: DotNetCoreCLI@2 + displayName: dotnet test - Run Duende IdentityServer Tests + inputs: + command: 'test' + projects: 'tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests/Rsk.DuendeIdentityServer.AuditEventSink.Tests.csproj' + arguments: -c $(buildConfiguration) --no-restore + - task: DotNetCoreCLI@2 + displayName: Package Rsk.DuendeIdentityServer.AuditEventSink.csproj for Nuget + inputs: + command: 'pack' + packagesToPack: 'src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj' + nobuild: true + includesymbols: true + versionEnvVar: identityPackageVersion + versioningScheme: 'byEnvVar' + verbosityPack: 'Normal' + outputDir: LocalNuget + - task: CopyFiles@2 + condition: and(succeeded(), eq(variables['shouldPack'], true)) + displayName: 'Copy nupkg to artifact directory' + inputs: + Contents: 'LocalNuget/*.nupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)' + CleanTargetFolder: true + flattenFolders: true + - task: PublishBuildArtifacts@1 + condition: and(succeeded(), eq(variables['shouldPack'], true)) + displayName: Publish Duende IdentityServer artifacts + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)' + ArtifactName: 'Rsk.DuendeIdentityServer.AuditEventSink nupkg' + publishLocation: 'Container' + +- stage: Publish + dependsOn: Build + condition: succeeded() + jobs: + - job: PublishNuGet + pool: + vmImage: 'ubuntu-latest' + steps: + - template: templates/publish-nuget.yml + parameters: + artifact: 'Rsk.DuendeIdentityServer.AuditEventSink nupkg' + packageToPublish: '$(Pipeline.Workspace)/Rsk.DuendeIdentityServer.AuditEventSink nupkg/*.nupkg' diff --git a/azure-pipelines.rsk-audit-ef.yml b/azure-pipelines.rsk-audit-ef.yml new file mode 100644 index 0000000..1b10c9c --- /dev/null +++ b/azure-pipelines.rsk-audit-ef.yml @@ -0,0 +1,98 @@ +variables: +- name: buildConfiguration + value: 'Release' +- name: efPackageVersion + value: '4.0.0.0' + +stages: +- stage: Build + jobs: + - job: BuildRskAuditEF + strategy: + matrix: + linux: + imageName: 'ubuntu-latest' + shouldPack: true + mac: + imageName: 'macOS-latest' + shouldPack: true + windows: + imageName: 'windows-latest' + shouldPack: true + pool: + vmImage: $(imageName) + steps: + - task: Bash@3 + displayName: Create LocalNuget folder + inputs: + targetType: inline + script: | + mkdir LocalNuget + workingDirectory: $(Build.SourcesDirectory) + - task: UseDotNet@2 + displayName: Install .NET Core sdk version 10.x + inputs: + packageType: sdk + version: 10.x + installationPath: $(Agent.ToolsDirectory)/dotnet + - task: NuGetToolInstaller@0 + inputs: + versionSpec: 5.4.0 + - task: DotNetCoreCLI@2 + displayName: 'Dotnet restore' + inputs: + command: 'restore' + projects: 'src/Rsk.Audit.EF/Rsk.Audit.EF.csproj' + feedsToUse: 'config' + nugetConfigPath: $(System.DefaultWorkingDirectory)/NuGet.AzDO.config + - task: DotNetCoreCLI@2 + displayName: dotnet build src/Rsk.Audit.EF/Rsk.Audit.EF.csproj + inputs: + command: 'build' + projects: 'src/Rsk.Audit.EF/Rsk.Audit.EF.csproj' + arguments: -c $(buildConfiguration) --no-restore /p:Version="$(efPackageVersion)" + - task: DotNetCoreCLI@2 + displayName: dotnet test - Run Rsk.Audit.EF Tests + inputs: + command: 'test' + projects: 'tests/Rsk.Audit.Tests.Integration/Rsk.Audit.Tests.Integration.csproj' + arguments: -c $(buildConfiguration) --no-restore + - task: DotNetCoreCLI@2 + displayName: Package Rsk.Audit.EF.csproj for Nuget + inputs: + command: 'pack' + packagesToPack: 'src/Rsk.Audit.EF/Rsk.Audit.EF.csproj' + nobuild: true + includesymbols: true + versionEnvVar: efPackageVersion + versioningScheme: 'byEnvVar' + verbosityPack: 'Normal' + outputDir: LocalNuget + - task: CopyFiles@2 + condition: and(succeeded(), eq(variables['shouldPack'], true)) + displayName: 'Copy nupkg to artifact directory' + inputs: + Contents: 'LocalNuget/*.nupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)' + CleanTargetFolder: true + flattenFolders: true + - task: PublishBuildArtifacts@1 + condition: and(succeeded(), eq(variables['shouldPack'], true)) + displayName: Publish Rsk.Audit.EF artifacts + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)' + ArtifactName: 'Rsk.Audit.EF nupkg' + publishLocation: 'Container' + +- stage: Publish + dependsOn: Build + condition: succeeded() + jobs: + - job: PublishNuGet + pool: + vmImage: 'ubuntu-latest' + steps: + - template: templates/publish-nuget.yml + parameters: + artifact: 'Rsk.Audit.EF nupkg' + packageToPublish: '$(Pipeline.Workspace)/Rsk.Audit.EF nupkg/*.nupkg' diff --git a/azure-pipelines.rsk-audit.yml b/azure-pipelines.rsk-audit.yml new file mode 100644 index 0000000..5001073 --- /dev/null +++ b/azure-pipelines.rsk-audit.yml @@ -0,0 +1,98 @@ +variables: +- name: buildConfiguration + value: 'Release' +- name: packageVersion + value: '4.0.0.0' + +stages: +- stage: Build + jobs: + - job: BuildRskAudit + strategy: + matrix: + linux: + imageName: 'ubuntu-latest' + shouldPack: true + mac: + imageName: 'macOS-latest' + shouldPack: true + windows: + imageName: 'windows-latest' + shouldPack: true + pool: + vmImage: $(imageName) + steps: + - task: Bash@3 + displayName: Create LocalNuget folder + inputs: + targetType: inline + script: | + mkdir LocalNuget + workingDirectory: $(Build.SourcesDirectory) + - task: UseDotNet@2 + displayName: Install .NET Core sdk version 10.x + inputs: + packageType: sdk + version: 10.x + installationPath: $(Agent.ToolsDirectory)/dotnet + - task: NuGetToolInstaller@0 + inputs: + versionSpec: 5.4.0 + - task: DotNetCoreCLI@2 + displayName: 'Dotnet restore' + inputs: + command: 'restore' + projects: 'src/Rsk.Audit/Rsk.Audit.csproj' + feedsToUse: 'config' + nugetConfigPath: $(System.DefaultWorkingDirectory)/NuGet.AzDO.config + - task: DotNetCoreCLI@2 + displayName: dotnet build src/Rsk.Audit/Rsk.Audit.csproj + inputs: + command: 'build' + projects: 'src/Rsk.Audit/Rsk.Audit.csproj' + arguments: -c $(buildConfiguration) --no-restore /p:Version="$(packageVersion)" + - task: DotNetCoreCLI@2 + displayName: dotnet test - Run Rsk.Audit Tests + inputs: + command: 'test' + projects: 'tests/Rsk.Audit.Tests/Rsk.Audit.Tests.csproj' + arguments: -c $(buildConfiguration) --no-restore + - task: DotNetCoreCLI@2 + displayName: Package Rsk.Audit.csproj for Nuget + inputs: + command: 'pack' + packagesToPack: 'src/Rsk.Audit/Rsk.Audit.csproj' + nobuild: true + includesymbols: true + versionEnvVar: packageVersion + versioningScheme: 'byEnvVar' + verbosityPack: 'Normal' + outputDir: LocalNuget + - task: CopyFiles@2 + condition: and(succeeded(), eq(variables['shouldPack'], true)) + displayName: 'Copy nupkg to artifact directory' + inputs: + Contents: 'LocalNuget/*.nupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)' + CleanTargetFolder: true + flattenFolders: true + - task: PublishBuildArtifacts@1 + condition: and(succeeded(), eq(variables['shouldPack'], true)) + displayName: Publish Rsk.Audit artifacts + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)' + ArtifactName: 'Rsk.Audit nupkg' + publishLocation: 'Container' + +- stage: Publish + dependsOn: Build + condition: succeeded() + jobs: + - job: PublishNuGet + pool: + vmImage: 'ubuntu-latest' + steps: + - template: templates/publish-nuget.yml + parameters: + artifact: 'Rsk.Audit nupkg' + packageToPublish: '$(Pipeline.Workspace)/Rsk.Audit nupkg/*.nupkg' diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 4226d94..f8c4dee 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -12,33 +12,22 @@ variables: value: '4.0.0.0' - name: identityPackageVersion value: '5.0.0.0' -- name: RunSqlServerTest - value: 'true' + stages: -- stage: __default +- stage: Build jobs: - - job: '' + - job: BuildAllProjects strategy: matrix: linux: imageName: 'ubuntu-latest' - shouldPack: true mac: imageName: 'macOS-latest' - shouldPack: true windows: imageName: 'windows-latest' - shouldPack: true pool: vmImage: $(imageName) steps: - - task: Bash@3 - displayName: Create LocalNuget folder - inputs: - targetType: inline - script: | - mkdir LocalNuget - workingDirectory: $(Build.SourcesDirectory) - task: UseDotNet@2 displayName: Install .NET Core sdk version 10.x inputs: @@ -56,19 +45,19 @@ stages: feedsToUse: 'config' nugetConfigPath: $(System.DefaultWorkingDirectory)/NuGet.AzDO.config - task: DotNetCoreCLI@2 - displayName: dotnet build **/Rsk.Audit.csproj + displayName: dotnet build Rsk.Audit.csproj inputs: command: 'build' projects: '**/Rsk.Audit.csproj' arguments: -c $(buildConfiguration) --no-restore /p:Version="$(packageVersion)" - task: DotNetCoreCLI@2 - displayName: dotnet build **/Rsk.Audit.EF.csproj + displayName: dotnet build Rsk.Audit.EF.csproj inputs: command: 'build' projects: '**/Rsk.Audit.EF.csproj' arguments: -c $(buildConfiguration) --no-restore /p:Version="$(efPackageVersion)" - task: DotNetCoreCLI@2 - displayName: dotnet build **/Rsk.DuendeIdentityServer.AuditEventSink.csproj + displayName: dotnet build Rsk.DuendeIdentityServer.AuditEventSink.csproj inputs: command: 'build' projects: '**/Rsk.DuendeIdentityServer.AuditEventSink.csproj' @@ -78,52 +67,4 @@ stages: inputs: command: 'test' projects: '**/*Tests*.csproj' - arguments: -c $(buildConfiguration) --no-restore" - - task: DotNetCoreCLI@2 - displayName: Package **/Rsk.Audit.csproj for Nuget - inputs: - command: 'pack' - packagesToPack: '**/Rsk.Audit.csproj' - nobuild: true - includesymbols: true - versionEnvVar: packageVersion - versioningScheme: 'byEnvVar' - verbosityPack: 'Normal' - outputDir: LocalNuget - - task: DotNetCoreCLI@2 - displayName: Package **/Rsk.Audit.EF.csproj for Nuget - inputs: - command: 'pack' - packagesToPack: '**/Rsk.Audit.EF.csproj' - nobuild: true - includesymbols: true - versionEnvVar: efPackageVersion - versioningScheme: 'byEnvVar' - verbosityPack: 'Normal' - outputDir: LocalNuget - - task: DotNetCoreCLI@2 - displayName: Package **/Rsk.DuendeIdentityServer.AuditEventSink.csproj for Nuget - inputs: - command: 'pack' - packagesToPack: '**/Rsk.DuendeIdentityServer.AuditEventSink.csproj' - nobuild: true - includesymbols: true - versionEnvVar: identityPackageVersion - versioningScheme: 'byEnvVar' - verbosityPack: 'Normal' - outputDir: LocalNuget - - task: CopyFiles@2 - condition: and(succeeded(), eq(variables['shouldPack'], true)) - displayName: 'Copy nupkg to artifact directory' - inputs: - Contents: 'LocalNuget/*.nupkg' - TargetFolder: '$(Build.ArtifactStagingDirectory)' - CleanTargetFolder: true - flattenFolders: true - - task: PublishBuildArtifacts@1 - condition: and(succeeded(), eq(variables['shouldPack'], true)) - displayName: Publish Audit artifacts - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)' - ArtifactName: Audit nupkg - publishLocation: 'Container' \ No newline at end of file + arguments: -c $(buildConfiguration) --no-restore \ No newline at end of file diff --git a/templates/publish-nuget.yml b/templates/publish-nuget.yml new file mode 100644 index 0000000..7407bf2 --- /dev/null +++ b/templates/publish-nuget.yml @@ -0,0 +1,34 @@ +parameters: + - name: toLive + type: boolean + default: false + - name: artifact + type: string + default: 'Nupkg' + - name: packageToPublish + type: string + +steps: + - task: UseDotNet@2 + inputs: + packageType: 'sdk' + version: '10.0.x' + + - download: current + displayName: 'Download NuGet Artifact' + artifact: '${{ parameters.artifact }}' + + - ${{ if eq(parameters.toLive, true) }}: + - bash: | + dotnet nuget push ${{ parameters.packageToPublish }} --source https://api.nuget.org/v3/index.json --api-key $(NuGetPackagePushKey) + displayName: 'Publish Release Nuget Package' + + - ${{ if eq(parameters.toLive, false) }}: + - task: DotNetCoreCLI@2 + displayName: 'Publish NuGet to RSKTools' + inputs: + command: 'push' + arguments: '--skip-duplicate' + packagesToPush: '${{ parameters.packageToPublish }}' + nuGetFeedType: 'internal' + publishVstsFeed: '75d50f4c-8a7b-4618-b9de-bae4820efa8f' \ No newline at end of file From c82411f8ca2a9f8b86181ee30a018bf62312d7d8 Mon Sep 17 00:00:00 2001 From: Joe Harvey Date: Mon, 8 Jun 2026 14:31:41 +0100 Subject: [PATCH 06/10] remove localnuget folder path --- azure-pipelines.duende-identity-server.yml | 17 +---------------- azure-pipelines.rsk-audit-ef.yml | 17 +---------------- azure-pipelines.rsk-audit.yml | 17 +---------------- 3 files changed, 3 insertions(+), 48 deletions(-) diff --git a/azure-pipelines.duende-identity-server.yml b/azure-pipelines.duende-identity-server.yml index 1e3ff6f..c48df68 100644 --- a/azure-pipelines.duende-identity-server.yml +++ b/azure-pipelines.duende-identity-server.yml @@ -22,13 +22,6 @@ stages: pool: vmImage: $(imageName) steps: - - task: Bash@3 - displayName: Create LocalNuget folder - inputs: - targetType: inline - script: | - mkdir LocalNuget - workingDirectory: $(Build.SourcesDirectory) - task: UseDotNet@2 displayName: Install .NET Core sdk version 10.x inputs: @@ -67,15 +60,7 @@ stages: versionEnvVar: identityPackageVersion versioningScheme: 'byEnvVar' verbosityPack: 'Normal' - outputDir: LocalNuget - - task: CopyFiles@2 - condition: and(succeeded(), eq(variables['shouldPack'], true)) - displayName: 'Copy nupkg to artifact directory' - inputs: - Contents: 'LocalNuget/*.nupkg' - TargetFolder: '$(Build.ArtifactStagingDirectory)' - CleanTargetFolder: true - flattenFolders: true + outputDir: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 condition: and(succeeded(), eq(variables['shouldPack'], true)) displayName: Publish Duende IdentityServer artifacts diff --git a/azure-pipelines.rsk-audit-ef.yml b/azure-pipelines.rsk-audit-ef.yml index 1b10c9c..c2cd2bd 100644 --- a/azure-pipelines.rsk-audit-ef.yml +++ b/azure-pipelines.rsk-audit-ef.yml @@ -22,13 +22,6 @@ stages: pool: vmImage: $(imageName) steps: - - task: Bash@3 - displayName: Create LocalNuget folder - inputs: - targetType: inline - script: | - mkdir LocalNuget - workingDirectory: $(Build.SourcesDirectory) - task: UseDotNet@2 displayName: Install .NET Core sdk version 10.x inputs: @@ -67,15 +60,7 @@ stages: versionEnvVar: efPackageVersion versioningScheme: 'byEnvVar' verbosityPack: 'Normal' - outputDir: LocalNuget - - task: CopyFiles@2 - condition: and(succeeded(), eq(variables['shouldPack'], true)) - displayName: 'Copy nupkg to artifact directory' - inputs: - Contents: 'LocalNuget/*.nupkg' - TargetFolder: '$(Build.ArtifactStagingDirectory)' - CleanTargetFolder: true - flattenFolders: true + outputDir: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 condition: and(succeeded(), eq(variables['shouldPack'], true)) displayName: Publish Rsk.Audit.EF artifacts diff --git a/azure-pipelines.rsk-audit.yml b/azure-pipelines.rsk-audit.yml index 5001073..ee61ab5 100644 --- a/azure-pipelines.rsk-audit.yml +++ b/azure-pipelines.rsk-audit.yml @@ -22,13 +22,6 @@ stages: pool: vmImage: $(imageName) steps: - - task: Bash@3 - displayName: Create LocalNuget folder - inputs: - targetType: inline - script: | - mkdir LocalNuget - workingDirectory: $(Build.SourcesDirectory) - task: UseDotNet@2 displayName: Install .NET Core sdk version 10.x inputs: @@ -67,15 +60,7 @@ stages: versionEnvVar: packageVersion versioningScheme: 'byEnvVar' verbosityPack: 'Normal' - outputDir: LocalNuget - - task: CopyFiles@2 - condition: and(succeeded(), eq(variables['shouldPack'], true)) - displayName: 'Copy nupkg to artifact directory' - inputs: - Contents: 'LocalNuget/*.nupkg' - TargetFolder: '$(Build.ArtifactStagingDirectory)' - CleanTargetFolder: true - flattenFolders: true + outputDir: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 condition: and(succeeded(), eq(variables['shouldPack'], true)) displayName: Publish Rsk.Audit artifacts From b8d0dbc17cc08aa998d01c5cd187be3593e91f27 Mon Sep 17 00:00:00 2001 From: Joe Harvey Date: Tue, 9 Jun 2026 14:11:28 +0100 Subject: [PATCH 07/10] remove nuget config --- NuGet.AzDO.config | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 NuGet.AzDO.config diff --git a/NuGet.AzDO.config b/NuGet.AzDO.config deleted file mode 100644 index c9581ab..0000000 --- a/NuGet.AzDO.config +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file From 3e61ba69a87d8c8b5aa8de37e170da5c45f2ee64 Mon Sep 17 00:00:00 2001 From: Joe Harvey Date: Tue, 9 Jun 2026 14:15:41 +0100 Subject: [PATCH 08/10] remove ref to nuget.config --- azure-pipelines.duende-identity-server.yml | 1 - azure-pipelines.rsk-audit-ef.yml | 1 - azure-pipelines.rsk-audit.yml | 1 - azure-pipelines.yml | 1 - 4 files changed, 4 deletions(-) diff --git a/azure-pipelines.duende-identity-server.yml b/azure-pipelines.duende-identity-server.yml index c48df68..d117ac4 100644 --- a/azure-pipelines.duende-identity-server.yml +++ b/azure-pipelines.duende-identity-server.yml @@ -37,7 +37,6 @@ stages: command: 'restore' projects: 'src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj' feedsToUse: 'config' - nugetConfigPath: $(System.DefaultWorkingDirectory)/NuGet.AzDO.config - task: DotNetCoreCLI@2 displayName: dotnet build src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj inputs: diff --git a/azure-pipelines.rsk-audit-ef.yml b/azure-pipelines.rsk-audit-ef.yml index c2cd2bd..418759f 100644 --- a/azure-pipelines.rsk-audit-ef.yml +++ b/azure-pipelines.rsk-audit-ef.yml @@ -37,7 +37,6 @@ stages: command: 'restore' projects: 'src/Rsk.Audit.EF/Rsk.Audit.EF.csproj' feedsToUse: 'config' - nugetConfigPath: $(System.DefaultWorkingDirectory)/NuGet.AzDO.config - task: DotNetCoreCLI@2 displayName: dotnet build src/Rsk.Audit.EF/Rsk.Audit.EF.csproj inputs: diff --git a/azure-pipelines.rsk-audit.yml b/azure-pipelines.rsk-audit.yml index ee61ab5..043cabc 100644 --- a/azure-pipelines.rsk-audit.yml +++ b/azure-pipelines.rsk-audit.yml @@ -37,7 +37,6 @@ stages: command: 'restore' projects: 'src/Rsk.Audit/Rsk.Audit.csproj' feedsToUse: 'config' - nugetConfigPath: $(System.DefaultWorkingDirectory)/NuGet.AzDO.config - task: DotNetCoreCLI@2 displayName: dotnet build src/Rsk.Audit/Rsk.Audit.csproj inputs: diff --git a/azure-pipelines.yml b/azure-pipelines.yml index f8c4dee..f8f4f62 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -43,7 +43,6 @@ stages: command: 'restore' projects: '**/*.csproj' feedsToUse: 'config' - nugetConfigPath: $(System.DefaultWorkingDirectory)/NuGet.AzDO.config - task: DotNetCoreCLI@2 displayName: dotnet build Rsk.Audit.csproj inputs: From a133474872f41876ad5fd465acd28e9f7a2a27de Mon Sep 17 00:00:00 2001 From: Joe Harvey Date: Tue, 9 Jun 2026 14:50:00 +0100 Subject: [PATCH 09/10] readd nuget.azdo.config --- NuGet.AzDO.config | 6 ++++++ azure-pipelines.yml | 1 + 2 files changed, 7 insertions(+) create mode 100644 NuGet.AzDO.config diff --git a/NuGet.AzDO.config b/NuGet.AzDO.config new file mode 100644 index 0000000..95e879e --- /dev/null +++ b/NuGet.AzDO.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/azure-pipelines.yml b/azure-pipelines.yml index f8f4f62..f8c4dee 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -43,6 +43,7 @@ stages: command: 'restore' projects: '**/*.csproj' feedsToUse: 'config' + nugetConfigPath: $(System.DefaultWorkingDirectory)/NuGet.AzDO.config - task: DotNetCoreCLI@2 displayName: dotnet build Rsk.Audit.csproj inputs: From 8d0a0063861adb842242268864170a3979522674 Mon Sep 17 00:00:00 2001 From: Joe Harvey Date: Tue, 9 Jun 2026 15:02:36 +0100 Subject: [PATCH 10/10] same for other pipelines --- azure-pipelines.duende-identity-server.yml | 1 + azure-pipelines.rsk-audit-ef.yml | 1 + azure-pipelines.rsk-audit.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/azure-pipelines.duende-identity-server.yml b/azure-pipelines.duende-identity-server.yml index d117ac4..c48df68 100644 --- a/azure-pipelines.duende-identity-server.yml +++ b/azure-pipelines.duende-identity-server.yml @@ -37,6 +37,7 @@ stages: command: 'restore' projects: 'src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj' feedsToUse: 'config' + nugetConfigPath: $(System.DefaultWorkingDirectory)/NuGet.AzDO.config - task: DotNetCoreCLI@2 displayName: dotnet build src/Rsk.DuendeIdentityServer.AuditEventSink/Rsk.DuendeIdentityServer.AuditEventSink.csproj inputs: diff --git a/azure-pipelines.rsk-audit-ef.yml b/azure-pipelines.rsk-audit-ef.yml index 418759f..c2cd2bd 100644 --- a/azure-pipelines.rsk-audit-ef.yml +++ b/azure-pipelines.rsk-audit-ef.yml @@ -37,6 +37,7 @@ stages: command: 'restore' projects: 'src/Rsk.Audit.EF/Rsk.Audit.EF.csproj' feedsToUse: 'config' + nugetConfigPath: $(System.DefaultWorkingDirectory)/NuGet.AzDO.config - task: DotNetCoreCLI@2 displayName: dotnet build src/Rsk.Audit.EF/Rsk.Audit.EF.csproj inputs: diff --git a/azure-pipelines.rsk-audit.yml b/azure-pipelines.rsk-audit.yml index 043cabc..ee61ab5 100644 --- a/azure-pipelines.rsk-audit.yml +++ b/azure-pipelines.rsk-audit.yml @@ -37,6 +37,7 @@ stages: command: 'restore' projects: 'src/Rsk.Audit/Rsk.Audit.csproj' feedsToUse: 'config' + nugetConfigPath: $(System.DefaultWorkingDirectory)/NuGet.AzDO.config - task: DotNetCoreCLI@2 displayName: dotnet build src/Rsk.Audit/Rsk.Audit.csproj inputs: