Honestly, VSTS private NuGet feeds will be a most blogged topic in this blog! I’ve already mentioned them at least twice. Here goes another post:
This time I’m building in VSTS Core application and the build literally goes:
- dotnet restore
- dotnet build
- dotnet test
- dotnet publish
And this worked really well for the basic application – I had it set up in minutes and got the resuilt I was looking for.
But during the life of the application I needed NuGet packages from my private feed and dotnet restore
had no idea about my private feeds.
Even if supplied with nuget.config
file I was getting 401 Unauthenticated
– this is because I was not keeping my password(token) in this file.
Solution was to add this feed globally on the agent for every build. And this turned out to be easier than I thought.
In your build add a new task called Nuget Command
:
When you configure this task give sources
as Command parameter. And for arguments put this:
add -Name MyFeedName -Source https://MyProject.pkgs.visualstudio.com/_packaging/MyFeedName/nuget/v3/index.json -username myUsername@MyTeamName.onmicrosoft.com -password $(System.AccessToken)
My build task looks like this:
Replace the names accordingly. This adds a NuGet source to the agent. This $(System.AccessToken)
is getting build variable that contains an access token – it is generated for every build you run, so no need to keep it around in your build script or nuget.config
.
To make the token available you need change the toggle in build Options: Change Allow scripts to access OAuth Token
to Enabled
:
This way when you run dotnet restore
your private feed will be available and it will use OAuth token that authenticates with the private package feed.