Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Artifacts를 사용하면 개발자가 피드 및 공용 레지스트리(예: npmjs.com)에서 다양한 패키지 형식을 게시하고 설치할 수 있습니다. Azure Artifacts를 사용하여 인증하려면 npm 구성 파일을 구성해야 합니다.
이 파일에는 npm에서 사용하는 피드 URL 및 자격 증명이 포함되어 있으며 프록시 설정, 기본 패키지 위치 정의 또는 프라이빗 패키지 피드 구성과 같은 npm 클라이언트 동작을 사용자 지정하는 옵션을 제공합니다. .npmrc 파일은 일반적으로 사용자의 홈 디렉터리에 있지만 기본 설정을 재정의하기 위해 프로젝트 수준에서 만들 수도 있습니다. .npmrc 파일을 수정하여 사용자는 특정 요구 사항을 충족하도록 npm 환경을 개인 설정할 수 있습니다.
필수 조건
Azure DevOps 조직 및 프로젝트. 조직 또는 프로젝트를 아직 만들지 않은 경우 만듭니다.
; 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
프로젝트 범위 피드:
; 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
; 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
프로젝트 범위 피드:
; 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
; 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
프로젝트 범위 피드:
; 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
사용자 .npmrc 파일의 두 [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] 값을 모두 3단계의 개인용 액세스 토큰으로 대체합니다.
컬렉션을 선택한 다음 프로젝트로 이동합니다.
아티팩트 및 피드할 커넥트 선택합니다.
새 창이 표시됩니다. 왼쪽 탐색 창에서 npm을 선택합니다.
지침에 따라 프로젝트 및 사용자 .npmrc 파일을 구성합니다.
팁
.npmrc 파일에서 여러 레지스트리를 사용하는 것은 범위 및 업스트림 원본에서 지원됩니다.
파이프라인 인증
파이프라인을 사용하여 인증하려면 Azure Artifacts에서 npm 인증 작업을 사용하는 것이 좋습니다.
gulp 또는 Grunt와 같은 작업 실행기를 사용하는 경우 파이프라인 시작 시 npm 인증 작업을 포함하는 것이 중요합니다. 이 작업을 수행하면 자격 증명이 프로젝트의 .npmrc 파일에 삽입되고 파이프라인 실행 내내 유지되어 후속 단계에서 구성 파일의 자격 증명에 액세스할 수 있습니다.
- 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
참고 항목
파이프라인이 피드에 액세스하려면 피드 설정에서 빌드 서비스 역할이 피드 및 업스트림 판독기(참가자)로 설정되어 있는지 확인합니다.
참고 항목
조직에서 방화벽 또는 프록시 서버를 사용하는 경우 적절한 수행기본 URL을 허용해야 합니다. 자세한 내용은 허용된 IP 주소 및 할기본 URL을 참조하세요.
문제 해결
vsts-npm-auth가 인식되지 않음
프로젝트 실행 중에 다음 오류가 발생하는 경우:
Cmd: 'vsts-npm-auth' is not recognized as an internal or external command, operable program or batch file.
PowerShell: vsts-npm-auth : The term 'vsts-npm-auth' is not recognized as the name of a cmdlet, function, script file, or operable program.
그런 다음 npm 모듈 폴더가 경로에 추가되지 않았을 수 있습니다. 이 문제를 해결하려면 Node.js 설정을 다시 실행하고 옵션을 선택 Add to PATH 해야 합니다.
또는 명령 프롬프트 또는 $env:APPDATA\npm PowerShell에서 PATH 변수를 수정하여 경로에 npm 모듈 폴더를 %APPDATA%\npm 추가할 수 있습니다.
인증할 수 없음
E401 오류가 발생한 경우: code E401 npm ERR! Unable to authenticate. -F 플래그를 vsts-npm-auth 사용하여 명령을 실행하여 다시 인증합니다.