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에 저장됩니다.
이제 Fabrikam 피드가 Contoso를 업스트림 원본으로 추가하는 상황을 살펴보겠습니다. Fabrikam에 연결된 사용자는 모든 버전의 위젯, 모든 버전의 Gizmos를 설치할 수 있지만 저장된 버전의 가젯만 설치할 수 있습니다(2.0.0).
Contoso 사용자가 해당 패키지 버전을 Contoso에 저장하지 않았기 때문에 사용자는 가젯 버전 1.0.0 또는 모든 버전의 사물을 설치할 수 없습니다.