I'm attempting to automate NuGet Package updates through Nuke and CI/CD on Azure DevOps. Everything is building just fine, but during the PushNuGet step, the process tries to authenticate with Azure via a pop-up window, which is obviously never rendered [in devops] or answered
class Build : NukeBuild
{
/// Support plugins are available for:
/// - JetBrains ReSharper https://nuke.build/resharper
/// - JetBrains Rider https://nuke.build/rider
/// - Microsoft VisualStudio https://nuke.build/visualstudio
/// - Microsoft VSCode https://nuke.build/vscode
public static int Main () => Execute<Build>(x => x.PushNuGet);
[Parameter("Configuration to build - Default is 'Debug' (local) or 'Release' (server)")]
readonly Configuration Configuration = IsLocalBuild ? Configuration.Debug : Configuration.Release;
[Solution] readonly Solution Solution;
[GitRepository] readonly GitRepository GitRepository;
AbsolutePath SourceDirectory => RootDirectory / "src";
AbsolutePath TestsDirectory => RootDirectory / "tests";
AbsolutePath ArtifactsDirectory => RootDirectory / "artifacts";
string VersionNumber = "1.0.2";
Target Clean => _ => _
.Executes(() =>
{
SourceDirectory.GlobDirectories("**/bin", "**/obj").ForEach(DeleteDirectory);
TestsDirectory.GlobDirectories("**/bin", "**/obj").ForEach(DeleteDirectory);
EnsureCleanDirectory(ArtifactsDirectory);
});
Target Restore => _ => _
.DependsOn(Clean)
.Executes(() =>
{
DotNetRestore(s => s
.SetProjectFile(Solution));
});
Target Compile => _ => _
.DependsOn(Restore)
.Executes(() =>
{
DotNetBuild(s => s
.SetProjectFile(Solution)
.SetConfiguration(Configuration)
.EnableNoRestore());
});
Target Pack => _ => _
.DependsOn(Compile)
.Executes(() =>
{
DotNetPack(s => s
.SetProject(RootDirectory + "\\Fuze.Models\\Fuze.Models.csproj")
.SetNoBuild(true)
.SetConfiguration(Configuration)
.SetVersion(VersionNumber)
);
});
Target AddSource => _ => _
.DependsOn(Pack)
.Executes(() =>
{
var sourceUrl = "https://pkgs.dev.azure.com/DataFuzionHCM/_packaging/DataFuzionHCM/nuget/v3/index.json";
var sourceName = "DataFuzionHCM";
var sources = NuGetTasks.NuGetSourcesList();
if(sources.Any(source => source.Text.Contains(sourceName)))
{
NuGetTasks.NuGetSourcesRemove(s => s.SetName(sourceName));
}
NuGetTasks.NuGetSourcesAdd(s => s
.SetName(sourceName)
.SetSource(sourceUrl)
.SetUserName("NuGet Feed Token")
.SetPassword("fakepassword")
);
});
Target PushNuGet => _ => _
.DependsOn(AddSource)
.Executes(() =>
{
NuGetTasks.NuGetPush(s => s
.SetSource("DataFuzionHCM")
.SetApiKey("az")
.SetTargetPath(RootDirectory + $"/FUZE.Models/bin/debug/Fuze.Models.{VersionNumber}.nupkg")
);
});
}
On the Azure Build Pipeline, During the last step, it can be seen in the job log that it's getting stuck on some auth window with azure.
Using credentials from config. UserName: NuGet Feed Token
[CredentialProvider]Using the ADAL UI flow for uri https://pkgs.dev.[hidden]ure.com/DataFuzionHCM/_packaging/DataFuzionHCM/nuget/v3/index.json. User sign-in required in a pop-up authentication window.
[CredentialProvider]Using the ADAL UI flow for uri https://pkgs.dev.[hidden]ure.com/DataFuzionHCM/_packaging/DataFuzionHCM/nuget/v3/index.json. User sign-in required in a pop-up authentication window.
[CredentialProvider]Using the ADAL UI flow for uri https://pkgs.dev.[hidden]ure.com/DataFuzionHCM/_packaging/DataFuzionHCM/nuget/v3/index.json. User sign-in required in a pop-up authentication window.
##[error]Unable to load the service index for source https://pkgs.dev.[hidden]ure.com/DataFuzionHCM/_packaging/DataFuzionHCM/nuget/v3/index.json.
##[error] The HTTP request to 'GET https://pkgs.dev.[hidden]ure.com/DataFuzionHCM/_packaging/DataFuzionHCM/nuget/v3/index.json' has timed out after 100000ms.
##[error]Process 'NuGet.exe' exited with code 1.
Is there a method to programmatically authenticate with Azure so it doesn't hang and timeout at the popup-auth?