Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
개발자는 Azure Artifacts 업스트림 원본을 사용하여 게시하는 원본과 외부 피드 또는 NuGet.org, npmjs.com 같은 공용 레지스트리에서 설치한 패키지를 포함하여 다양한 원본의 패키지를 단일 피드에 편리하게 저장할 수 있습니다. 업스트림 원본을 사용하도록 설정하면 업스트림 원본에서 설치된 모든 패키지가 피드에 자동으로 저장됩니다.
참고
업스트림에서 패키지를 저장하려면 피드 및 업스트림 판독기(협력자) 역할 이상이 있어야 합니다. 자세한 내용은 사용 권한 관리를 참조하세요.
업스트림 원본을 사용하는 이유는 무엇인가요?
업스트림 원본을 사용하도록 설정하면 단일 피드 내에서 제품의 종속성을 관리하는 데 몇 가지 이점이 있습니다.
단순성: 모든 패키지를 단일 피드에 저장하면 NuGet.config, npmrc 또는 settings.xml같은 구성 파일이 간소화됩니다. 구성 파일에 피드가 하나만 있으면 오류 발생 가능성을 줄이고 설정을 간소화할 수 있습니다.
일관된 빌드: 피드가 정의된 순서로 패키지 요청을 확인하여 보다 예측 가능하고 안정적인 빌드를 보장합니다.
패키지 무결성: 피드는 업스트림 원본에서 저장된 패키지에 대한 메타데이터를 유지하므로 해당 신뢰성을 확인하고 복사본이나 잠재적으로 악성 버전이 아닌 원래 버전을 사용하고 있는지 확인할 수 있습니다.
안정성: 업스트림 원본에서 설치된 패키지는 피드에 자동으로 저장됩니다. 이렇게 하면 유지 관리 또는 기타 문제로 인해 업스트림 원본을 사용할 수 없는 경우에도 계속 액세스할 수 있으므로 안심하고 개발 및 빌드를 계속할 수 있습니다.
패키지 소비자를 위한 모범 사례
업스트림 원본의 이점을 패키지 소비자로 최대한 활용하려면 다음 모범 사례를 따르세요.
1. 구성 파일에서 단일 피드 사용
피드가 결정적 복원제공하려면 구성 파일(예: nuget.config 또는 npmrc)이 업스트림 원본을 사용하도록 설정된 하나의 피드만 참조하는지 확인합니다.
예제:
registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/ always-auth=true
<packageSources> <clear /> <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" /> </packageSources>
참고
NuGet은 적용할 옵션의 전체 집합을 결정하기 위해 여러 구성 파일을 컴파일합니다.
<clear />
사용하면 상위 수준 구성 파일에 지정된 다른 모든 패키지 원본이 무시됩니다.
2. 업스트림 소스를 의도적으로 배열하세요.
NuGet.org 또는 npmjs.com 같은 공용 레지스트리만 사용하는 경우 업스트림 원본의 순서는 중요하지 않습니다. 피드에 대한 요청은 검색 순서 섹션에 설명된 순서를 따릅니다.
그러나 피드 및 공용 레지스트리의 조합과 같은 여러 원본을 관리하는 경우 각 업스트림 원본은 피드의 구성 설정에 정의된 순서대로 검색됩니다. 이 경우 공용 레지스트리를 업스트림 원본 목록에서 먼저 배치하는 것이 좋습니다.
일부 고유한 시나리오에서는 일부 조직에서 보안 문제를 해결하거나, 기능을 향상시키거나, 패키지를 공용 리포지토리에서 직접 가져오는 대신 내부적으로 다시 빌드해야 하는 특정 내부 요구 사항을 충족하도록 OSS(오픈 소스 소프트웨어) 패키지를 수정합니다. 조직에서 이 방법을 따르는 경우 이러한 사용자 지정된 OSS 패키지가 포함된 업스트림 원본을 다른 공용 레지스트리 앞에 배치합니다. 이렇게 하면 사용자 지정된 버전이 공용 버전 대신 사용됩니다.
피드 소유자 및 패키지 게시자에 대한 모범 사례
피드를 업스트림 원본으로 쉽게 구성할 수 있도록 하려면 다음 모범 사례를 따르세요.
1. 기본 보기 사용
새로 만든 모든 피드의 기본 보기는 @Local
. 여기에는 피드에 게시된 모든 패키지와 업스트림 원본에서 저장된 패키지가 포함됩니다.
새로 릴리스된 패키지 버전의 보기와 같은 다른 보기를 사용하려는 경우 패키지를 @Release
보기로 승격한 다음 대상 소비자가 해당 보기를 사용할 수 있도록 할 수 있습니다. 자세한 내용은 피드 보기 참조하세요.
2. 패키지 그래프 생성
패키지 그래프를 생성하려면 피드의 기본 보기에 연결하고 공유하려는 패키지를 설치하기만 하면 됩니다. 패키지가 기본 보기에 저장되면 패키지를 사용하려는 사용자는 패키지 그래프를 확인하고 원하는 버전을 설치할 수 있습니다. 업스트림 원본의 패키지는 해당 업스트림 원본에 대해 구성된 뷰를 기반으로 표시됩니다. 자세한 내용은 업스트림이 사용 가능한 패키지 집합을 구성하는 방법을 참조 하세요 .
검색 순서
NuGet 및 Maven과 같은 여러 피드를 지원하는 공용 패키지 관리자의 경우 피드를 쿼리하는 순서가 명확하지 않거나 비결정적일 수 있습니다. 예를 들어 NuGet은 구성 파일의 모든 피드에 병렬 쿼리를 보내고 FIFO(선착순) 방식으로 응답을 처리하므로 결과가 일치하지 않습니다.
업스트림 원본은 다음 순서로 피드 및 업스트림 원본을 검색하여 구조화된 검색 순서를 적용하여 이러한 불확실성을 제거합니다.
피드에 직접 게시된 패키지입니다.
업스트림 원본에서 저장된 패키지입니다.
업스트림 원본에서 사용할 수 있는 패키지입니다. 각 업스트림 원본은 피드의 구성에 나열된 순서대로 검색됩니다.
참고
Azure Artifacts는 Visual Studio에서 NuGet 패키지 탐색기를 사용하여 업스트림 원본에서 패키지 검색을 지원하지 않습니다.
업스트림 소스에서 패키지 저장
피드에서 업스트림 원본을 사용하도록 설정하면 Azure Artifacts는 공동 작업자 이상이 설치한 패키지의 복사본을 업스트림에서 자동으로 저장합니다.
예를 들어 npm install express와 같은 명령을 사용하여 업스트림 원본에서 직접 패키지를 설치할 수 있습니다. 또는 패키지가 종속성 확인 프로세스의 일부로 설치될 수 있습니다. 이 경우 express 설치하면 수락하는같은 종속성도 저장됩니다.
업스트림 원본은 소비자와 인프라에 대한 중요한 보호 장치를 제공하여 예기치 않은 중단으로부터 보호합니다. 업스트림 원본에서 가동 중지 시간, 유지 관리 또는 일시적으로 사용할 수 없게 되는 경우 피드에서 필요한 패키지를 검색하고 개발을 계속할 수 있습니다.
참고
사용자 지정 업스트림 원본은 npm 패키지에 대해서만 지원됩니다.
업스트림 소스에서 패키지 재정비
업스트림 원본을 사용하도록 설정하면 업스트림 원본에 이미 있는 패키지 버전을 게시할 수 없습니다. 예를 들어 NuGet.org 업스트림을 활성화하면, 해당 버전이 이미 NuGet.org에 존재하기 때문에 Newtonsoft.Json 10.0.3 패키지를 게시할 수 없습니다.
업스트림 원본 중 하나에 이미 있는 패키지 버전을 게시해야 하는 경우 다음 단계를 수행해야 합니다.
관련 업스트림 원본을 사용하지 않도록 설정합니다.
패키지를 게시합니다.
업스트림 원본을 다시 사용하도록 설정합니다.
이 프로세스를 통해 업스트림 원본의 무결성을 유지하면서 원하는 버전을 게시할 수 있습니다.
참고
패키지 버전은 변경할 수 없습니다. 업스트림 원본을 사용하지 않도록 설정하거나 제거한 경우에도 저장된 패키지는 피드에 남아 있습니다.
업스트림 소스 건강 상태
피드에 실패한 업스트림 원본이 있는 경우 동일한 프로토콜의 패키지에 대한 메타데이터를 더 이상 새로 고칠 수 없습니다. 업스트림 원본의 상태를 확인하려면 다음 단계를 수행합니다.
Azure DevOps 조직에 로그인한 다음 프로젝트로 이동합니다.
아티팩트를 선택한 후 드롭다운 메뉴에서 피드를 선택합니다.
기어 아이콘
을 선택하여 피드 설정으로 이동한 다음 업스트림 원본을 선택합니다.
오류가 발생하면 경고 메시지가 표시됩니다. 실패 상태를 클릭하면 오류의 원인 및 해결 방법에 대한 지침을 비롯한 추가 세부 정보가 제공됩니다.
참고
NuGet.org 같은 퍼블릭 레지스트리의 경우 패키지가 퍼블릭 레지스트리로 푸시되는 시점과 다운로드할 수 있게 되는 시점 사이에 3~6시간이 지연됩니다. 이 지연은 작업 타이밍 및 데이터 전파에 따라 달라집니다. 그러나 업스트림 원본이 Azure Artifacts 피드인 경우 대기 시간은 일반적으로 몇 분 이내입니다.
FAQ
Q: 내 패키지를 볼 수 있더라도 피드의 업스트림 중 하나에서 찾을 수 없는 이유가 무엇인가요?
A: 업스트림 원본의 패키지는 게시 직후 다운스트림 피드에서 사용할 수 있게 됩니다. 그러나 패키지는 피드에 저장된 후에만 판독기에서 볼 수 있습니다. 피드 및 업스트림 판독기(협력자) 이상의 권한이 있는 사용자가 다운스트림 피드에 버전을 설치하면 패키지가 저장됩니다. 업스트림에서 패키지를 복사하여 저장하는 과정이 시작되면, 복사본은 영구적으로 저장되어 다운스트림에서 모든 사용자에게 접근 가능합니다. 웹 UI의 패키지 버전 섹션에 패키지 버전이 표시되는 경우입니다.
Q: 피드 보기란?
A: 뷰를 사용하면 개발자가 아직 개발 중이거나 품질 기준을 충족하지 않은 패키지를 제외하고 테스트 및 유효성이 검사된 패키지 버전의 하위 집합을 선택적으로 공유할 수 있습니다. 자세한 내용은 피드 보기 방법에 대한 정보를 참조하세요.
Q: 업스트림 원본으로 구성하려는 피드를 찾을 수 없나요?
A: 피드 소유자가 보기 권한을 상위 원본으로 공유했는지 확인합니다. 자세한 내용은 다른 조직에서 피드를 업스트림 소스로 추가하는 방법에 대한 와을 참조하세요.
Q: 피드 읽기 권한자 역할을 가진 사용자가 업스트림 원본에서 패키지를 다운로드할 수 있나요?
A: 아니요. Azure Artifacts 피드에서 피드 판독기 역할을 가진 사용자는 피드에 저장된 패키지만 다운로드할 수 있습니다. 패키지는 피드 및 업스트림 판독기(협력자), 피드 게시자(기여자)또는 피드 소유자 업스트림에서 해당 패키지를 설치할 때 피드에 저장됩니다.
Q: 사용자가 업스트림 원본에서 저장된 패키지를 삭제하거나 게시 취소하면 어떻게 되나요?
A: 피드에서 패키지를 다운로드할 수 없게 되고 버전 번호가 영구적으로 예약됩니다. 또한 패키지는 더 이상 업스트림 원본에서 저장되지 않습니다. 이전 및 이후 버전의 패키지는 영향을 받지 않습니다.
Q: 사용자가 업스트림 원본에서 저장된 패키지를 더 이상 사용하지 않는 경우 어떻게 되나요?
A: 사용자가 패키지를 더 이상 사용하지 않는 경우 패키지의 메타데이터에 경고 메시지가 추가됩니다. 이 경고는 피드에서 패키지를 보거나 설치할 때마다 표시됩니다.