Azure Artifacts 업스트림 원본

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

업스트림 원본을 사용하면 다양한 원본의 패키지를 단일 피드에 편리하게 저장할 수 있습니다. 여기에는 게시하는 패키지와 NuGet.org, npmjs.com, Maven Central 및 PyPI와 같은 외부 피드 및 공용 레지스트리에서 사용하는 패키지가 포함됩니다. 업스트림 원본, 이러한 업스트림 원본에서 설치된 모든 패키지를 사용하도록 설정하면 복사본이 피드에 자동으로 저장됩니다.

참고 항목

업스트림 패키지를 저장하려면 피드 및 업스트림 판독기(협력자) 역할 이상이 있어야 합니다. 자세한 내용은 사용 권한을 참조하세요.

장점

업스트림 원본을 사용하도록 설정하면 단일 피드 내에서 제품의 종속성을 관리하는 데 몇 가지 이점이 있습니다.

  • 단순성: 모든 패키지를 단일 피드에 게시하면 NuGet.config, npmrc 또는 settings.xml 같은 구성 파일이 간소화됩니다. 구성 파일에 피드가 하나만 있으면 오류 및 버그가 발생할 가능성을 줄여 설정을 간소화할 수 있습니다.

  • 결정성: 피드가 패키지 요청을 순서대로 확인하여 코드를 다시 빌드할 때 일관성을 높입니다.

  • 출처: 피드는 업스트림 원본에서 저장한 패키지에 대한 정보를 유지합니다. 이렇게 하면 복사본이나 악의적인 버전이 아닌 원본 패키지를 사용하고 있는지 확인할 수 있습니다.

  • 안심: 업스트림 원본에서 설치된 모든 패키지는 피드에 자동으로 저장됩니다. 즉, 업스트림 원본이 비활성화, 제거 또는 기본 진행되더라도 피드에 해당 패키지의 복사본이 있으므로 자신있게 개발하고 빌드할 수 있습니다.

모범 사례 - 패키지 소비자

패키지 소비자로서 업스트림 소스의 이점을 최대한 활용하려면 다음 모범 사례를 따르세요.

구성 파일에서 단일 피드를 사용합니다.

피드가 결정적 복원제공하려면 nuget.config 또는 .npmrc와 같은 구성 파일이 업스트림 원본을 사용하도록 설정된 피드를 하나만 참조하는지 확인합니다. 아래 예제를 참조하세요.

<packageSources>
  <clear />
  <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" />
</packageSources>

참고 항목

NuGet은 적용할 옵션의 전체 집합을 결정하기 위해 여러 구성 파일을 컴파일합니다. 이 기능을 사용하면 <clear />상위 수준 구성 파일에 지정된 다른 모든 패키지 원본을 효과적으로 무시할 수 있습니다.

registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/
always-auth=true

의도적으로 업스트림 원본을 주문합니다.

nuget.org 또는 npmjs.com 같은 공용 레지스트리만 사용하는 경우 업스트림 원본의 순서는 관련이 없습니다. 피드에 대한 요청은 검색 순서 섹션에 자세히 설명된 순서를 따릅니다.

그러나 피드와 공용 레지스트리의 조합을 포함할 수 있는 여러 원본을 관리하는 경우 각 업스트림 원본은 피드의 구성 설정에 나열된 순서대로 검색됩니다. 이 경우 공용 레지스트리를 업스트림 원본 목록에서 먼저 배치하는 것이 좋습니다.

일부 고유한 시나리오에서 특정 조직은 OSS(오픈 소스 소프트웨어) 패키지를 사용자 지정하도록 선택합니다. 여기에는 보안 문제를 해결하거나, 기능을 향상하거나, 패키지를 퍼블릭 리포지토리 직접 가져오는 대신 내부적으로 다시 빌드해야 하는 특정 요구 사항을 충족하는 작업이 포함될 수 있습니다. 조직에서 이 방법을 따르는 경우 이러한 수정된 OSS 패키지가 포함된 업스트림 원본을 공용 패키지 관리자보다 먼저 배치하는 것이 좋습니다. 이렇게 정렬하면 조직의 사용자 지정된 버전을 사용할 수 있습니다.

제안된 기본 보기를 사용합니다.

원격 피드를 업스트림 원본으로 추가하는 경우 해당 피드의 보기를 선택해야 합니다. 이렇게 하면 업스트림 원본에서 사용 가능한 패키지 집합을 생성할 수 있습니다. 자세한 내용은 업스트림에서 사용 가능한 패키지 집합을 구성하는 방법을 참조하세요.

모범 사례: 피드 소유자/패키지 게시자

피드가 업스트림 원본으로 쉽게 구성되도록 하려면 다음 모범 사례를 적용하는 것이 좋습니다.

기본 보기를 사용합니다.

새로 만든 모든 피드의 기본 보기는 @Local 피드에 게시되거나 업스트림 원본에서 저장된 모든 패키지를 포함하는 뷰입니다.

새로 릴리스된 패키지 버전의 보기와 같은 다른 보기를 사용하려는 경우 패키지를 보기로 @Release 승격한 다음 패키지 소비자가 해당 보기를 사용할 수 있도록 할 수 있습니다.

패키지 그래프를 생성합니다.

패키지 그래프를 생성하려면 피드의 기본 보기에 연결하고 공유하려는 패키지를 설치하기만 하면 됩니다. 패키지를 기본 보기에 저장하면 패키지를 사용하려는 사용자는 패키지 그래프를 확인하고 원하는 패키지를 설치할 수 있습니다. 업스트림 원본의 패키지는 해당 업스트림 원본에 대해 구성된 뷰에 따라 표시됩니다.

검색 순서

NuGet 및 Maven과 같은 여러 피드를 지원하는 퍼블릭 패키지 관리자의 경우 피드를 쿼리하는 순서가 명확하지 않거나 비결정적일 수 있습니다. 예를 들어 NuGet에서 병렬 쿼리는 구성 파일의 모든 피드로 전송되고 응답은 FIFO(선결제) 방식으로 처리됩니다.

업스트림 원본은 피드 및 해당 업스트림 원본을 다음 순서로 검색하여 이러한 비결정적 동작을 해결합니다.

  1. 피드에 직접 게시된 패키지입니다.

  2. 업스트림 원본에서 저장된 패키지입니다.

  3. 업스트림 원본에서 사용할 수 있는 패키지입니다. 각 업스트림 원본은 피드의 구성에 나열된 순서대로 검색됩니다.

빠른 조회 기능을 최대한 활용하려면 구성 파일에 피드를 하나만 포함하는 것이 좋습니다.

참고 항목

NuGet 패키지 탐색기를 사용하여 업스트림 원본에서 패키지를 검색하는 것은 지원되지 않습니다.

업스트림 소스에서 패키지 저장

피드에 업스트림 원본을 사용하도록 설정하고 업스트림 원본에서 패키지를 설치하면 해당 패키지의 자동 복사본이 피드에 저장됩니다. 이 방법은 다운로드 성능을 향상시키고 네트워크 대역폭을 절약합니다.

예를 들어 npm install express와 같은 명령을 사용하여 업스트림 원본에서 직접 패키지를 설치할 수 있습니다. 또는 패키지가 종속성 확인 프로세스의 일부로 설치될 수 있습니다. 후자의 시나리오에서 express를 설치하면 accepts와 같은 종속성도 저장됩니다.

참고 항목

사용자 지정 업스트림 원본은 npm 패키지에 대해서만 지원됩니다.

업스트림 원본에서 패키지 재정의

업스트림 원본을 사용하도록 설정하는 경우 업스트림 원본에 이미 있는 패키지 버전을 게시할 수 없다는 점에 유의해야 합니다. 예를 들어 NuGet.org 업스트림 사용하도록 설정하면 정확한 버전이 NuGet.org 이미 있으므로 Newtonsoft.Json 10.0.3 패키지를 게시할 수 없습니다.

업스트림 원본 중 하나에 이미 있는 패키지 버전을 게시해야 하는 경우 다음 단계를 수행해야 합니다.

  1. 관련 업스트림 원본을 사용하지 않도록 설정합니다.
  2. 패키지를 게시합니다.
  3. 업스트림 원본을 다시 사용하도록 설정합니다.

참고 항목

패키지 버전은 변경할 수 없습니다. 저장된 패키지는 업스트림 원본을 사용하지 않도록 설정하거나 제거한 경우에도 피드에 다시 기본.

업스트림 원본 상태 상태

피드에 실패한 업스트림 원본이 있는 경우 동일한 프로토콜의 패키지에 대한 메타데이터를 더 이상 새로 고칠 수 없습니다. 업스트림 원본의 상태 상태 검사 다음 단계를 수행합니다.

  1. Azure DevOps 조직에 로그인한 다음 프로젝트로 이동합니다.

  2. 아티팩트 및 드롭다운 메뉴에서 피드를 선택합니다.

  3. 기어 아이콘 기어 아이콘 을 선택하여 피드 설정으로 이동한 다음 업스트림 원본을 선택합니다.

    상태 마지막으로 동기화된 업스트림 원본을 보여 주는 스크린샷

  4. 오류가 발생하면 경고 메시지가 표시됩니다. 실패한 상태 클릭하면 오류의 원인 및 해결 방법에 대한 지침을 비롯한 추가 세부 정보가 표시됩니다.

    동기화 실패에 대한 세부 정보를 표시하는 스크린샷

참고 항목

NuGet.org 같은 공용 레지스트리의 경우 패키지가 퍼블릭 레지스트리에 푸시되는 시간과 다운로드할 수 있게 되는 시간 사이에 3~6시간이 지연됩니다. 이 지연은 작업 타이밍 및 데이터 전파에 따라 달라집니다. 그러나 업스트림 원본이 Azure Artifacts 피드인 경우 대기 시간은 일반적으로 몇 분 이내입니다.

오프라인 업스트림 원본

업스트림 원본은 예기치 않은 중단으로부터 보호하여 소비자와 인프라에 중요한 보호 장치 역할을 합니다. 업스트림 원본에서 패키지를 설치하면 해당 패키지의 복사본이 피드에 저장됩니다. 업스트림 원본에서 가동 중지 시간이 발생하거나, 기본 테넌트 또는 일시적으로 사용할 수 없게 되는 경우 피드에서 필요한 패키지를 검색하고 개발을 계속할 수 있습니다.

FAQ

Q: 피드의 업스트림 중 하나에서 볼 수 있더라도 패키지를 찾을 수 없나요?

A: 업스트림 원본의 패키지는 게시되는 즉시 다운스트림에서 사용할 수 있게 됩니다. 그러나 패키지는 수집된 후에만 피드의 UI에 표시됩니다. 피드 및 업스트림 판독기(협력자) 이상이 업스트림 패키지 버전을 설치하면 수집이 트리거됩니다.

Q: 피드 보기란?

A: 뷰를 사용하면 개발자가 아직 개발 중이거나 품질 기준을 충족하지 않은 패키지를 제외하고 테스트 및 유효성이 검사된 패키지 버전의 하위 집합을 선택적으로 공유할 수 있습니다. 자세한 내용은 피드 보기란을 참조 하세요.

Q: 업스트림 원본으로 구성하려는 피드를 찾을 수 없나요?

A: 피드의 소유자가 보기를 업스트림 원본으로 공유하고 있는지 확인합니다.

Q: 피드 읽기 권한자 역할을 가진 사용자가 업스트림 원본에서 패키지를 다운로드할 수 있나요?

A: 아니요. Azure Artifacts 피드에서 피드 판독기 역할을 가진 사용자는 피드에 저장된 패키지만 다운로드할 수 있습니다. 피드 및 업스트림 판독기(협력자), 피드 게시자(기여자) 또는 피드 소유자가 업스트림 해당 패키지를 설치하면 패키지가 피드에 저장됩니다.

Q: 사용자가 업스트림 원본에서 저장된 패키지를 삭제하거나 게시 취소하면 어떻게 되나요?

A: 피드에서 패키지를 다운로드할 수 없게 되고 버전 번호가 영구적으로 예약됩니다. 또한 패키지는 더 이상 업스트림 원본에서 저장되지 않습니다. 이전 및 이후 버전의 패키지는 영향을 받지 기본 다시 설치됩니다.

Q: 사용자가 업스트림 원본에서 저장된 패키지를 더 이상 사용하지 않는 경우 어떻게 되나요?

A: 사용자가 패키지를 더 이상 사용하지 않는 경우 패키지의 메타데이터에 경고 메시지가 추가됩니다. 이 메시지는 피드에서 패키지를 보거나 설치할 때마다 표시됩니다.