From d099d0b5b5e8f2315321d295b361eae6dfa2e439 Mon Sep 17 00:00:00 2001 From: ITDancer13 Date: Wed, 17 Jul 2024 16:01:18 +0200 Subject: [PATCH] Add support for AzurePipelines NuGetAuthenticate and NpmAuthenticate --- ...ibute=AzurePipelinesAttribute.verified.txt | 48 +++++++++++++++++++ .../CI/ConfigurationGenerationTest.cs | 4 +- .../AzurePipelines/AzurePipelinesAttribute.cs | 14 ++++++ .../AzurePipelinesNpmAuthenticateStep.cs | 24 ++++++++++ .../AzurePipelinesNuGetAuthenticateStep.cs | 18 +++++++ 5 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 source/Nuke.Common/CI/AzurePipelines/Configuration/AzurePipelinesNpmAuthenticateStep.cs create mode 100644 source/Nuke.Common/CI/AzurePipelines/Configuration/AzurePipelinesNuGetAuthenticateStep.cs diff --git a/source/Nuke.Common.Tests/CI/ConfigurationGenerationTest.Test_testName=null_attribute=AzurePipelinesAttribute.verified.txt b/source/Nuke.Common.Tests/CI/ConfigurationGenerationTest.Test_testName=null_attribute=AzurePipelinesAttribute.verified.txt index 3cd6550cf..278a05a5c 100644 --- a/source/Nuke.Common.Tests/CI/ConfigurationGenerationTest.Test_testName=null_attribute=AzurePipelinesAttribute.verified.txt +++ b/source/Nuke.Common.Tests/CI/ConfigurationGenerationTest.Test_testName=null_attribute=AzurePipelinesAttribute.verified.txt @@ -63,6 +63,12 @@ stages: key: $(Agent.OS) | nuget-packages | **/global.json, **/*.csproj, **/Directory.Packages.props restoreKeys: $(Agent.OS) | nuget-packages path: $(HOME)/.nuget/packages + - task: NuGetAuthenticate@1 + displayName: 'NuGet Authenticate' + - task: npmAuthenticate@0 + displayName: 'npm Authenticate .npmrc' + inputs: + workingFile: '.npmrc' - task: CmdLine@2 displayName: 'Run: Restore' inputs: @@ -96,6 +102,12 @@ stages: key: $(Agent.OS) | nuget-packages | **/global.json, **/*.csproj, **/Directory.Packages.props restoreKeys: $(Agent.OS) | nuget-packages path: $(HOME)/.nuget/packages + - task: NuGetAuthenticate@1 + displayName: 'NuGet Authenticate' + - task: npmAuthenticate@0 + displayName: 'npm Authenticate .npmrc' + inputs: + workingFile: '.npmrc' - task: CmdLine@2 displayName: 'Run: Compile' inputs: @@ -131,6 +143,12 @@ stages: key: $(Agent.OS) | nuget-packages | **/global.json, **/*.csproj, **/Directory.Packages.props restoreKeys: $(Agent.OS) | nuget-packages path: $(HOME)/.nuget/packages + - task: NuGetAuthenticate@1 + displayName: 'NuGet Authenticate' + - task: npmAuthenticate@0 + displayName: 'npm Authenticate .npmrc' + inputs: + workingFile: '.npmrc' - task: CmdLine@2 displayName: 'Run: Test' inputs: @@ -164,6 +182,12 @@ stages: key: $(Agent.OS) | nuget-packages | **/global.json, **/*.csproj, **/Directory.Packages.props restoreKeys: $(Agent.OS) | nuget-packages path: $(HOME)/.nuget/packages + - task: NuGetAuthenticate@1 + displayName: 'NuGet Authenticate' + - task: npmAuthenticate@0 + displayName: 'npm Authenticate .npmrc' + inputs: + workingFile: '.npmrc' - task: CmdLine@2 displayName: 'Run: Coverage' inputs: @@ -203,6 +227,12 @@ stages: key: $(Agent.OS) | nuget-packages | **/global.json, **/*.csproj, **/Directory.Packages.props restoreKeys: $(Agent.OS) | nuget-packages path: $(USERPROFILE)/.nuget/packages + - task: NuGetAuthenticate@1 + displayName: 'NuGet Authenticate' + - task: npmAuthenticate@0 + displayName: 'npm Authenticate .npmrc' + inputs: + workingFile: '.npmrc' - task: CmdLine@2 displayName: 'Run: Restore' inputs: @@ -236,6 +266,12 @@ stages: key: $(Agent.OS) | nuget-packages | **/global.json, **/*.csproj, **/Directory.Packages.props restoreKeys: $(Agent.OS) | nuget-packages path: $(USERPROFILE)/.nuget/packages + - task: NuGetAuthenticate@1 + displayName: 'NuGet Authenticate' + - task: npmAuthenticate@0 + displayName: 'npm Authenticate .npmrc' + inputs: + workingFile: '.npmrc' - task: CmdLine@2 displayName: 'Run: Compile' inputs: @@ -271,6 +307,12 @@ stages: key: $(Agent.OS) | nuget-packages | **/global.json, **/*.csproj, **/Directory.Packages.props restoreKeys: $(Agent.OS) | nuget-packages path: $(USERPROFILE)/.nuget/packages + - task: NuGetAuthenticate@1 + displayName: 'NuGet Authenticate' + - task: npmAuthenticate@0 + displayName: 'npm Authenticate .npmrc' + inputs: + workingFile: '.npmrc' - task: CmdLine@2 displayName: 'Run: Test' inputs: @@ -304,6 +346,12 @@ stages: key: $(Agent.OS) | nuget-packages | **/global.json, **/*.csproj, **/Directory.Packages.props restoreKeys: $(Agent.OS) | nuget-packages path: $(USERPROFILE)/.nuget/packages + - task: NuGetAuthenticate@1 + displayName: 'NuGet Authenticate' + - task: npmAuthenticate@0 + displayName: 'npm Authenticate .npmrc' + inputs: + workingFile: '.npmrc' - task: CmdLine@2 displayName: 'Run: Coverage' inputs: diff --git a/source/Nuke.Common.Tests/CI/ConfigurationGenerationTest.cs b/source/Nuke.Common.Tests/CI/ConfigurationGenerationTest.cs index c8f5c3146..8a04a8b8b 100644 --- a/source/Nuke.Common.Tests/CI/ConfigurationGenerationTest.cs +++ b/source/Nuke.Common.Tests/CI/ConfigurationGenerationTest.cs @@ -96,7 +96,9 @@ public class TestBuild : NukeBuild Submodules = true, LargeFileStorage = false, Clean = true, - FetchDepth = 1 + FetchDepth = 1, + EnableNuGetAuthenticate = true, + EnableNpmAuthenticate = true, } ); diff --git a/source/Nuke.Common/CI/AzurePipelines/AzurePipelinesAttribute.cs b/source/Nuke.Common/CI/AzurePipelines/AzurePipelinesAttribute.cs index 05b09523d..867e2dafc 100644 --- a/source/Nuke.Common/CI/AzurePipelines/AzurePipelinesAttribute.cs +++ b/source/Nuke.Common/CI/AzurePipelines/AzurePipelinesAttribute.cs @@ -117,6 +117,10 @@ public bool? PullRequestsAutoCancel public string[] ImportVariableGroups { get; set; } = new string[0]; public string[] ImportSecrets { get; set; } = new string[0]; public bool EnableAccessToken { get; set; } + + public bool EnableNuGetAuthenticate { get; set; } + public bool EnableNpmAuthenticate { get; set; } + public string NpmrcPath { get; set; } = ".npmrc"; public override CustomFileWriter CreateWriter(StreamWriter streamWriter) { @@ -251,6 +255,16 @@ protected virtual IEnumerable GetSteps( } } + if (EnableNuGetAuthenticate) + { + yield return new AzurePipelinesNuGetAuthenticateStep(); + } + + if (EnableNpmAuthenticate && !string.IsNullOrEmpty(NpmrcPath)) + { + yield return new AzurePipelinesNpmAuthenticateStep{ NpmrcPath = NpmrcPath }; + } + string GetArtifactPath(AbsolutePath path) => Build.RootDirectory.Contains(path) ? Build.RootDirectory.GetUnixRelativePathTo(path) diff --git a/source/Nuke.Common/CI/AzurePipelines/Configuration/AzurePipelinesNpmAuthenticateStep.cs b/source/Nuke.Common/CI/AzurePipelines/Configuration/AzurePipelinesNpmAuthenticateStep.cs new file mode 100644 index 000000000..b1326e57f --- /dev/null +++ b/source/Nuke.Common/CI/AzurePipelines/Configuration/AzurePipelinesNpmAuthenticateStep.cs @@ -0,0 +1,24 @@ +// Copyright 2024 Maintainers of NUKE. +// Distributed under the MIT License. +// https://github.com/nuke-build/nuke/blob/master/LICENSE + +using Nuke.Common.Utilities; + +namespace Nuke.Common.CI.AzurePipelines.Configuration; + +public class AzurePipelinesNpmAuthenticateStep : AzurePipelinesStep +{ + public string NpmrcPath { get; set; } + + public override void Write(CustomFileWriter writer) + { + using (writer.WriteBlock("- task: npmAuthenticate@0")) + { + writer.WriteLine($"displayName: 'npm Authenticate {NpmrcPath}'"); + using (writer.WriteBlock("inputs:")) + { + writer.WriteLine($"workingFile: {NpmrcPath.SingleQuote()}"); + } + } + } +} diff --git a/source/Nuke.Common/CI/AzurePipelines/Configuration/AzurePipelinesNuGetAuthenticateStep.cs b/source/Nuke.Common/CI/AzurePipelines/Configuration/AzurePipelinesNuGetAuthenticateStep.cs new file mode 100644 index 000000000..12d4dad16 --- /dev/null +++ b/source/Nuke.Common/CI/AzurePipelines/Configuration/AzurePipelinesNuGetAuthenticateStep.cs @@ -0,0 +1,18 @@ +// Copyright 2024 Maintainers of NUKE. +// Distributed under the MIT License. +// https://github.com/nuke-build/nuke/blob/master/LICENSE + +using Nuke.Common.Utilities; + +namespace Nuke.Common.CI.AzurePipelines.Configuration; + +public class AzurePipelinesNuGetAuthenticateStep : AzurePipelinesStep +{ + public override void Write(CustomFileWriter writer) + { + using (writer.WriteBlock("- task: NuGetAuthenticate@1")) + { + writer.WriteLine("displayName: 'NuGet Authenticate'"); + } + } +}