Publikowanie pakietów NuGet z poziomu wiersza polecenia przy użyciu NuGet.exe

Usługi Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

Ten artykuł przeprowadzi Cię przez proces łączenia się z Twoim kanałem informacyjnym i publikowania pakietów przy użyciu dwóch przepływów uwierzytelniania: dostawcy poświadczeń Azure Artifacts dla kanałów informacyjnych w Twojej organizacji oraz osobistego tokenu dostępu (PAT) dla kanałów informacyjnych hostowanych w innej organizacji.

Warunki wstępne

Konfigurowanie dostawcy poświadczeń Azure Artifacts

Dostawca poświadczeń Azure Artifacts umożliwia bezpieczne uwierzytelnianie do feedów Azure Artifacts. Aby używać go z nuget.exe, należy najpierw dodać go do ścieżki wyszukiwania wtyczki NuGet. Aby uzyskać szczegółowe informacje, zobacz Instalacja i odnajdywanie wtyczki. Po dodaniu wtyczki wykonaj kroki instalacji systemu operacyjnego:

Użyj jednej z następujących metod, aby zainstalować dostawcę poświadczeń Azure Artifacts:

Instalacja ręczna

  1. Pobierz najnowszą wersję Microsoft.NetFx48.NuGet.CredentialProvider.zip.

  2. Wyodrębnij plik zip.

  3. Skopiuj folder netfx z wyodrębnionego archiwum do %UserProfile%/.nuget/plugins/. Folder netfx jest wymagany do zapewnienia zgodności z programem nuget.exe.

Instalowanie przy użyciu skryptu pomocnika

Alternatywnie można użyć skryptu zautomatyzowanego pomocnika do uproszczonej instalacji. Upewnij się, że masz program PowerShell 5.1 lub nowszy, a następnie uruchom polecenie:

iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) } -AddNetfx"

Aby uzyskać więcej informacji, zobacz repozytorium Azure Artifacts Credential Provider.

Połącz się z kanałem

Przed opublikowaniem pakietów skonfiguruj projekt i połącz się ze źródłem danych w następujący sposób:

  1. Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Artifacts, a następnie wybierz swój kanał z menu rozwijanego.

  3. Wybierz pozycję Połącz z kanałem informacyjnym, a następnie wybierz pozycję NuGet.exe w okienku nawigacji po lewej stronie.

  4. nuget.config Dodaj plik do projektu w tym samym folderze co plik .csproj lub .sln . Wklej podany fragment kodu XML do pliku. Fragment kodu powinien wyglądać następująco:

    • Kanał informacyjny o zasięgu organizacyjnym:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
    • kanał informacyjny o zakresie projektu:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
  1. Zaloguj się do serwera usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Artifacts, a następnie wybierz swój kanał.

  3. Wybierz Połącz z kanałem informacyjnym, a następnie wybierz NuGet.exe w okienku nawigacji po lewej stronie.

  4. nuget.config Dodaj plik do projektu w tym samym folderze co plik .csproj lub.sln, a następnie wklej podany fragment kodu XML do pliku.

Publikowanie w kanale informacyjnym w tej samej organizacji

Po skonfigurowaniu nuget.config i uwierzytelnieniu za pomocą dostawcy poświadczeń Azure Artifacts uruchom następujące polecenie, aby opublikować pakiet w swoim feedzie. Zastąp symbole zastępcze odpowiednimi wartościami:

nuget push <PACKAGE_PATH> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -ApiKey <ANY_STRING>

Przykład:

nuget push MyPackage.5.0.2.nupkg -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -ApiKey AZ

Notatka

Dostawca poświadczeń Azure Artifacts obsługuje rzeczywiste uwierzytelnianie podczas wypychania, ale narzędzie NuGet nadal wymaga wartości -ApiKey, aby zaakceptować polecenie. Azure Artifacts ignoruje tę wartość, którą podajesz, więc działa dowolny niepusty ciąg znaków.

Publikowanie w kanale informacyjnym w innej organizacji

Jeśli docelowy kanał znajduje się w innej organizacji Azure DevOps, utwórz w tej organizacji token PAT i dodaj kanał jako źródło w pliku nuget.config.

  1. Utwórz osobisty token dostępu (PAT) w organizacji docelowej z zakresem Pakiety>.

  2. Uruchom następujące polecenie, aby dodać kanał jako źródło. To polecenie dodaje twój PAT do pliku nuget.config, dlatego przechowuj ten plik w bezpiecznym miejscu i nie dodawaj go do kontroli wersji.

    nuget sources Add -Name <SOURCE_NAME> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -UserName <USER_NAME> -Password <PERSONAL_ACCESS_TOKEN> -config <PATH_TO_NUGET_CONFIG_FILE>
    
  3. Opublikuj pakiet przy użyciu właśnie dodanej nazwy źródłowej.

    nuget push <PACKAGE_PATH> -Source <SOURCE_NAME> -ApiKey <ANY_STRING>
    

Przykład:

nuget sources Add -Name "MySource" -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -UserName MyUserName -Password YourPersonalAccessToken -config ./nuget.config
nuget push nupkgs/mypackage.1.1.8.nupkg -Source MySource -ApiKey AZ

Notatka

Jeśli organizacja korzysta z zapory lub serwera proxy, zezwól na dostęp do adresów URL domen Azure Artifacts i ich adresów IP.

Troubleshooting

Monit uwierzytelniania nie jest wyświetlany

Upewnij się, że dostawca poświadczeń Azure Artifacts jest zainstalowany i używasz wersji NuGet lub nowszej4.8.0.5385. Aby uzyskać instrukcje konfiguracji, zobacz Nawiązywanie połączenia z kanałami informacyjnymi Azure Artifacts za pomocą NuGet.exe.

Publikowanie kończy się niepowodzeniem, ponieważ wersja już istnieje

Wersje pakietów w Azure Artifacts są niezmienne. Po opublikowaniu wersji nie można jej zastąpić ani ponownie użyć tego samego numeru wersji, nawet jeśli usuniesz pakiet. Zaktualizuj wersję pakietu, ponownie skompiluj pakiet, a następnie opublikuj go ponownie.

Publikowanie kończy się niepowodzeniem za zaporą lub serwerem proxy

Zezwól na dostęp do adresów URL domen i adresów IP usługi Azure Artifacts, a następnie ponów próbę opublikowania.

Publikowanie kończy się niepowodzeniem z powodu błędu 403

Ten błąd zwykle oznacza, że Twoje konto nie ma uprawnień do publikowania w feedzie. Do wypychania pakietów potrzebujesz co najmniej roli Publisher kanału informacyjnego (współautora). Poproś właściciela kanału o zaktualizowanie Twojej roli, a następnie spróbuj ponownie.