다음을 통해 공유


npmAuthenticate@0 - npm 인증(작업 실행기용) v0 작업

이 작업을 사용하여 빌드 범위에 대한 리포지토리의 파일에 자격 증명 .npmrc 을 제공합니다npm. 이렇게 하면 npm, 및 npm gulp 및 Grunt와 같은 작업 실행기가 프라이빗 레지스트리로 인증할 수 있습니다.

Syntax

# 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.
# 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. .npmrc file to authenticate. 
    #customEndpoint: # string. Credentials for registries outside this account/collection.

입력

workingFile - 인증할 .npmrc 파일
string. 필수 요소.

작업하려는 레지스트리를 .npmrc 지정하는 파일의 경로입니다. 와 같은 /packages/mypackage.npmrc폴더가 아닌 파일을 선택합니다.


workingFile - 인증할 .npmrc 파일
string.

작업하려는 레지스트리를 .npmrc 지정하는 파일의 경로입니다. 와 같은 /packages/mypackage.npmrc폴더가 아닌 파일을 선택합니다.


customEndpoint - 이 조직/컬렉션 외부의 레지스트리에 대한 자격 증명
string.

이 조직 또는 컬렉션 외부의 레지스트리에 대한 npm 서비스 연결 이름의 쉼표로 구분된 목록입니다. 지정된 .npmrc 파일에는 서비스 연결에 해당하는 레지스트리 항목이 포함되어야 합니다. 이 조직 또는 컬렉션에 레지스트리만 필요한 경우 이 항목을 비워 둡니다. 빌드의 자격 증명이 자동으로 사용됩니다.


customEndpoint - 이 계정/컬렉션 외부의 레지스트리에 대한 자격 증명
string.

이 조직 또는 컬렉션 외부의 레지스트리에 대한 npm 서비스 연결 이름의 쉼표로 구분된 목록입니다. 지정된 .npmrc 파일에는 서비스 연결에 해당하는 레지스트리 항목이 포함되어야 합니다. 이 조직 또는 컬렉션에 레지스트리만 필요한 경우 이 항목을 비워 둡니다. 빌드의 자격 증명이 자동으로 사용됩니다.


작업 제어 옵션

모든 작업에는 작업 입력 외에 제어 옵션이 있습니다. 자세한 내용은 컨트롤 옵션 및 일반적인 작업 속성을 참조하세요.

출력 변수

없음

설명

이 작업을 사용하여 빌드 범위에 대한 리포지토리의 파일에 자격 증명 .npmrc 을 제공합니다npm. 이렇게 하면 npm, 및 npm gulp 및 Grunt와 같은 작업 실행기가 프라이빗 레지스트리로 인증할 수 있습니다.

이 작업은 어떻게 작동하나요?

이 작업은 지정된 파일에서 레지스트리 항목을 검색한 .npmrc 다음 검색된 레지스트리에 대한 인증 세부 정보를 파일 끝에 추가합니다. 현재 조직/컬렉션의 모든 레지스트리에 대해 빌드의 자격 증명이 사용됩니다. 다른 조직의 레지스트리 또는 타사에서 호스트하는 레지스트리의 경우 레지스트리 URI는 입력에 지정된 customEndpointnpm 서비스 연결의 URI와 비교되며 해당 자격 증명이 사용됩니다. .npmrc 파이프라인 실행이 끝나면 파일이 원래 상태로 되돌아갑니다.

파이프라인에서 이 작업을 실행해야 하는 경우는 언제인가요?

Azure Artifacts와 같은 인증된 npm 리포지토리에 패키지를 설치하거나 푸시하려면 , 또는 npm 작업 실행기를 사용하기 npm전에 이 작업을 실행해야 합니다. 다른 주문 요구 사항은 없습니다.

여러 npm 프로젝트가 있습니다. 각 .npmrc 파일에 대해 이 작업을 실행해야 하나요?

이 작업은 한 번에 하나의 .npmrc 파일에만 인증 세부 정보를 추가합니다. 여러 .npmrc 파일에 대한 인증이 필요한 경우 각 .npmrc 파일에 대해 한 번씩 작업을 여러 번 실행할 수 있습니다. 또는 프로젝트에서 사용하는 모든 레지스트리를 지정하는 파일을 만들고.npmrc, 이 .npmrc 파일에서 실행 npmAuthenticate 한 다음, 환경 변수를 설정하여 이 .npmrc 파일을 사용자별 npm 구성 파일로 지정하는 것이 좋습니다.

- 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

내 에이전트가 웹 프록시 뒤에 있습니다. 내 프록시를 사용하도록 설정 npm/gulp/Grunt 합니까npmAuthenticate?

그렇지 않을 것입니다. 이 작업 자체는 에이전트가 사용하도록 구성된 웹 프록시 뒤에서 작동하지만 프록시를 사용하도록 구성하거나 npm 작업 실행기를 구성 npm 하지는 않습니다.

이렇게 하려면 다음 중 하나를 수행할 수 있습니다.

  • 환경 변수를 http_proxy/https_proxy 설정하고 필요에 따라 no_proxy 프록시 설정으로 설정합니다. 자세한 내용은 npm 구성 을 참조하세요. 이러한 변수는 일반적으로 다른 비 도구npm (예: curl)도 사용할 수 있는 변수입니다.

  • npm 구성 집합을 사용하여 수동으로 또는 접두사로 접두NPM_CONFIG_사로 지정된 환경 변수를 설정하여 npm 구성에 프록시 설정을 추가합니다.

    주의:
    npm 작업 실행기는 에서 지원하는 npm프록시 구성의 모든 메서드와 호환되지 않을 수 있습니다.

  • 를 호출 npm할 때 명령줄 플래그를 사용하여 프록시를 지정합니다.

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

프록시에 인증이 필요한 경우 인증된 프록시 URI를 생성하기 위해 추가 빌드 단계를 추가해야 할 수 있습니다.

- 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)

내 파이프라인이 다른 프로젝트의 피드에 액세스해야 합니다.

파이프라인이 피드를 호스트하는 프로젝트와 다른 프로젝트에서 실행되는 경우 빌드 서비스에 대한 읽기/쓰기 액세스 권한을 부여하도록 다른 프로젝트를 설정해야 합니다. 자세한 내용은 Azure Pipelines의 패키지 권한을 참조하세요.

예제

조직 내의 레지스트리에서 프로젝트에 대한 패키지 복원 npm

사용하는 인증된 레지스트리만 조직의 Azure Artifacts 레지스트리인 경우 작업에 대한 파일 npmAuthenticate 경로를 .npmrc 지정하기만 하면 됩니다.

.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

조직 외부에서 패키지 복원 및 게시 npm

.npmrc 다른 조직의 Azure Artifacts 레지스트리를 포함하거나 타사 인증 패키지 리포지토리를 사용하는 경우 npm 서비스 연결을 설정하고 입력에 customEndpoint 지정해야 합니다. Azure Artifacts 조직 내의 레지스트리도 자동으로 인증됩니다.

.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

Azure Artifacts 피드를 가리키는 레지스트리 URL은 프로젝트를 포함하거나 포함하지 않을 수 있습니다. 프로젝트 범위 피드의 URL에는 프로젝트가 포함되어야 하며 조직 범위 피드의 URL에는 프로젝트가 포함되어서는 안됩니다. 프로젝트 범위 피드에 대해 자세히 알아봅니다.

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/

OtherOrganizationNpmConnectionThirdPartyRepositoryNpmConnection 는 파이프라인에서 사용하도록 구성되고 권한이 부여되었으며 지정된 .npmrc 파일의 URL과 일치하는 URL이 있는 npm 서비스 연결의 이름입니다.

요구 사항

요구 사항 Description
파이프라인 유형 YAML, 클래식 빌드, 클래식 릴리스
실행 중 에이전트, DeploymentGroup
요청 없음
Capabilities 이 작업은 작업의 후속 작업에 대한 요구 사항을 충족하지 않습니다.
명령 제한 사항 모두
설정 가능한 변수 모두
에이전트 버전 2.115.0 이상
작업 범주 패키지