Azure Artifacts의 패키지 그래프

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

패키지를 릴리스할 때는 업스트림 원본에서 패키지를 사용하여 해당 패키지의 모든 종속성을 피드에서 사용할 수 있도록 하는 것이 중요합니다. 업스트림 원본에서 패키지를 사용하면 복사본이 피드에 저장됩니다. 이렇게 하면 업스트림 원본에 액세스할 수 없게 되더라도 사용자와 피드 소비자 모두에게 복사본을 계속 사용할 수 있습니다.

업스트림 사용 가능한 패키지 집합을 구성하는 방법

Azure Artifacts 피드에 다른 피드가 업스트림 있을 수 있으므로 업스트림 원본의 주기를 만들 가능성이 있습니다. 여기서 피드 A 업스트림 B에게 공급하고, C를 피드하도록 업스트림, 결국에는 C 업스트림 피드 A에 다시 공급합니다.. 이러한 주기가 제대로 관리되지 않으면 패키지 요청과 관련된 문제가 발생할 수 있으며, 사용자가 피드 A에서 패키지를 요청한 다음B의 요청, C의 B 요청, 마지막으로 C가 A다시 요청하여 루프를 형성하는 무한 루프를 만들 수 있습니다.

업스트림 원본은 이러한 상황을 방지하도록 설계되었습니다. 피드가 업스트림 원본에서 패키지를 조회하면 해당 업스트림 원본에 대해 구성된 보기에서 패키지를 받습니다. 즉, 쿼리 피드 A는 보기가 읽기 전용이므로 C(A - B ->> C)에 대한 전이적 쿼리를 트리거하지 않습니다. 따라서 피드 A는 사용자가 이전에 B에 저장했지만 C에서 사용할 수 있는 패키지의 전체 집합은 아닌 C의 모든 패키지에 액세스할 수 있습니다.

이렇게 하면 로컬 패키지가 완전한 종속성 그래프 나타내도록 피드 B에 책임이 있습니다. 이렇게 하면 다른 피드에서 업스트림 원본을 통해 B의 패키지를 사용하는 사용자는 문제가 발생하지 않고 그래프를 성공적으로 해결하고 원하는 B 패키지를 설치할 수 있습니다.

예: 사용 가능한 패키지 집합 생성

Fabrikam, Contoso 및 AdventureWorks의 세 가지 피드를 살펴보겠습니다. 이 그림에서는 업스트림 원본을 소개할 때 Fabrikam 피드에 사용 가능한 패키지를 살펴봅니다.

처음에 Fabrikam에는 업스트림 원본이 없으므로 Fabrikam에 연결된 사용자가 위젯 패키지의 버전 1.0.0 및 2.0.0만 설치할 수 있습니다. 마찬가지로 Contoso에는 업스트림 원본이 없으므로 Contoso에 연결된 사용자가 Gizmos 패키지의 버전 1.0.0 및 3.0.0만 설치하도록 제한합니다. 연결된 사용자가 가젯 패키지의 버전 1.0.0 및 2.0.0 또는 Things 패키지 버전 1.0.0만 설치할 수 있는 AdventureWorks 피드에도 동일하게 적용됩니다.

업스트림 소스가 없는 세 가지 다른 피드를 보여 주는 그림입니다.

이제 Contoso가 AdventureWorks를 업스트림 원본으로 추가하는 시나리오를 살펴보겠습니다. 사용자가 Contoso에 연결되면 더 광범위한 패키지에 액세스할 수 있습니다. 모든 버전의 Gizmos, 가젯 또는 사물을 설치할 수 있습니다. 예를 들어 사용자가 Gadgets@2.0.0을 설치하는 경우 이 특정 패키지 버전은 AdventureWorks에 대한 링크와 함께 Contoso에 저장됩니다.

AdventureWorks를 업스트림 원본으로 추가하는 Contoso의 그림입니다.

이제 Fabrikam 피드가 Contoso를 업스트림 원본으로 추가하는 상황을 살펴보겠습니다. Fabrikam에 연결된 사용자는 모든 버전의 위젯, 모든 버전의 Gizmos를 설치할 수 있지만 저장된 버전의 가젯만 설치할 수 있습니다(2.0.0).

Contoso를 업스트림 원본으로 추가하는 Fabrikam의 그림입니다.

Contoso 사용자가 해당 패키지 버전을 Contoso에 저장하지 않았기 때문에 사용자는 가젯 버전 1.0.0 또는 모든 버전의 사물을 설치할 수 없습니다.

Fabrikam 사용자가 사용할 수 있는 패키지의 그림입니다.