다음을 통해 공유


업스트림 소스란?

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

Azure Artifacts 업스트림 원본을 사용하면 개발자가 피드에 게시된 패키지와 NuGet.org 또는 npmjs.com 같은 공용 레지스트리에서 설치된 패키지를 포함하여 다양한 원본의 패키지를 단일 피드에 저장할 있습니다. 업스트림 원본을 사용하도록 설정하면 업스트림 원본에서 설치된 모든 패키지가 피드에 자동으로 저장됩니다.

참고

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

업스트림 원본을 사용하는 이유는 무엇인가요?

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

  • 단순성: 모든 패키지를 단일 피드에 저장하면 NuGet.config, npmrc 또는 settings.xml같은 구성 파일이 간소화됩니다. 구성 파일에 피드가 하나만 있으면 설정 복잡성을 줄이고 오류를 최소화할 수 있습니다.

  • 일관된 빌드: 피드가 정의된 순서로 패키지 요청을 확인하여 환경 전체에서 예측 가능하고 안정적인 빌드를 보장합니다.

  • 패키지 무결성: 피드는 업스트림 원본에서 저장된 패키지에 대한 메타데이터를 유지하므로 해당 신뢰성을 확인하고 복사본이나 잠재적으로 악성 버전이 아닌 원래 버전을 사용하고 있는지 확인할 수 있습니다.

  • 안정성: 업스트림 원본에서 설치된 패키지는 피드에 자동으로 저장됩니다. 이렇게 하면 유지 관리 또는 기타 문제로 인해 업스트림 원본을 일시적으로 사용할 수 없게 되는 경우에도 계속 액세스할 수 있으므로 안심하고 개발 및 빌드를 계속할 수 있습니다.

패키지 소비자를 위한 모범 사례

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

구성 파일에서 단일 피드 사용

피드가 결정적 복원을 제공하려면 구성 파일(예: 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 /> 사용하면 상위 수준 구성 파일에 지정된 다른 모든 패키지 원본이 무시됩니다.

의도적으로 상위 출처를 정렬하세요.

NuGet.org 또는 npmjs.com 같은 공용 레지스트리만 사용하는 경우 업스트림 원본의 순서는 동작에 영향을 주지 않습니다. 피드에 대한 요청은 검색 순서 섹션에 설명된 순서를 따릅니다.

그러나 피드 및 공용 레지스트리의 조합과 같은 여러 원본을 관리하는 경우 각 업스트림 원본은 피드의 구성 설정에 정의된 순서대로 검색됩니다. 이러한 경우 퍼블릭 레지스트리를 업스트림 원본 목록에서 먼저 배치하는 것이 좋습니다.

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

피드 소유자 및 패키지 게시자에 대한 모범 사례

피드를 업스트림 원본으로 쉽게 구성할 수 있도록 하려면 다음 모범 사례를 따르세요.

기본 보기 사용

새로 만든 모든 피드는 기본적으로 @Local 보기를 사용합니다. 이 보기에는 다음이 포함됩니다.

  • 피드에 직접 게시된 패키지입니다.
  • 업스트림 원본에서 저장된 패키지입니다.

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

패키지 그래프 생성

패키지 그래프를 생성하려면 피드의 기본 보기에 연결하고 공유하려는 패키지를 설치하기만 하면 됩니다. 패키지가 기본 보기에 저장되면 패키지를 사용하려는 사용자는 패키지 그래프를 확인하고 원하는 버전을 설치할 수 있습니다. 업스트림 원본의 패키지는 해당 업스트림 원본에 대해 구성된 뷰를 기반으로 표시됩니다. 자세한 내용은 업스트림이 사용 가능한 패키지 집합을 구성하는 방법을 참조 하세요 .

검색 순서

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

Azure Artifacts 업스트림 원본은 다음 순서로 피드 및 업스트림 원본을 검색하여 구조적 검색 순서를 적용하여 이러한 불확실성을 제거합니다.

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

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

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

참고

Azure Artifacts는 Visual Studio에서 NuGet 패키지 탐색기를 사용하여 업스트림 원본에서 패키지 검색을 지원하지 않습니다.

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

피드에서 업스트림 원본을 사용하도록 설정하면 Azure Artifacts는 공동 작업자가 설치한 패키지의 복사본을 해당 업스트림 원본에서 자동으로 저장합니다.

예를 들어 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 피드인 경우 대기 시간은 일반적으로 몇 분 이내입니다.