Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Usługa Azure Artifacts umożliwia deweloperom zarządzanie pakietami z różnych źródeł, w tym zarówno publicznych rejestrów, jak npmjs.com, jak i prywatnych źródeł. Aby przeprowadzić uwierzytelnianie za pomocą usługi Azure Artifacts, musisz skonfigurować plik konfiguracji npm. Ten plik zawiera adresy URL kanału informacyjnego i poświadczenia używane przez narzędzie npm, oferując opcje dostosowywania zachowania klienta npm, takie jak konfigurowanie serwerów proxy, definiowanie domyślnych lokalizacji pakietów lub konfigurowanie prywatnych źródeł danych pakietów. Plik npmrc zazwyczaj znajduje się w katalogu głównym użytkownika, ale można go również utworzyć na poziomie projektu, aby zastąpić ustawienia domyślne.
Usługa Azure Artifacts zaleca używanie dwóch oddzielnych plików konfiguracji. Pierwsza jest przeznaczona do uwierzytelniania za pomocą usługi Azure Artifacts, a druga powinna być przechowywana lokalnie w celu przechowywania poświadczeń. Takie podejście umożliwia udostępnianie pliku konfiguracji przy zachowaniu bezpieczeństwa poświadczeń.
Aby skonfigurować drugi plik, wystarczy umieścić go w katalogu głównym na maszynie dewelopera i dołączyć wszystkie poświadczenia rejestru. Dzięki temu klient npm może łatwo uzyskiwać dostęp do poświadczeń na potrzeby uwierzytelniania.
Poniższe kroki przeprowadzą Cię przez proces konfigurowania pierwszego pliku konfiguracji:
Uwaga
vsts-npm-auth nie jest obsługiwany w usłudze Azure DevOps Server.
Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.
Wybierz pozycję Artefakty, a następnie wybierz pozycję Połącz z kanałem informacyjnym.
Wybierz pozycję npm na lewym pasku bocznym. Jeśli po raz pierwszy używasz usługi Azure Artifacts z narzędziem npm, upewnij się, że zainstalowano wymagania wstępne.
Postępuj zgodnie z instrukcjami w sekcji Konfiguracja projektu, aby nawiązać połączenie ze źródłem danych.
Dodaj plik npmrc w katalogu projektu w tym samym katalogu co plik package.json i wklej do niego poniższy fragment kodu.
Skopiuj następujący fragment kodu i wklej go do pliku npmrc na poziomie użytkownika:
Kanał informacyjny o zakresie organizacji:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:username=[ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Źródło danych o zakresie projektu:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Generowanie osobistego tokenu dostępu przy użyciu pakietów zakresów odczytu i zapisu.
Uruchom następujące polecenie w oknie wiersza polecenia, a następnie wklej osobisty token dostępu po wyświetleniu monitu. Po zakończeniu skopiuj wygenerowaną wartość zakodowaną w formacie Base 64.
Jeśli korzystasz z systemu Linux/Mac, możesz też użyć następującego polecenia, aby przekonwertować osobisty token dostępu na bazę 64. Skopiuj wynikową wartość zakodowaną w formacie Base64.
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64
Zastąp symbole zastępcze [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] w pliku npmrc użytkownika zakodowanym osobistym tokenem dostępu uzyskanym z poprzedniego kroku.
Zaloguj się do kolekcji usługi Azure DevOps, a następnie przejdź do projektu.
Wybierz pozycję Artefakty, a następnie wybierz pozycję Połącz z kanałem informacyjnym.
Wybierz pozycję npm na lewym pasku bocznym , a następnie postępuj zgodnie z instrukcjami w sekcji Konfiguracja projektu, aby skonfigurować plik konfiguracji.
Dodaj plik npmrc w katalogu projektu w tym samym katalogu co plik package.json i wklej do niego poniższy fragment kodu.
Skopiuj następujący fragment kodu i wklej go do pliku npmrc na poziomie użytkownika:
Źródło danych o zakresie kolekcji:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Źródło danych o zakresie projektu:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Generowanie osobistego tokenu dostępu przy użyciu pakietów zakresów odczytu i zapisu.
Uruchom następujące polecenie w oknie wiersza polecenia, a następnie wklej osobisty token dostępu po wyświetleniu monitu. Po zakończeniu skopiuj wygenerowaną wartość zakodowaną w formacie Base 64.
Zaloguj się do kolekcji usługi Azure DevOps, a następnie przejdź do projektu.
Wybierz pozycję Artefakty, a następnie wybierz pozycję Połącz z kanałem informacyjnym.
Wybierz pozycję npm po lewej stronie, a następnie postępuj zgodnie z instrukcjami w temacie Konfiguracja programu Project, aby skonfigurować plik konfiguracji.
Dodaj plik npmrc w katalogu projektu w tym samym katalogu co plik package.json i wklej do niego następujący fragment kodu:
Skopiuj następujący fragment kodu i wklej go do pliku npmrc na poziomie użytkownika:
Źródło danych o zakresie kolekcji:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Źródło danych o zakresie projektu:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Generowanie osobistego tokenu dostępu przy użyciu pakietów zakresów odczytu i zapisu.
Uruchom następujące polecenie w oknie wiersza polecenia, a następnie wklej osobisty token dostępu po wyświetleniu monitu. Po zakończeniu skopiuj wygenerowaną wartość zakodowaną w formacie Base 64.
Zastąp symbole zastępcze [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] w pliku npmrc użytkownika zakodowanym osobistym tokenem dostępu uzyskanym z poprzedniego kroku.
Zaloguj się do kolekcji usługi Azure DevOps, a następnie przejdź do projektu.
Wybierz pozycję Artefakty, a następnie wybierz pozycję Połącz z kanałem informacyjnym.
Zostanie otwarte nowe okno. W okienku nawigacji po lewej stronie wybierz pozycję npm.
Postępuj zgodnie z podanymi instrukcjami, aby skonfigurować projekt i pliki npmrc użytkownika .
Napiwek
Używanie wielu rejestrów w plikach npmrc jest obsługiwane z zakresami i źródłami nadrzędnymi.
Uwierzytelnianie potoku
Aby uwierzytelnić się w potoku, usługa Azure Artifacts zaleca użycie zadania uwierzytelniania npm.
W przypadku używania modułów uruchamiaczy zadań, takich jak gulp lub Grunt, należy określić priorytety ustawiania zadania uwierzytelniania npm na początku potoku. Ten krok gwarantuje, że poświadczenia są wstrzykiwane do pliku npmrc projektu i przechowywane w całym przebiegu potoku, umożliwiając kolejne kroki uzyskiwania dostępu do poświadczeń w pliku konfiguracji.
Przejdź do projektu, wybierz pozycję Potoki, a następnie wybierz definicję potoku.
Wybierz pozycję Edytuj , aby zmodyfikować potok.
Wybierz + , aby dodać nowe zadanie do potoku.
Przejdź do projektu, wybierz pozycję Kompilacje potoków>, a następnie wybierz definicję kompilacji.
Wybierz pozycję Edytuj , aby zmodyfikować potok kompilacji.
Wybierz + , aby dodać nowe zadanie do potoku kompilacji.
Wyszukaj zadanie npm Uwierzytelnij, a następnie wybierz pozycję Dodaj.
Wybierz plik npmrc, a następnie wybierz pozycję Zapisz i kolejkę po zakończeniu.
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc ## Path to the npmrc file
customEndpoint: #Optional ## Comma-separated list of npm service connection names for registries from external organizations. For registries in your org, leave this blank
Uwaga
Aby uzyskać dostęp do kanału informacyjnego z potoku, upewnij się, że rola usługi kompilacji jest ustawiona na Źródło danych i czytelnik nadrzędny (współautor) w ustawieniach>kanału informacyjnego Uprawnienia.
Uwaga
Jeśli twoja organizacja korzysta z zapory lub serwera proxy, upewnij się, że zezwalasz na odpowiednie adresy URL domeny. Aby uzyskać szczegółowe informacje, zobacz Dozwolone adresy IP i adresy URL domeny.
Rozwiązywanie problemów
Vsts-npm-auth nie jest rozpoznawany
Ten błąd wskazuje, że folder npm modules nie został dodany do ścieżki. Uruchom ponownie Node.js instalatora i upewnij się, że wybrano Add to PATH opcję. Alternatywnie możesz dodać folder npm modules do ścieżki, modyfikując zmienną PATH w %APPDATA%\npm wierszu polecenia lub $env:APPDATA\npm w programie PowerShell.
Nie można wykonać uwierzytelnienia
Błąd: kod E401 npm ERR! Nie można uwierzytelnić: —> uruchom vsts-npm-auth polecenie z flagą -F , aby ponownie uwierzytelnić:
vsts-npm-auth -config .npmrc -F
Resetowanie vsts-npm-auth
Wykonaj następujące kroki, aby zresetować poświadczenia vsts-npm-auth:
Jeśli wystąpi błąd 403, może to oznaczać konflikt nazw. W usłudze Azure Artifacts pakiety są niezmienne, co oznacza, że po opublikowaniu pakietu w kanale informacyjnym jego numer wersji jest trwale zarezerwowany. Nawet jeśli go usuniesz, nie można opublikować nowego pakietu z tym samym numerem wersji. Aby rozwiązać ten problem, zaktualizuj wersję pakietu w pliku package.json , a następnie spróbuj ponownie.