Udostępnij za pośrednictwem


npmAuthenticate@0 — uwierzytelnianie npm (dla modułów uruchamiający zadania) w wersji 0

Użyj tego zadania, aby podać poświadczenia npm do pliku .npmrc w repozytorium dla zakresu kompilacji. Umożliwia to npm, a także npm modułów uruchamiających zadania, takich jak gulp i Grunt, do uwierzytelniania za pomocą prywatnych rejestrów.

Składnia

# npm authenticate (for task runners) v0
# Don't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm task runners like gulp and Grunt to authenticate with private registries.
- task: npmAuthenticate@0
  inputs:
    workingFile: # string. Required. .npmrc file to authenticate. 
    #customEndpoint: # string. Credentials for registries outside this organization/collection.

Dane wejściowe

workingFile - pliku npmrc do uwierzytelniania
string. To jest wymagane.

Ścieżka do pliku .npmrc, który określa rejestry, z którymi chcesz pracować. Wybierz plik, a nie folder, taki jak /packages/mypackage.npmrc.


customEndpoint - poświadczenia dla rejestrów spoza tej organizacji/kolekcji
string.

Rozdzielona przecinkami lista połączenia usługi npm nazw rejestrów spoza tej organizacji lub kolekcji. Określony plik .npmrc musi zawierać wpisy rejestru odpowiadające połączeniom usługi. Jeśli potrzebujesz tylko rejestrów 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

Użyj tego zadania, aby podać poświadczenia npm do pliku .npmrc w repozytorium dla zakresu kompilacji. Umożliwia to npm, a także npm modułów uruchamiających zadania, takich jak gulp i Grunt, do uwierzytelniania za pomocą prywatnych rejestrów.

Jak to zadanie działa?

To zadanie wyszukuje określony plik .npmrc dla wpisów rejestru, a następnie dołącza szczegóły uwierzytelniania odnalezionych rejestrów na końcu pliku. W przypadku wszystkich rejestrów w bieżącej organizacji/kolekcji używane są poświadczenia kompilacji. W przypadku rejestrów w innej organizacji lub hostowanych przez inną firmę identyfikatory URI rejestru będą porównywane z identyfikatorami URI połączeń usługi npm określonych przez dane wejściowe customEndpoint, a odpowiednie poświadczenia będą używane. Plik .npmrc zostanie przywrócony do pierwotnego stanu na końcu wykonywania potoku.

Kiedy w potoku należy uruchomić to zadanie?

To zadanie musi zostać uruchomione przed użyciem npmlub modułu uruchamiającego zadania npm, aby zainstalować lub wypchnąć pakiety do uwierzytelnionego repozytorium npm, takiego jak Azure Artifacts. Nie ma żadnych innych wymagań dotyczących zamawiania.

Mam wiele projektów npm. Czy muszę uruchomić to zadanie dla każdego pliku npmrc?

To zadanie spowoduje dodanie szczegółów uwierzytelniania tylko do jednego pliku .npmrc jednocześnie. Jeśli potrzebujesz uwierzytelniania dla wielu plików .npmrc, możesz uruchomić zadanie wiele razy, raz dla każdego pliku .npmrc. Alternatywnie rozważ utworzenie pliku .npmrc, który określa wszystkie rejestry używane przez projekty, uruchamiając npmAuthenticate w tym pliku .npmrc, a następnie ustawiając zmienną środowiskową, aby wyznaczyć ten plik .npmrc jako plik konfiguracji npm dla użytkownika.

- task: npmAuthenticate@0
  inputs:
    workingFile: $(agent.tempdirectory)/.npmrc
- script: echo ##vso[task.setvariable variable=NPM_CONFIG_USERCONFIG]$(agent.tempdirectory)/.npmrc
- script: npm ci
  workingDirectory: project1
- script: npm ci
  workingDirectory: project2

Mój agent znajduje się za internetowym serwerem proxy. Czy npmAuthenticate skonfigurować npm/gulp/Grunt do korzystania z mojego serwera proxy?

Odpowiedź brzmi nie. Chociaż samo zadanie będzie działać za internetowym serwerem proxy agent został skonfigurowany do używania, nie konfiguruje npm ani modułów uruchamiającego zadania npm do korzystania z serwera proxy.

W tym celu można wykonać następujące czynności:

  • Ustaw zmienne środowiskowe http_proxy/https_proxy i opcjonalnie no_proxy na ustawienia serwera proxy. Aby uzyskać szczegółowe informacje, zobacz npm config. Należy pamiętać, że są to często używane zmienne, których mogą również używać inne narzędzia inne niżnpm (np. curl).

  • Dodaj ustawienia serwera proxy do konfiguracji npmręcznie przy użyciu zestawu konfiguracji npmlub ustawiając zmienne środowiskowe prefiksem NPM_CONFIG_.

    ostrożność :
    moduły uruchamiającego zadania npm mogą nie być zgodne ze wszystkimi metodami konfiguracji serwera proxy obsługiwanymi przez npm.

  • Określ serwer proxy z flagą wiersza polecenia podczas wywoływania npm.

    - script: npm ci --https-proxy $(agent.proxyurl)
    

Jeśli serwer proxy wymaga uwierzytelniania, może być konieczne dodanie dodatkowego kroku kompilacji w celu utworzenia uwierzytelnionego identyfikatora URI serwera proxy.

- script: node -e "let u = url.parse(`$(agent.proxyurl)`); u.auth = `$(agent.proxyusername):$(agent.proxypassword)`; console.log(`##vso[task.setvariable variable=proxyAuthUri;issecret=true]` + url.format(u))"
- script: npm publish --https-proxy $(proxyAuthUri)

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.

Przykłady

Przywracanie pakietów npm dla projektu z rejestru w organizacji

Jeśli jedynymi uwierzytelnionymi rejestrami, których używasz, są rejestry usługi Azure Artifacts w organizacji, wystarczy określić ścieżkę do pliku .npmrc zadania npmAuthenticate.

.npmrc

registry=https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/npm/registry/
always-auth=true

npm

- task: npmAuthenticate@0
  inputs:
    workingFile: .npmrc
- script: npm ci
# ...
- script: npm publish

Przywracanie i publikowanie pakietów npm spoza organizacji

Jeśli .npmrc zawiera rejestry usługi Azure Artifacts z innej organizacji lub użyj uwierzytelnionego repozytorium pakietów innej firmy, musisz skonfigurować połączenia usługi npm i określić je w danych wejściowych customEndpoint. Rejestry w organizacji usługi Azure Artifacts również zostaną automatycznie uwierzytelnione.

.npmrc

registry=https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/npm/registry/
@{scope}:registry=https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/
@{otherscope}:registry=https://{thirdPartyRepository}/npm/registry/
always-auth=true

Adres URL rejestru 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 .

npm

- task: npmAuthenticate@0
  inputs:
    workingFile: .npmrc
    customEndpoint: OtherOrganizationNpmConnection, ThirdPartyRepositoryNpmConnection
- script: npm ci
# ...
- script: npm publish -registry https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/

OtherOrganizationNpmConnection i ThirdPartyRepositoryNpmConnection są nazwami połączeń usługi npm , które zostały skonfigurowane i autoryzowane do użycia w potoku, oraz mają adresy URL zgodne z tymi w określonym pliku .npmrc.

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.115.0 lub nowsza
Kategoria zadań Pakiet