Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Skonfiguruj narzędzia NuGet do uwierzytelniania za pomocą usługi Azure Artifacts i innych repozytoriów NuGet. Wymaga >NuGet = 4.8.5385, dotnet >= 6 lub MSBuild >= 15.8.166.59604.
Składnia
# NuGet authenticate v1
# Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604.
- task: NuGetAuthenticate@1
inputs:
#forceReinstallCredentialProvider: false # boolean. Reinstall the credential provider even if already installed. Default: false.
#nuGetServiceConnections: # string. Service connection credentials for feeds outside this organization.
# NuGet authenticate v1
# Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604.
- task: NuGetAuthenticate@1
inputs:
#nuGetServiceConnections: # string. Service connection credentials for feeds outside this organization.
#forceReinstallCredentialProvider: false # boolean. Reinstall the credential provider even if already installed. Default: false.
Wejścia
forceReinstallCredentialProvider
-
ponownie zainstalować dostawcę poświadczeń, nawet jeśli jest już zainstalowany
boolean
. Wartość domyślna: false
.
Fakultatywny. Ponownie instaluje dostawcę poświadczeń w katalogu profilu użytkownika, nawet jeśli jest już zainstalowany. Jeśli dostawca poświadczeń jest już zainstalowany w profilu użytkownika, zadanie określa, czy jest zastępowany dostawcą poświadczeń podanym przez zadanie. Może to spowodować uaktualnienie (lub potencjalnie obniżenie poziomu) dostawcy poświadczeń.
nuGetServiceConnections
-
poświadczenia połączenia usługi dla kanałów informacyjnych spoza tej organizacji
string
.
Fakultatywny. Rozdzielona przecinkami lista połączenia usługi NuGet nazw źródeł danych spoza tej organizacji lub kolekcji. W przypadku kanałów informacyjnych w tej organizacji lub kolekcji pozostaw to pole puste; poświadczenia kompilacji są używane automatycznie.
Opcje sterowania zadaniami
Wszystkie zadania mają opcje sterowania oprócz danych wejściowych zadań podrzędnych. Aby uzyskać więcej informacji, zobacz opcje kontroli i typowe właściwości zadań.
Zmienne wyjściowe
Żaden.
Uwagi
Ważny
To zadanie jest zgodne tylko z nuGet >= 4.8.0.5385, dotnet >= 6 lub MSBuild >= 15.8.166.59604.
Jakie narzędzia są zgodne z tym zadaniem?
To zadanie konfiguruje narzędzia, które obsługują wtyczki międzyplatformowe NuGet. Narzędzia obejmują obecnie nuget.exe, dotnet i najnowsze wersje programu MSBuild z wbudowaną obsługą przywracania pakietów NuGet.
W szczególności to zadanie skonfiguruje:
- nuget.exe (wersja 4.8.5385 lub nowsza)
- dotnet/ .NET 6 SDK lub nowszy (poprzednia wersja tego zadania, NuGetAuthenticateV0, wymaga platformy .NET Core 2.1, która nie jest już obsługiwana)
- MSBuild (wersja 15.8.166.59604 lub nowsza)
Jeśli wystąpią jakiekolwiek problemy, zaleca się uaktualnienie do najnowszej stabilnej wersji.
Otrzymuję błędy "Zadanie zostało anulowane" podczas przywracania pakietu. Co należy zrobić?
Znane problemy z pakietem NuGet i dostawcą poświadczeń usługi Azure Artifacts mogą powodować ten typ błędu, a aktualizacja do najnowszego narzędzia NuGet może pomóc.
znany problem w niektórych wersjach narzędzia NuGet/dotnet może spowodować ten błąd, szczególnie podczas dużych przywracania na maszynach ograniczonych zasobów. Ten problem został rozwiązany w NuGet 5.2i .NET Core SDK 2.1.80X i 2.2.40X. Jeśli używasz starszej wersji, spróbuj uaktualnić wersję pakietu NuGet lub dotnet. Aby zainstalować nowszą wersję zestawu SDK platformy .NET Core, można użyć instalatora narzędzi platformy .NET Core.
Istnieją również znane problemy z dostawcą poświadczeń usługi Azure Artifacts (instalowanym przez to zadanie), w tym artifacts-credprovider/#77 i artifacts-credprovider/#108. Jeśli wystąpią te problemy, upewnij się, że masz najnowszego dostawcę poświadczeń, ustawiając forceReinstallCredentialProvider
wejściowe na true
w zadaniu uwierzytelniania NuGet. To ustawienie zapewni również automatyczne zaktualizowanie dostawcy poświadczeń w miarę rozwiązywania problemów.
Jeśli żaden z powyższych elementów nie rozwiąże problemu, włącz rejestrowania diagnostycznego wtyczki i zgłoś problem w celu NuGet oraz dostawcy poświadczeń usługi Azure Artifacts .
W jaki sposób to zadanie różni się od zadań NuGetCommand i DotNetCoreCLI?
To zadanie konfiguruje nuget.exe, dotnet i MSBuild do uwierzytelniania za pomocą usługi Azure Artifacts lub innych repozytoriów, które wymagają uwierzytelniania. Po uruchomieniu tego zadania możesz wywołać narzędzia w późniejszym kroku (bezpośrednio lub za pomocą skryptu), aby przywrócić lub wypchnąć pakiety.
Zadania NuGetCommand i DotNetCoreCLI wymagają użycia zadania do przywracania lub wypychania pakietów, ponieważ uwierzytelnianie w usłudze Azure Artifacts jest konfigurowane tylko w okresie istnienia zadania. Może to uniemożliwić przywracanie lub wypychanie pakietów we własnym skrypcie. Może to również uniemożliwić przekazywanie określonych argumentów wiersza polecenia do narzędzia.
Zadanie NuGetAuthenticate jest zalecanym sposobem używania uwierzytelnionych źródeł danych w potoku.
Kiedy w potoku należy uruchomić to zadanie?
To zadanie musi zostać uruchomione przed użyciem narzędzia NuGet w celu przywrócenia lub wypychania pakietów do uwierzytelnionego źródła pakietu, takiego jak Azure Artifacts. Nie ma żadnych innych wymagań dotyczących zamawiania. Na przykład to zadanie można bezpiecznie uruchomić przed lub po zadaniu instalatora narzędzi NuGet lub .NET Core.
Jak skonfigurować źródło pakietu NuGet korzystające z klucza ApiKey ("klucze interfejsu API NuGet"), takie jak nuget.org?
Niektóre źródła pakietów, takie jak nuget.org używać kluczy interfejsu API do uwierzytelniania podczas wypychania pakietów, a nie username/password
poświadczeń. Ze względu na ograniczenia w narzędziu NuGet nie można użyć tego zadania do skonfigurowania połączenia usługi NuGet korzystającego z klucza interfejsu API.
Zamiast:
- Konfigurowanie zmiennej tajnej zawierającej klucz ApiKey
- Wypychanie pakietu przy użyciu
nuget push -ApiKey $(myNuGetApiKey)
lubdotnet nuget push --api-key $(myNuGetApiKey)
przy założeniu, że nazwano zmiennąmyNuGetApiKey
Mój agent znajduje się za internetowym serwerem proxy. Czy program NuGetAuthenticate skonfiguruje nuget.exe, dotnet i MSBuild do korzystania z mojego serwera proxy?
Nie. Chociaż samo zadanie będzie działać za internetowym serwerem proxy agent został skonfigurowany do używania, nie konfiguruje narzędzi NuGet do korzystania z serwera proxy.
W tym celu można wykonać następujące czynności:
Ustaw zmienną środowiskową
http_proxy
i opcjonalnieno_proxy
na ustawienia serwera proxy. Aby uzyskać szczegółowe informacje, zobacz zmienne środowiskowe interfejsu wiersza polecenia narzędzia NuGet. Te zmienne są często używane zmienne, których mogą również używać inne narzędzia inne niż NuGet (np. curl).ostrożność :
Zmiennehttp_proxy
ino_proxy
są uwzględniane w systemach operacyjnych Linux i Mac i muszą mieć małe litery. Próba użycia zmiennej usługi Azure Pipelines w celu ustawienia zmiennej środowiskowej nie będzie działać, ponieważ zostanie przekonwertowana na wielkie litery. Zamiast tego ustaw zmienne środowiskowe na maszynie własnego agenta i uruchom ponownie agenta.Dodaj ustawienia serwera proxy do pliku nuget.configna poziomie użytkownika ręcznie lub przy użyciu
nuget config -set
zgodnie z opisem w dokumentacji nuget.config.ostrożność :
Ustawienia serwera proxy (takie jakhttp_proxy
) należy dodać do konfiguracji na poziomie użytkownika. Zostaną one zignorowane, jeśli zostaną określone w innym pliku nuget.config.
Jak mogę debugować, jeśli mam problemy z tym zadaniem?
Aby uzyskać pełne dzienniki z potoku, dodaj zmienną potoku system.debug
i ustaw wartość true
.
Jak to zadanie działa?
To zadanie instaluje dostawca poświadczeń usługi Azure Artifacts w katalogu wtyczek NuGet, jeśli nie został jeszcze zainstalowany. Następnie ustawia zmienne środowiskowe, takie jak VSS_NUGET_URI_PREFIXES
i VSS_NUGET_ACCESSTOKEN
, aby skonfigurować dostawcę poświadczeń. Te zmienne pozostają ustawione na okres istnienia zadania. Podczas przywracania lub wypychania pakietów narzędzie NuGet wykonuje dostawcę poświadczeń, który używa powyższych zmiennych, aby określić, czy powinien zwrócić poświadczenia z powrotem do narzędzia.
Aby uzyskać więcej informacji, zobacz dokumentację dostawcy poświadczeń.
Mój potok musi uzyskać dostęp do kanału informacyjnego w innym projekcie
Jeśli potok jest uruchomiony w innym projekcie niż projekt hostowania kanału informacyjnego, należy skonfigurować drugi projekt, aby udzielić dostępu do odczytu/zapisu w usłudze kompilacji. Aby uzyskać więcej informacji, zobacz Uprawnienia pakietu w usłudze Azure Pipelines.
Czy będzie to działać w przypadku przebiegów potoków wyzwalanych z zewnętrznego rozwidlenia?
Nie. Uruchomienia potoków wyzwalane z zewnętrznego rozwidlenia nie mają dostępu do odpowiednich wpisów tajnych na potrzeby uwierzytelniania wewnętrznego źródła danych. W związku z tym będzie ono wyglądać tak, jakby zadanie uwierzytelniania zakończyło się pomyślnie, ale kolejne zadania wymagające uwierzytelnienia (takie jak wypychanie Nuget) zakończy się niepowodzeniem z błędem w wierszach: ##[error]The nuget command failed with exit code(1) and error(Response status code does not indicate success: 500 (Internal Server Error - VS800075: The project with id 'vstfs:///Classification/TeamProject/341ec244-e856-40ad-845c-af31c33c2152' does not exist, or you do not have permission to access it. (DevOps Activity ID: C12C19DC-642C-469A-8F58-C89F2D81FEA7)).
Po scaleniu żądania ściągnięcia z źródła potok, a następnie potok, który jest wyzwalany z tego zdarzenia, zostanie prawidłowo uwierzytelniony.
Zaktualizowano z nuGetAuthenticateV0 do NuGetAuthenticateV1, a teraz moje polecenie dotnet kończy się niepowodzeniem z 401
Jeśli aktualizujesz z nuGetAuthenticateV0 do NuGetAuthenticateV1 i występuje błąd podczas uruchamiania polecenia dotnet, poszukaj komunikatu It was not possible to find any compatible framework version
z dzienników. W przypadku użytkowników dotnet nuGetAuthenticateV1 wymaga platformy .NET 6 zamiast platformy .NET Core 2.1, która jest wymagana w środowisku NuGetAuthenticateV0 i nie jest już obsługiwana. Aby rozwiązać ten problem, użyj zadania UseDotNet@2 przed poleceniem dotnet, aby zainstalować platformę .NET 6.
- task: UseDotNet@2
displayName: Use .NET 6 SDK
inputs:
packageType: sdk
version: 6.x
Przykłady
Przywracanie i wypychanie pakietów NuGet w organizacji
Jeśli wszystkie używane źródła danych usługi Azure Artifacts znajdują się w tej samej organizacji co potok, możesz użyć zadania NuGetAuthenticate bez określania żadnych danych wejściowych. W przypadku źródeł danych o określonym zakresie projektu, które znajdują się w innym projekcie niż w którym działa potok, należy ręcznie nadać projektowi i kanałowi informacyjnemu dostęp do usługi kompilacji projektu potoku.
nuget.config
<configuration>
<packageSources>
<!--
Any Azure Artifacts feeds within your organization will automatically be authenticated. Both dev.azure.com and visualstudio.com domains are supported.
Project scoped feed URL includes the project, organization scoped feed URL does not.
-->
<add key="MyProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/nuget/v3/index.json" />
<add key="MyProjectFeed2" value="https://{organization}.pkgs.visualstudio.com/{project}/_packaging/{feed}/nuget/v3/index.json" />
<add key="MyOtherProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed@view}/nuget/v3/index.json" />
<add key="MyOrganizationFeed1" value="https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/nuget/v3/index.json" />
</packageSources>
</configuration>
Aby użyć połączenia z usługą, określ połączenie usługi w nuGetServiceConnections
danych wejściowych dla zadania uwierzytelniania NuGet. Następnie możesz odwołać się do połączenia usługi z -ApiKey AzureArtifacts
w zadaniu.
nuget.exe
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: NuGetToolInstaller@1 # Optional if nuget.exe >= 4.8.5385 is already on the path
inputs:
versionSpec: '*'
checkLatest: true
- script: nuget restore
# ...
- script: nuget push -ApiKey AzureArtifacts -Source "MyProjectFeed1" MyProject.*.nupkg
dotnet
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: UseDotNet@2 # Optional if the .NET Core SDK is already installed
- script: dotnet restore
# ...
- script: dotnet nuget push --api-key AzureArtifacts --source https://pkgs.dev.azure.com/{organization}/_packaging/{feed1}/nuget/v3/index.json MyProject.*.nupkg
W powyższych przykładach OtherOrganizationFeedConnection
i ThirdPartyRepositoryConnection
są nazwy połączeń usługi NuGet, które zostały skonfigurowane i autoryzowane do użycia w potoku, oraz mają adresy URL pasujące do tych w nuget.config
lub argument wiersza polecenia.
Adres URL źródła pakietu wskazujący źródło danych usługi Azure Artifacts może lub nie może zawierać projektu. Adres URL źródła danych o zakresie projektu musi zawierać projekt, a adres URL kanału informacyjnego o zakresie organizacji nie może zawierać projektu. Dowiedz się więcej o kanałach informacyjnych o zakresie projektu .
Przywracanie i wypychanie pakietów NuGet poza organizacją
Jeśli używasz źródeł danych usługi Azure Artifacts z innej organizacji lub używasz uwierzytelnionego repozytorium pakietów innej firmy, musisz skonfigurować połączenia usługi NuGet i określić je w danych wejściowych nuGetServiceConnections
.
Kanały informacyjne w organizacji usługi Azure Artifacts również zostaną automatycznie uwierzytelnione.
nuget.config
<configuration>
<packageSources>
<!-- Any Azure Artifacts feeds within your organization will automatically be authenticated -->
<add key="MyProjectFeed1" value="https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/nuget/v3/index.json" />
<add key="MyOrganizationFeed" value="https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/nuget/v3/index.json" />
<!-- Any package source listed here whose URL matches the URL of a service connection in nuGetServiceConnections will also be authenticated.
The key name here does not need to match the name of the service connection. -->
<add key="OtherOrganizationFeed" value="https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/nuget/v3/index.json" />
<add key="ThirdPartyRepository" value="https://{thirdPartyRepository}/index.json" />
</packageSources>
</configuration>
nuget.exe
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: NuGetToolInstaller@1 # Optional if nuget.exe >= 4.8.5385 is already on the path
inputs:
versionSpec: '*'
checkLatest: true
- script: nuget restore
# ...
- script: nuget push -ApiKey AzureArtifacts -Source "MyProjectFeed1" MyProject.*.nupkg
dotnet
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: OtherOrganizationFeedConnection, ThirdPartyRepositoryConnection
- task: UseDotNet@2 # Optional if the .NET Core SDK is already installed
- script: dotnet restore
# ...
- script: dotnet nuget push --api-key AzureArtifacts --source "MyProjectFeed1" MyProject.*.nupkg
OtherOrganizationFeedConnection
i ThirdPartyRepositoryConnection
to nazwy połączeń usługi NuGet, które zostały skonfigurowane i autoryzowane do użycia w potoku, oraz mają adresy URL zgodne z tymi w nuget.config lub argument wiersza polecenia.
Adres URL źródła pakietu wskazujący źródło danych usługi Azure Artifacts może lub nie może zawierać projektu. Adres URL źródła danych o zakresie projektu musi zawierać projekt, a adres URL kanału informacyjnego o zakresie organizacji nie może zawierać projektu. Dowiedz się więcej o kanałach informacyjnych o zakresie projektu .
Wymagania
Wymaganie | Opis |
---|---|
Typy potoków | YAML, klasyczna kompilacja, wersja klasyczna |
Działa na | Agent, DeploymentGroup |
Wymagania | Żaden |
możliwości | To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu. |
ograniczenia poleceń | Jakikolwiek |
zmienne ustawiane | Jakikolwiek |
Wersja agenta | 2.144.0 lub nowsza |
Kategoria zadań | Pakiet |
Wymaganie | Opis |
---|---|
Typy potoków | YAML, klasyczna kompilacja, wersja klasyczna |
Działa na | Agent, DeploymentGroup |
Wymagania | Żaden |
możliwości | To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu. |
ograniczenia poleceń | Jakikolwiek |
zmienne ustawiane | Jakikolwiek |
Wersja agenta | 2.120.0 lub nowsza |
Kategoria zadań | Pakiet |