Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Azure Artifacts를 사용하면 개발자가 npmjs.com 및 프라이빗 피드와 같은 공용 레지스트리를 포함하여 다양한 원본의 패키지를 관리할 수 있습니다. Azure Artifacts로 인증하려면 npmrc 구성 파일을 구성해야 합니다. 이 파일은 npm에서 사용하는 피드 URL 및 자격 증명을 저장하며 프록시 설정, 기본 패키지 위치 정의 또는 프라이빗 피드에 대한 액세스 구성과 같은 클라이언트 동작을 사용자 지정할 수 있습니다.
npmrc 파일은 일반적으로 사용자의 홈 디렉터리에 있지만 기본 설정을 재정의하기 위해 프로젝트 수준에서 만들 수도 있습니다.
필수 구성 요소
피드에 연결
Azure Artifacts는 두 개의 별도 .npmrc 구성 파일을 사용하는 것이 좋습니다. 하나는 자격 증명을 저장하기 위해 로컬로 저장되어야 하며, 다른 하나는 피드 URL을 정의하기 위해 package.json 함께 프로젝트 디렉터리에 추가되어야 합니다. 이 방법을 사용하면 중요한 정보를 노출하지 않고도 프로젝트 수준 구성을 공유할 수 있습니다.
자격 증명 파일을 설정하려면 .npmrc 파일을 만들거나 업데이트하고 필요한 모든 레지스트리 자격 증명을 포함합니다. 이렇게 하면 npm 클라이언트가 인증을 위해 자격 증명에 쉽게 액세스할 수 있습니다.
다음 단계에서는 프로젝트 수준 구성 파일을 설정하는 방법에 대해 설명합니다. 개발 환경에 해당하는 탭을 선택합니다.
메모
vsts-npm-auth Azure DevOps Server에서 지원되지 않습니다.
Azure DevOps 조직에 로그인한 다음 프로젝트로 이동합니다.
아티팩트를 선택하고, 그런 다음 드롭다운 메뉴에서 피드를 선택합니다.
피드에 연결을 선택한 다음 왼쪽 탐색 창에서 npm을 선택합니다.
프로젝트에 .npmrc를 package.json 동일한 디렉터리에 추가하고 Project 설치 섹션에서 제공된 코드 조각을 파일에 붙여넣습니다.
다음 명령을 실행하여 사용자 수준 .npmrc 파일에 추가된 Azure Artifacts 토큰을 가져옵니다. 매번 실행할 필요가 없습니다. npm은 토큰을 새로 고칠 때 401 권한 없는 오류를 반환합니다.
vsts-npm-auth -config .npmrc
Azure DevOps 조직에 로그인한 다음 프로젝트로 이동합니다.
아티팩트를 선택하고, 그런 다음 드롭다운 메뉴에서 피드를 선택합니다.
피드에 연결을 선택한 다음 왼쪽 탐색 창에서 npm을 선택합니다.
프로젝트의 디렉터리에 .npmrc 파일을 추가합니다.
package.json 파일이 위치한 것과 동일한 디렉터리여야 합니다.
프로젝트 설정 섹션에 제공된 코드 조각을 .npmrc 파일에 붙여넣습니다. 파일은 다음과 유사하게 표시됩니다.
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
자격 증명 설정
다음 코드 조각을 복사하여 사용자 수준 npmrc 파일에 붙여넣습니다.
조직 내 피드
; 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
개인 액세스 토큰을(를) 생성하고, 읽기 및 쓰기를 위한 패키징 범위를 설정합니다.
명령 프롬프트 창에서 다음 명령을 실행합니다. 메시지가 표시되면 PAT(개인용 액세스 토큰)를 붙여넣고 Enter 키를 누릅니다. 스크립트는 BASE64로 인코딩된 버전의 PAT를 반환하고 다음 단계에서 사용할 값을 복사합니다.
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
메모
2024년 7월 현재 Azure DevOps PAT(개인용 액세스 토큰)는 82자입니다. 일부 도구는 토큰을 Base64로 인코딩할 때 자동 줄 바꿈을 삽입할 수 있습니다. 이를 방지하려면 -w0 명령과 함께 플래그를 사용하여 출력이 한 줄로 유지되도록 합니다.
이 자습서에서는 기본적으로 한 줄 Base64 문자열을 생성하는 Node의 Buffer 메서드를 사용합니다.
Linux 또는 macOS를 사용하는 경우 터미널에서 다음 명령을 실행하여 PAT(개인 액세스 토큰)를 Base64로 인코딩된 문자열로 변환할 수 있습니다. 다음 단계에서 사용할 결과 값을 복사합니다.
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64 -w0
사용자 수준 npmrc 파일의 자리 표시자 [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]를 이전 단계에서 생성한 Base64로 인코딩된 개인 액세스 토큰으로 바꿉니다.
Azure DevOps 컬렉션에 로그인한 다음 프로젝트로 이동합니다.
아티팩트을 선택하고 드롭다운 메뉴에서 피드를 선택한 다음 피드에 연결을 선택합니다.
왼쪽에서 npm 을 선택한 다음 프로젝트 설정 섹션의 단계에 따라 npmrc 파일을 구성하고 피드로 인증합니다.
Azure DevOps 컬렉션에 로그인한 다음 프로젝트로 이동합니다.
아티팩트를 선택하고, 그런 다음 드롭다운 메뉴에서 피드를 선택합니다.
피드에 연결을 선택한 다음 왼쪽 탐색 창에서 npm을 선택합니다.
프로젝트의 디렉터리에 .npmrc 파일을 package.json 파일과 동일한 디렉터리에 추가하고 프로젝트 설정 섹션에 제공된 코드 조각을 npmrc 파일에 붙여넣습니다. 파일은 다음과 유사하게 표시됩니다.
registry=http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
자격 증명 설정
다음 코드 조각을 복사하여 사용자 수준 .npmrc 파일에 붙여넣습니다.
컬렉션 한정 피드:
; 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
개인 액세스 토큰을(를) 생성하고, 읽기 및 쓰기를 위한 패키징 범위를 설정합니다.
명령 프롬프트 창에서 다음 명령을 실행합니다. 메시지가 표시되면 개인용 액세스 토큰을 붙여넣고 Enter 키를 누릅니다. 스크립트는 BASE64로 인코딩된 버전의 PAT를 반환하고 다음 단계에서 사용할 값을 복사합니다.
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
메모
2024년 7월 현재 Azure DevOps PAT(개인용 액세스 토큰)는 82자입니다. 일부 도구는 토큰을 Base64로 인코딩할 때 자동 줄 바꿈을 삽입할 수 있습니다. 이를 방지하려면 -w0 명령과 함께 플래그를 사용하여 출력이 한 줄로 유지되도록 합니다.
이 자습서에서는 기본적으로 한 줄 Base64 문자열을 생성하는 Node의 Buffer 메서드를 사용합니다.
사용자 수준 .npmrc 파일의 자리 표시자 [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]를 이전 단계에서 생성한 Base64로 인코딩된 개인 액세스 토큰으로 바꿉니다.
팁
.npmrc 파일에서 여러 레지스트리를 사용하는 것은 범위 및 업스트림 원본에서 지원됩니다.
관련 콘텐츠