0
votes

I used Nuget.exe to push a package to Azure artifacts. But, below command always prompts for browser login. The package was pushed successfully after login. I cannot automate the build with this behavior. How can I workaround this issue?

nuget push ./out/MonoTorrent.1.0.39.nupkg -Source "https://pkgs.dev.azure.com/myacct/myproject/_packaging/myfeed/nuget/v3/index.json" -ApiKey "myapikey" -ConfigFile Nuget.config

Nuget.Config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="myfeed" value="https://pkgs.dev.azure.com/myacct/myproject/_packaging/myfeed/nuget/v3/index.json" />
  </packageSources>
    <myfeed>
      <add key="Username" value="myliveidemail" />
      <add key="ClearTextPassword" value="myapikey" />
    </myfeed>
</configuration>
1
Have you resolved the issue by Krzysztof's solution? Any update here?Andy Li-MSFT

1 Answers

0
votes

Please check Azure Artifacts Credential Provider. You need to install it and at first time when you push your package you will be asked to

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXXXXXX to authenticate.

Once you logged in at next run you won't be asked.

This is my nuget.config file

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />

    <add key="devops-manual" value="my-feed-url" />

  </packageSources>
</configuration>

One remak: instead of nuget I was using dotnet pack and dotnet nuget push --source "devops-manual" --api-key az <package-path>. When in first push I added --interactive flag to be asked to login to Azure DevOps.

EDIT

I probably have missing tag:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="myfeed" value="https://pkgs.dev.azure.com/myacct/myproject/_packaging/myfeed/nuget/v3/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <myfeed>
      <add key="Username" value="myliveidemail" />
      <add key="ClearTextPassword" value="myapikey" />
    </myfeed>
  </packageSourceCredentials>
</configuration>

EDIT2:

You can also run this command (from pipeline or login once to machine)

dotnet nuget add source your-source-url --name your-feed-name --username any-name-here --password PAT

This will add nuget source to list on your machine so later you can use this source without additional authentication.